summaryrefslogtreecommitdiff
path: root/src/os/osContInit.c
diff options
context:
space:
mode:
authorcoco875 <59367621+coco875@users.noreply.github.com>2024-09-17 17:32:50 +0200
committerGitHub <noreply@github.com>2024-09-17 09:32:50 -0600
commit203090e5913f79df01ee273e40dea03b294f061e (patch)
tree2ee78c50742b20238c07610b8ba9f7f93c3a80e1 /src/os/osContInit.c
parentd36d7dcd604d0f85b6b547a85e9b7a4fe3e59b5c (diff)
update with the decomp (#97)
* Update menus.c (#634) * Update common_data.yml (#635) * Renames for screenId and other changes (#636) * screenId renames * Rename surface map to collision mesh (#637) * Rename some stack vars (#638) * Fix syntax error (#639) * Rename some stack vars * Update collision.c * Collision Documentation (#640) * Collision related renames * update doxygen (#649) * change bool (#644) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * Update (#642) * Delete trig_tables_bss.c (#650) * fix typo audio (#656) * fix typo src actor (#657) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix typo include (#658) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix course (#659) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix typo debug (#660) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix typo data (#661) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * replace number with const (#665) * fix typo buffers (#655) * fix typo buffers * tweak ld file * rename to sMemoryPool * add a warning --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix typo src (#654) * fix typo src * fix non matcing * Update code_80091750.c --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix typo racing (#653) * fix typo racing * get it match * replace G_LINE3D to G_QUAD --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix typo src (#652) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix ending typo (#651) * Action more info when it doesn't match and fix first diff (#662) * Update linux-compile.yml * fix first-diff * Update first-diff.py --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * document texture of kart (#663) * document texture of kart * change screenPlayerId to screenId * some documentation around object * Revert "some documentation around object" This reverts commit cbb39078e036bf2a417bed67359e910213acab28. * more rename --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * Make evaluate_collision_players_palm_tree better (#667) This matches just the same as before, but using those two casts instead of shifts seems more likely to be accurate to the original source code Signed-off-by: Gabriel Ravier <gabravier@gmail.com> * add fedora instruciton (#666) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * start documenting animation (#668) * start documenting animation * Update course_data.c * change comment * update libultra asm (#648) * update libultra asm * fix gcc __osThreadTail --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * Document Vehicles (#641) * start doc collision * fix merge * finish rename fonction related to vehicle * document around waypoint of vehicle * make some modification * make some change and rename one * copy_ to oldPos * doc smoke ferry and train * some rename * fix some renaming * precise index * rename a funciton * simplify waypoint_vehicles * change some name * change some name * rename move_to_point_direction * fix some conflict * Update code_80005FD0.c * Update code_80005FD0.h --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * Label a save info loop (#645) * save info * more gcc progress * fix a value and do a rename (#669) * update clang and add action (#664) * update clang and add action * try clang on course folder only * forget two file * Update course_displaylists.inc.c * forget few other file * Update course_vertices.inc.c * format all code while get it match * second pass * format other dir * disable clang format on bad ido code * fix some tabulation * revert format on tool dir * Update clang-format.yml * ignore gbi.h * add some read me instruction * fix error * format and fixing error * Update README.md --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * Update linkonly_generator.py (#670) * some rename for torch (#588) * rename gBombKartSpawns, and fix cup ID * Update doxygen_syms.md * rename for gCourseIndexInCup and his constant * rename to gCupSelectedCourseIndex * forget a change in constant * fix compilation issue * Update Dockerfile to latest Ubuntu LTS + fixed missing cmake (#674) * Fix color font matrix function (#676) * Fix label variables used in menus (#675) * Fix label variables used in menus * split D_800F2BDC and clang format menu.c --------- Co-authored-by: coco875 <pereira.jannin@gmail.com> * Fix some libultra struct types (#677) * Uintptr (#671) * Update render_courses.c * Update math_util.c * Update math_util.c * Update math_util.h * Update render_courses.c * Clang suggest (#678) * add clang suggestion * Update clang-format-suggest.yml * Update clang-format-suggest.yml * simplify * switch to ubuntu * Update clang-format-suggest.yml * update ubuntu --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * Clang pr (#679) * Create clang-pr.yml * Update clang-pr.yml * Update osCreateMesgQueue.c * Update osCreateMesgQueue.c * Update clang-pr.yml * Update clang-pr.yml * Update clang-format.yml * clang format (#680) Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com> * some rename in ceremony (#647) * rename ceremony * apply some suggestion * some rename --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * clang format (#681) Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com> * Rename Object Timing Related Code (#673) * start making models extraction with blender * finishing extract model * Update fast64 * extract course * Update fast64 * Update fast64 * simplify import of course_displaylists and course_textures and remplace adress with texture * Update fast64 * change data format and simplify the thread queue * move in a blender folder * remove fast64 * re add fast64 * add model_extract and fast64_blender in makefile * multithread with make file split the models into multiple json and add course segment * Update fast64 * remove old model_extract * remove the error when he don't find blender * start rename around course section * rename around object * update submodule fast64 * fix compilation issue and add some model to extract * Update fast64 * remove fast64 * re add fast64 * update submodule * fix compilation issue * add other collision gfx and prepare reorganise file * re arrange json * Create README.MD * Update README.MD * Update README.MD * update fast64 * rename to initiate_next_state * Revert "Merge branch '3d-objects' into general-object" This reverts commit f5347b38cc75af4d10ee3726dc1524c1c71d6849, reversing changes made to a353c4d954fb5b50c8b48fe3f9d67c95ccaab299. * revert the revert... * revert 3d-models PR * finish some revert * Update code_80005FD0.c * fix code_80091750.c * Update code_80091750.c * rename isTimerRunning to isTimerActive and set_object_timer_running to set_object_timer_state * rename to initialize_next_state * rename to object_next_state --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * extract models with blender (#577) * start making models extraction with blender * finishing extract model * Update fast64 * extract course * Update fast64 * Update fast64 * simplify import of course_displaylists and course_textures and remplace adress with texture * Update fast64 * change data format and simplify the thread queue * move in a blender folder * remove fast64 * re add fast64 * add model_extract and fast64_blender in makefile * multithread with make file split the models into multiple json and add course segment * Update fast64 * remove old model_extract * remove the error when he don't find blender * start rename around course section * update submodule fast64 * fix compilation issue and add some model to extract * Update fast64 * remove fast64 * re add fast64 * update submodule * fix compilation issue * add other collision gfx and prepare reorganise file * re arrange json * Create README.MD * Update README.MD * Update README.MD * update fast64 --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * other * fix some error of compilation * finish fix all error --------- Signed-off-by: Gabriel Ravier <gabravier@gmail.com> Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> Co-authored-by: Gabriel Ravier <gabravier@gmail.com> Co-authored-by: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Co-authored-by: AloXado320 <38191089+AloXado320@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
Diffstat (limited to 'src/os/osContInit.c')
-rw-r--r--src/os/osContInit.c66
1 files changed, 34 insertions, 32 deletions
diff --git a/src/os/osContInit.c b/src/os/osContInit.c
index ccd7583d5..04cb65ddf 100644
--- a/src/os/osContInit.c
+++ b/src/os/osContInit.c
@@ -1,5 +1,5 @@
#include "libultra_internal.h"
-#include "osContInternal.h"
+#include "controller.h"
void __osPackRequestData(u8);
void __osContGetInitData(u8*, OSContStatus*);
@@ -9,6 +9,7 @@ u32 _osContInitialized = 0;
extern u64 osClockRate;
// these probably belong in EEPROMlongread or something
+ALIGNED16 OSPifRam __osContPifRam;
u8 __osContLastCmd;
u8 _osContNumControllers;
OSTimer D_80196548;
@@ -34,9 +35,9 @@ s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* status) {
//! @todo figure out what it means
_osContNumControllers = 4;
__osPackRequestData(0);
- ret = __osSiRawStartDma(OS_WRITE, _osContCmdBuf);
+ ret = __osSiRawStartDma(OS_WRITE, __osContPifRam.ramarray);
osRecvMesg(mq, &mesg, OS_MESG_BLOCK);
- ret = __osSiRawStartDma(OS_READ, _osContCmdBuf);
+ ret = __osSiRawStartDma(OS_READ, __osContPifRam.ramarray);
osRecvMesg(mq, &mesg, OS_MESG_BLOCK);
__osContGetInitData(bitpattern, status);
__osContLastCmd = 0;
@@ -45,48 +46,49 @@ s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* status) {
return ret;
}
void __osContGetInitData(u8* bitpattern, OSContStatus* status) {
- OSContPackedRequest* cmdBufPtr;
- OSContPackedRequest response;
+ u8* ptr;
+ __OSContRequesFormat response;
s32 i;
- u8 sp7;
+ u8 bits;
- sp7 = 0;
- cmdBufPtr = &(_osContCmdBuf[0].request);
- for (i = 0; i < _osContNumControllers; i++, cmdBufPtr++, status++) {
- response = *(OSContPackedRequest*) cmdBufPtr;
- status->errnum = (response.rxLen & 0xc0) >> 4;
+ bits = 0;
+ ptr = (u8*) __osContPifRam.ramarray;
+ for (i = 0; i < _osContNumControllers; i++, ptr += sizeof(response), status++) {
+ response = *((__OSContRequesFormat*) (ptr));
+ status->errnum = CHNL_ERR(response);
if (status->errnum == 0) {
- status->type = response.data2 << 8 | response.data1;
- status->status = response.data3;
+ status->type = response.typel << 8 | response.typeh;
+ status->status = response.status;
- sp7 |= 1 << i;
+ bits |= 1 << i;
}
}
- *bitpattern = sp7;
+
+ *bitpattern = bits;
}
void __osPackRequestData(u8 command) {
- OSContPackedRequest* cmdBufPtr;
- OSContPackedRequest request;
+ u8* ptr;
+ __OSContRequesFormat requestHeader;
s32 i;
- // some kind of weird zeroing code
- for (i = 0; i < 0x10; i++) {
- *((u32*) &_osContCmdBuf + i) = 0;
+ for (i = 0; i < ARRLEN(__osContPifRam.ramarray) + 1; i++) {
+ __osContPifRam.ramarray[i] = 0;
}
- _osContPifCtrl = 1;
- cmdBufPtr = &_osContCmdBuf[0].request;
- request.padOrEnd = 255;
- request.txLen = 1;
- request.rxLen = 3;
- request.command = command;
- request.data1 = 255;
- request.data2 = 255;
- request.data3 = 255;
- request.data4 = 255;
+ __osContPifRam.pifstatus = CONT_CMD_EXE;
+ ptr = (u8*) __osContPifRam.ramarray;
+ requestHeader.dummy = CONT_CMD_NOP;
+ requestHeader.txsize = CONT_CMD_RESET_TX;
+ requestHeader.rxsize = CONT_CMD_RESET_RX;
+ requestHeader.cmd = command;
+ requestHeader.typeh = CONT_CMD_NOP;
+ requestHeader.typel = CONT_CMD_NOP;
+ requestHeader.status = CONT_CMD_NOP;
+ requestHeader.dummy1 = CONT_CMD_NOP;
for (i = 0; i < _osContNumControllers; i++) {
- *cmdBufPtr++ = request;
+ *(__OSContRequesFormat*) ptr = requestHeader;
+ ptr += sizeof(requestHeader);
}
- cmdBufPtr->padOrEnd = 254;
+ *ptr = CONT_CMD_END;
}