From e42d44e6cb850caf040729da56f37d0739ed7063 Mon Sep 17 00:00:00 2001 From: jdflyer Date: Sat, 2 Jan 2021 00:02:19 -0700 Subject: [PATCH] M_do_controller_pad split and partially matched (#36) * m_Do_controller_pad split * Attempt to match and match mDoCPd_c::recalibrate * Fix Merge Errors * clang-format Co-authored-by: Pheenoh --- asm/JUtility/JUTException.s | 10 +- .../c/API/controller/c_API_controller_pad.s | 6 +- asm/SComponent/c/c_lib.s | 4 +- asm/bss.s | 12 +- asm/d/bright/d_bright_check.s | 4 +- asm/d/com/inf/d_com_inf_game.s | 4 +- asm/d/d_camera.s | 52 +- asm/d/d_event.s | 4 +- asm/d/d_name.s | 12 +- asm/d/d_vibration.s | 44 +- asm/d/ev/d_ev_camera.s | 4 +- asm/d/file/d_file_select.s | 20 +- asm/d/menu/d_menu_calibration.s | 12 +- asm/d/menu/d_menu_dmap.s | 8 +- asm/d/menu/d_menu_fishing.s | 4 +- asm/d/menu/d_menu_insect.s | 12 +- asm/d/menu/d_menu_letter.s | 8 +- asm/d/menu/d_menu_option.s | 24 +- asm/d/menu/d_menu_ring.s | 12 +- asm/d/menu/d_menu_save.s | 12 +- asm/d/menu/d_menu_skill.s | 8 +- asm/d/menu/d_menu_window.s | 48 +- asm/d/menu/item/d_menu_item_explain.s | 12 +- asm/d/meter/d_meter_map.s | 4 +- asm/d/msg/d_msg_class.s | 8 +- asm/d/msg/d_msg_object.s | 40 +- asm/d/msg/scrn/d_msg_scrn_explain.s | 12 +- asm/d/msg/scrn/d_msg_scrn_howl.s | 12 +- asm/d/s/d_s_logo.s | 20 +- asm/d/shop/d_shop_system.s | 8 +- asm/f/ap/f_ap_game.s | 8 +- asm/f/op/actor/f_op_actor_mng.s | 2 +- asm/f/op/kankyo/f_op_kankyo_mng.s | 2 +- asm/m/Do/controller/m_Do_controller_pad.s | 318 ------- asm/m/Do/m_Do_graphic.s | 6 +- asm/m/Do/m_Do_machine.s | 4 +- asm/sbss.s | 4 +- .../JSystem/JUtility/JUTGamePad/JUTGamePad.h | 12 +- include/c/cLib.h | 1 + include/d/d_a/d_a_alink/asm/func_800B271C.s | 20 +- include/d/d_a/d_a_alink/asm/func_80117CF8.s | 4 +- include/d/d_a/d_a_alink/asm/func_80130BC4.s | 8 +- include/d/d_attention/asm/func_80070018.s | 4 +- include/d/d_attention/asm/func_800725F0.s | 4 +- .../d/d_lib/asm/CSTControl_NS_getAngleStick.s | 4 +- .../d/d_lib/asm/CSTControl_NS_getValueStick.s | 4 +- include/d/d_lib/asm/getAngleStick.s | 4 +- include/d/d_lib/asm/getValueStick.s | 4 +- include/d/d_lib/d_lib.h | 10 - include/functions.h | 265 ++++++ include/m_Do/m_Do_Reset/m_Do_Reset.h | 1 - .../asm/mDoCPd_c_NS_LRlockCheck.s | 46 + .../asm/mDoCPd_c_NS_convert.s | 89 ++ .../asm/mDoCPd_c_NS_create.s | 88 ++ .../asm/mDoCPd_c_NS_read.s | 63 ++ .../asm/mDoCPd_c_NS_recalibrate.s | 10 + .../m_Do_controller_pad/m_Do_controller_pad.h | 112 ++- include/m_Do/m_Do_main/asm/func_8000578C.s | 4 +- include/m_Do/m_Do_main/asm/func_80005D4C.s | 8 +- include/m_Do/m_Do_main/asm/func_800061C8.s | 4 +- include/m_Do/m_Do_main/asm/func_8000628C.s | 4 +- include/pad/pad.h | 6 + include/variables.h | 45 +- libs/JSystem/JUtility/JUTGamePad.cpp | 6 +- obj_files.mk | 2 +- src/d/d_lib.cpp | 10 +- src/f/f_pc/f_pc_manager.cpp | 2 +- src/m_Do/m_Do_controller_pad.cpp | 179 +++- src/m_Do/m_Do_main.cpp | 6 +- tools/elf2dol.c | 834 +++++++++--------- 70 files changed, 1604 insertions(+), 1043 deletions(-) delete mode 100644 asm/m/Do/controller/m_Do_controller_pad.s create mode 100644 include/c/cLib.h create mode 100644 include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_LRlockCheck.s create mode 100644 include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_convert.s create mode 100644 include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_create.s create mode 100644 include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_read.s create mode 100644 include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_recalibrate.s diff --git a/asm/JUtility/JUTException.s b/asm/JUtility/JUTException.s index 7ca8a274925..2910bdcf130 100644 --- a/asm/JUtility/JUTException.s +++ b/asm/JUtility/JUTException.s @@ -1353,16 +1353,16 @@ lbl_802E2F88: /* 802E2FDC 002DFF1C 40 82 03 A4 */ bne lbl_802E3380 /* 802E2FE0 002DFF20 38 61 02 C8 */ addi r3, r1, 0x2c8 /* 802E2FE4 002DFF24 38 80 00 00 */ li r4, 0 -/* 802E2FE8 002DFF28 4B FF D6 F5 */ bl __ct__10JUTGamePadFUl +/* 802E2FE8 002DFF28 4B FF D6 F5 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort /* 802E2FEC 002DFF2C 38 61 02 18 */ addi r3, r1, 0x218 /* 802E2FF0 002DFF30 38 80 00 01 */ li r4, 1 -/* 802E2FF4 002DFF34 4B FF D6 E9 */ bl __ct__10JUTGamePadFUl +/* 802E2FF4 002DFF34 4B FF D6 E9 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort /* 802E2FF8 002DFF38 38 61 01 68 */ addi r3, r1, 0x168 /* 802E2FFC 002DFF3C 38 80 00 02 */ li r4, 2 -/* 802E3000 002DFF40 4B FF D6 DD */ bl __ct__10JUTGamePadFUl +/* 802E3000 002DFF40 4B FF D6 DD */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort /* 802E3004 002DFF44 38 61 00 B8 */ addi r3, r1, 0xb8 /* 802E3008 002DFF48 38 80 00 03 */ li r4, 3 -/* 802E300C 002DFF4C 4B FF D6 D1 */ bl __ct__10JUTGamePadFUl +/* 802E300C 002DFF4C 4B FF D6 D1 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort /* 802E3010 002DFF50 4B FF D8 D5 */ bl read__10JUTGamePadFv /* 802E3014 002DFF54 38 60 00 00 */ li r3, 0 /* 802E3018 002DFF58 A8 01 03 44 */ lha r0, 0x344(r1) @@ -1614,7 +1614,7 @@ lbl_802E3380: /* 802E3384 002E02C4 2C 04 00 00 */ cmpwi r4, 0 /* 802E3388 002E02C8 41 80 00 E4 */ blt lbl_802E346C /* 802E338C 002E02CC 38 61 00 08 */ addi r3, r1, 8 -/* 802E3390 002E02D0 4B FF D3 4D */ bl __ct__10JUTGamePadFUl +/* 802E3390 002E02D0 4B FF D3 4D */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort /* 802E3394 002E02D4 3C 60 80 3D */ lis r3, lbl_803CC640@ha /* 802E3398 002E02D8 3B 43 C6 40 */ addi r26, r3, lbl_803CC640@l /* 802E339C 002E02DC 38 60 00 00 */ li r3, 0 diff --git a/asm/SComponent/c/API/controller/c_API_controller_pad.s b/asm/SComponent/c/API/controller/c_API_controller_pad.s index 16971d2340c..b0997011591 100644 --- a/asm/SComponent/c/API/controller/c_API_controller_pad.s +++ b/asm/SComponent/c/API/controller/c_API_controller_pad.s @@ -8,7 +8,7 @@ cAPICPad_recalibrate: /* 8026328C 002601CC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80263290 002601D0 7C 08 02 A6 */ mflr r0 /* 80263294 002601D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80263298 002601D8 4B DA 4A DD */ bl mDoCPd_c_NS_recalibrate +/* 80263298 002601D8 4B DA 4A DD */ bl recalibrate__8mDoCPd_cFv /* 8026329C 002601DC 80 01 00 14 */ lwz r0, 0x14(r1) /* 802632A0 002601E0 7C 08 03 A6 */ mtlr r0 /* 802632A4 002601E4 38 21 00 10 */ addi r1, r1, 0x10 @@ -17,8 +17,8 @@ cAPICPad_recalibrate: .global cAPICPad_ANY_BUTTON cAPICPad_ANY_BUTTON: /* 802632AC 002601EC 54 64 30 32 */ slwi r4, r3, 6 -/* 802632B0 002601F0 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 802632B4 002601F4 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 802632B0 002601F0 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 802632B4 002601F4 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 802632B8 002601F8 7C 60 22 14 */ add r3, r0, r4 /* 802632BC 002601FC 80 03 00 34 */ lwz r0, 0x34(r3) /* 802632C0 00260200 70 03 13 00 */ andi. r3, r0, 0x1300 diff --git a/asm/SComponent/c/c_lib.s b/asm/SComponent/c/c_lib.s index 10284d07b17..06c5db62400 100644 --- a/asm/SComponent/c/c_lib.s +++ b/asm/SComponent/c/c_lib.s @@ -14,8 +14,8 @@ cLib_memCpy: /* 8026F954 0026C894 38 21 00 10 */ addi r1, r1, 0x10 /* 8026F958 0026C898 4E 80 00 20 */ blr -.global cLib_memSet -cLib_memSet: +.global cLib_memSet__FPviUl +cLib_memSet__FPviUl: /* 8026F95C 0026C89C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8026F960 0026C8A0 7C 08 02 A6 */ mflr r0 /* 8026F964 0026C8A4 90 01 00 14 */ stw r0, 0x14(r1) diff --git a/asm/bss.s b/asm/bss.s index 17de91e82e3..b315df37a22 100644 --- a/asm/bss.s +++ b/asm/bss.s @@ -17,11 +17,11 @@ lbl_803DBF40: .global lbl_803DBF4C lbl_803DBF4C: .skip 0x138C -.global lbl_803DD2D8 -lbl_803DD2D8: +.global m_gamePad +m_gamePad: .skip 0x10 -.global lbl_803DD2E8 -lbl_803DD2E8: +.global m_cpadInfo +m_cpadInfo: .skip 0x100 .global lbl_803DD3E8 lbl_803DD3E8: @@ -86,8 +86,8 @@ lbl_803F0F50: .global lbl_803F1BB0 lbl_803F1BB0: .skip 0xC -.global lbl_803F1BBC -lbl_803F1BBC: +.global g_HIO +g_HIO: .skip 0x44 .global lbl_803F1C00 lbl_803F1C00: diff --git a/asm/d/bright/d_bright_check.s b/asm/d/bright/d_bright_check.s index c1ae1c45eef..ee500ab68fc 100644 --- a/asm/d/bright/d_bright_check.s +++ b/asm/d/bright/d_bright_check.s @@ -412,8 +412,8 @@ dBrightCheck_c_NS__move: /* 80193514 00190454 90 01 00 24 */ stw r0, 0x24(r1) /* 80193518 00190458 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8019351C 0019045C 7C 7F 1B 78 */ mr r31, r3 -/* 80193520 00190460 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80193524 00190464 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80193520 00190460 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80193524 00190464 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80193528 00190468 80 63 00 34 */ lwz r3, 0x34(r3) /* 8019352C 0019046C 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 80193530 00190470 40 82 00 0C */ bne lbl_8019353C diff --git a/asm/d/com/inf/d_com_inf_game.s b/asm/d/com/inf/d_com_inf_game.s index 209bdda00f6..79cf21a2d11 100644 --- a/asm/d/com/inf/d_com_inf_game.s +++ b/asm/d/com/inf/d_com_inf_game.s @@ -4032,8 +4032,8 @@ dComIfGs_gameStart: /* 8002E9CC 0002B90C 38 21 00 10 */ addi r1, r1, 0x10 /* 8002E9D0 0002B910 4E 80 00 20 */ blr /* 8002E9D4 0002B914 54 64 30 32 */ slwi r4, r3, 6 -/* 8002E9D8 0002B918 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8002E9DC 0002B91C 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 8002E9D8 0002B918 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8002E9DC 0002B91C 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 8002E9E0 0002B920 7C 60 22 14 */ add r3, r0, r4 /* 8002E9E4 0002B924 80 03 00 34 */ lwz r0, 0x34(r3) /* 8002E9E8 0002B928 54 03 05 EE */ rlwinm r3, r0, 0, 0x17, 0x17 diff --git a/asm/d/d_camera.s b/asm/d/d_camera.s index a5f05fd4c66..105a7bd8eff 100644 --- a/asm/d/d_camera.s +++ b/asm/d/d_camera.s @@ -1872,8 +1872,8 @@ dCamera_c_NS_initPad: lbl_80161570: /* 80161570 0015E4B0 80 03 01 7C */ lwz r0, 0x17c(r3) /* 80161574 0015E4B4 54 00 30 32 */ slwi r0, r0, 6 -/* 80161578 0015E4B8 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 8016157C 0015E4BC 38 A4 D2 E8 */ addi r5, r4, lbl_803DD2E8@l +/* 80161578 0015E4B8 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 8016157C 0015E4BC 38 A4 D2 E8 */ addi r5, r4, m_cpadInfo@l /* 80161580 0015E4C0 7C 05 04 2E */ lfsx f0, r5, r0 /* 80161584 0015E4C4 D0 03 01 BC */ stfs f0, 0x1bc(r3) /* 80161588 0015E4C8 80 03 01 7C */ lwz r0, 0x17c(r3) @@ -1903,8 +1903,8 @@ lbl_801615B0: lbl_801615E4: /* 801615E4 0015E524 80 03 01 7C */ lwz r0, 0x17c(r3) /* 801615E8 0015E528 54 00 30 32 */ slwi r0, r0, 6 -/* 801615EC 0015E52C 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801615F0 0015E530 38 A4 D2 E8 */ addi r5, r4, lbl_803DD2E8@l +/* 801615EC 0015E52C 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801615F0 0015E530 38 A4 D2 E8 */ addi r5, r4, m_cpadInfo@l /* 801615F4 0015E534 7C 85 02 14 */ add r4, r5, r0 /* 801615F8 0015E538 C0 04 00 10 */ lfs f0, 0x10(r4) /* 801615FC 0015E53C D0 03 01 D8 */ stfs f0, 0x1d8(r3) @@ -1931,8 +1931,8 @@ lbl_80161628: /* 8016164C 0015E58C 90 83 01 F4 */ stw r4, 0x1f4(r3) /* 80161650 0015E590 80 03 01 7C */ lwz r0, 0x17c(r3) /* 80161654 0015E594 54 06 30 32 */ slwi r6, r0, 6 -/* 80161658 0015E598 3C A0 80 3E */ lis r5, lbl_803DD2E8@ha -/* 8016165C 0015E59C 38 05 D2 E8 */ addi r0, r5, lbl_803DD2E8@l +/* 80161658 0015E598 3C A0 80 3E */ lis r5, m_cpadInfo@ha +/* 8016165C 0015E59C 38 05 D2 E8 */ addi r0, r5, m_cpadInfo@l /* 80161660 0015E5A0 7C A0 32 14 */ add r5, r0, r6 /* 80161664 0015E5A4 C0 25 00 28 */ lfs f1, 0x28(r5) /* 80161668 0015E5A8 D0 23 02 00 */ stfs f1, 0x200(r3) @@ -2041,8 +2041,8 @@ dCamera_c_NS_updatePad: lbl_801617F8: /* 801617F8 0015E738 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 801617FC 0015E73C 54 04 30 32 */ slwi r4, r0, 6 -/* 80161800 0015E740 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80161804 0015E744 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 80161800 0015E740 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80161804 0015E744 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80161808 0015E748 7C 60 22 14 */ add r3, r0, r4 /* 8016180C 0015E74C C0 23 00 00 */ lfs f1, 0(r3) /* 80161810 0015E750 C0 43 00 04 */ lfs f2, 4(r3) @@ -2062,8 +2062,8 @@ lbl_80161818: /* 80161844 0015E784 D0 7E 01 C4 */ stfs f3, 0x1c4(r30) /* 80161848 0015E788 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 8016184C 0015E78C 54 04 30 32 */ slwi r4, r0, 6 -/* 80161850 0015E790 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80161854 0015E794 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 80161850 0015E790 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80161854 0015E794 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80161858 0015E798 7C 60 22 14 */ add r3, r0, r4 /* 8016185C 0015E79C A8 83 00 0C */ lha r4, 0xc(r3) /* 80161860 0015E7A0 38 7E 01 D4 */ addi r3, r30, 0x1d4 @@ -2078,8 +2078,8 @@ lbl_80161818: lbl_80161884: /* 80161884 0015E7C4 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 80161888 0015E7C8 54 04 30 32 */ slwi r4, r0, 6 -/* 8016188C 0015E7CC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80161890 0015E7D0 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 8016188C 0015E7CC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80161890 0015E7D0 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80161894 0015E7D4 7C 60 22 14 */ add r3, r0, r4 /* 80161898 0015E7D8 C0 23 00 10 */ lfs f1, 0x10(r3) /* 8016189C 0015E7DC C0 43 00 14 */ lfs f2, 0x14(r3) @@ -2099,16 +2099,16 @@ lbl_801618A4: /* 801618D0 0015E810 D0 7E 01 E0 */ stfs f3, 0x1e0(r30) /* 801618D4 0015E814 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 801618D8 0015E818 54 04 30 32 */ slwi r4, r0, 6 -/* 801618DC 0015E81C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801618E0 0015E820 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 801618DC 0015E81C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801618E0 0015E820 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 801618E4 0015E824 7C 60 22 14 */ add r3, r0, r4 /* 801618E8 0015E828 A8 83 00 1C */ lha r4, 0x1c(r3) /* 801618EC 0015E82C 38 7E 01 F0 */ addi r3, r30, 0x1f0 /* 801618F0 0015E830 48 10 F7 15 */ bl cSAngle_NS_Val_X2_ /* 801618F4 0015E834 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 801618F8 0015E838 54 00 30 32 */ slwi r0, r0, 6 -/* 801618FC 0015E83C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80161900 0015E840 38 83 D2 E8 */ addi r4, r3, lbl_803DD2E8@l +/* 801618FC 0015E83C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80161900 0015E840 38 83 D2 E8 */ addi r4, r3, m_cpadInfo@l /* 80161904 0015E844 7C 64 02 14 */ add r3, r4, r0 /* 80161908 0015E848 C0 23 00 28 */ lfs f1, 0x28(r3) /* 8016190C 0015E84C C0 1E 02 00 */ lfs f0, 0x200(r30) @@ -2153,8 +2153,8 @@ lbl_80161990: lbl_8016199C: /* 8016199C 0015E8DC 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 801619A0 0015E8E0 54 00 30 32 */ slwi r0, r0, 6 -/* 801619A4 0015E8E4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801619A8 0015E8E8 38 83 D2 E8 */ addi r4, r3, lbl_803DD2E8@l +/* 801619A4 0015E8E4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801619A8 0015E8E8 38 83 D2 E8 */ addi r4, r3, m_cpadInfo@l /* 801619AC 0015E8EC 7C 64 02 14 */ add r3, r4, r0 /* 801619B0 0015E8F0 C0 23 00 2C */ lfs f1, 0x2c(r3) /* 801619B4 0015E8F4 C0 1E 02 0C */ lfs f0, 0x20c(r30) @@ -2199,8 +2199,8 @@ lbl_80161A38: lbl_80161A44: /* 80161A44 0015E984 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 80161A48 0015E988 54 04 30 32 */ slwi r4, r0, 6 -/* 80161A4C 0015E98C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80161A50 0015E990 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 80161A4C 0015E98C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80161A50 0015E990 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80161A54 0015E994 7C 60 22 14 */ add r3, r0, r4 /* 80161A58 0015E998 80 63 00 30 */ lwz r3, 0x30(r3) /* 80161A5C 0015E99C 54 63 B7 FE */ rlwinm r3, r3, 0x16, 0x1f, 0x1f @@ -2400,8 +2400,8 @@ lbl_80161D1C: /* 80161D24 0015EC64 98 1E 02 24 */ stb r0, 0x224(r30) /* 80161D28 0015EC68 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 80161D2C 0015EC6C 54 04 30 32 */ slwi r4, r0, 6 -/* 80161D30 0015EC70 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80161D34 0015EC74 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 80161D30 0015EC70 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80161D34 0015EC74 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80161D38 0015EC78 7C 60 22 14 */ add r3, r0, r4 /* 80161D3C 0015EC7C C0 23 00 08 */ lfs f1, 8(r3) /* 80161D40 0015EC80 C0 02 9C C0 */ lfs f0, lbl_804536C0-_SDA2_BASE_(r2) @@ -13915,8 +13915,8 @@ _unnamed_d_camera_cpp__NS_sAngleX: .global mDoCPd_c_NS_getHoldA mDoCPd_c_NS_getHoldA: /* 8016C314 00169254 54 64 30 32 */ slwi r4, r3, 6 -/* 8016C318 00169258 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8016C31C 0016925C 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 8016C318 00169258 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8016C31C 0016925C 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 8016C320 00169260 7C 60 22 14 */ add r3, r0, r4 /* 8016C324 00169264 80 03 00 30 */ lwz r0, 0x30(r3) /* 8016C328 00169268 54 03 05 EE */ rlwinm r3, r0, 0, 0x17, 0x17 @@ -38326,8 +38326,8 @@ dCamSetup_c_NS_WaitRollTimer: .global mDoCPd_c_NS_getTrigA mDoCPd_c_NS_getTrigA: /* 80182BF8 0017FB38 54 64 30 32 */ slwi r4, r3, 6 -/* 80182BFC 0017FB3C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80182C00 0017FB40 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 80182BFC 0017FB3C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80182C00 0017FB40 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80182C04 0017FB44 7C 60 22 14 */ add r3, r0, r4 /* 80182C08 0017FB48 80 03 00 34 */ lwz r0, 0x34(r3) /* 80182C0C 0017FB4C 54 03 05 EE */ rlwinm r3, r0, 0, 0x17, 0x17 diff --git a/asm/d/d_event.s b/asm/d/d_event.s index 25d94dddb73..2013374a251 100644 --- a/asm/d/d_event.s +++ b/asm/d/d_event.s @@ -1591,8 +1591,8 @@ dEvt_control_c_NS_skipper: /* 80042A14 0003F954 41 82 00 08 */ beq lbl_80042A1C /* 80042A18 0003F958 3B C0 00 01 */ li r30, 1 lbl_80042A1C: -/* 80042A1C 0003F95C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80042A20 0003F960 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80042A1C 0003F95C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80042A20 0003F960 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80042A24 0003F964 80 03 00 34 */ lwz r0, 0x34(r3) /* 80042A28 0003F968 54 00 04 E7 */ rlwinm. r0, r0, 0, 0x13, 0x13 /* 80042A2C 0003F96C 41 82 00 44 */ beq lbl_80042A70 diff --git a/asm/d/d_name.s b/asm/d/d_name.s index bd22e938b74..9db092d698c 100644 --- a/asm/d/d_name.s +++ b/asm/d/d_name.s @@ -424,8 +424,8 @@ dName_c_NS__move: /* 8024E9D0 0024B910 7D 80 2A 14 */ add r12, r0, r5 /* 8024E9D4 0024B914 48 11 36 B1 */ bl func_80362084 /* 8024E9D8 0024B918 60 00 00 00 */ nop -/* 8024E9DC 0024B91C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8024E9E0 0024B920 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8024E9DC 0024B91C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8024E9E0 0024B920 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8024E9E4 0024B924 80 63 00 34 */ lwz r3, 0x34(r3) /* 8024E9E8 0024B928 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e /* 8024E9EC 0024B92C 41 82 00 64 */ beq lbl_8024EA50 @@ -673,8 +673,8 @@ lbl_8024ED08: /* 8024ED54 0024BC94 90 01 00 34 */ stw r0, 0x34(r1) /* 8024ED58 0024BC98 93 E1 00 2C */ stw r31, 0x2c(r1) /* 8024ED5C 0024BC9C 7C 7F 1B 78 */ mr r31, r3 -/* 8024ED60 0024BCA0 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 8024ED64 0024BCA4 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 8024ED60 0024BCA0 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 8024ED64 0024BCA4 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 8024ED68 0024BCA8 80 04 00 34 */ lwz r0, 0x34(r4) /* 8024ED6C 0024BCAC 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 8024ED70 0024BCB0 41 82 00 0C */ beq lbl_8024ED7C @@ -1696,8 +1696,8 @@ lbl_8024FBA8: /* 8024FC0C 0024CB4C 98 1F 02 AB */ stb r0, 0x2ab(r31) /* 8024FC10 0024CB50 48 00 01 7C */ b lbl_8024FD8C lbl_8024FC14: -/* 8024FC14 0024CB54 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8024FC18 0024CB58 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8024FC14 0024CB54 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8024FC18 0024CB58 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8024FC1C 0024CB5C 80 63 00 34 */ lwz r3, 0x34(r3) /* 8024FC20 0024CB60 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 8024FC24 0024CB64 41 82 00 D0 */ beq lbl_8024FCF4 diff --git a/asm/d/d_vibration.s b/asm/d/d_vibration.s index 0f7f92ab193..955641d6194 100644 --- a/asm/d/d_vibration.s +++ b/asm/d/d_vibration.s @@ -445,8 +445,8 @@ lbl_8006F750: /* 8006F774 0006C6B4 7F C5 F3 78 */ mr r5, r30 /* 8006F778 0006C6B8 4B FF F9 F1 */ bl _unnamed_d_vibration_cpp__NS_makedata /* 8006F77C 0006C6BC 7C 64 1B 78 */ mr r4, r3 -/* 8006F780 0006C6C0 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006F784 0006C6C4 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006F780 0006C6C0 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006F784 0006C6C4 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006F788 0006C6C8 80 63 00 00 */ lwz r3, 0(r3) /* 8006F78C 0006C6CC 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F790 0006C6D0 38 A0 00 00 */ li r5, 0 @@ -471,8 +471,8 @@ lbl_8006F7A0: /* 8006F7D8 0006C718 7F A5 EB 78 */ mr r5, r29 /* 8006F7DC 0006C71C 4B FF F9 8D */ bl _unnamed_d_vibration_cpp__NS_makedata /* 8006F7E0 0006C720 7C 64 1B 78 */ mr r4, r3 -/* 8006F7E4 0006C724 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006F7E8 0006C728 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006F7E4 0006C724 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006F7E8 0006C728 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006F7EC 0006C72C 80 63 00 00 */ lwz r3, 0(r3) /* 8006F7F0 0006C730 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F7F4 0006C734 38 A0 00 01 */ li r5, 1 @@ -512,8 +512,8 @@ lbl_8006F84C: /* 8006F874 0006C7B4 7F A5 EB 78 */ mr r5, r29 /* 8006F878 0006C7B8 4B FF F8 F1 */ bl _unnamed_d_vibration_cpp__NS_makedata /* 8006F87C 0006C7BC 7C 64 1B 78 */ mr r4, r3 -/* 8006F880 0006C7C0 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006F884 0006C7C4 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006F880 0006C7C0 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006F884 0006C7C4 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006F888 0006C7C8 80 63 00 00 */ lwz r3, 0(r3) /* 8006F88C 0006C7CC 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F890 0006C7D0 38 A0 00 00 */ li r5, 0 @@ -521,13 +521,13 @@ lbl_8006F84C: /* 8006F898 0006C7D8 48 27 20 35 */ bl startPatternedRumble__Q210JUTGamePad7CRumbleFPvlUl /* 8006F89C 0006C7DC 48 00 00 3C */ b lbl_8006F8D8 lbl_8006F8A0: -/* 8006F8A0 0006C7E0 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006F8A4 0006C7E4 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006F8A0 0006C7E0 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006F8A4 0006C7E4 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006F8A8 0006C7E8 80 63 00 00 */ lwz r3, 0(r3) /* 8006F8AC 0006C7EC 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F8B0 0006C7F0 48 27 20 C9 */ bl stopPatternedRumbleAtThePeriod__Q210JUTGamePad7CRumbleFv -/* 8006F8B4 0006C7F4 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006F8B8 0006C7F8 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006F8B4 0006C7F4 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006F8B8 0006C7F8 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006F8BC 0006C7FC 80 63 00 00 */ lwz r3, 0(r3) /* 8006F8C0 0006C800 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006F8C4 0006C804 38 80 00 00 */ li r4, 0 @@ -588,13 +588,13 @@ lbl_8006F978: lbl_8006F990: /* 8006F990 0006C8D0 2C 03 03 84 */ cmpwi r3, 0x384 /* 8006F994 0006C8D4 41 80 00 40 */ blt lbl_8006F9D4 -/* 8006F998 0006C8D8 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006F99C 0006C8DC 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006F998 0006C8D8 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006F99C 0006C8DC 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006F9A0 0006C8E0 80 63 00 00 */ lwz r3, 0(r3) /* 8006F9A4 0006C8E4 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F9A8 0006C8E8 48 27 1F D1 */ bl stopPatternedRumbleAtThePeriod__Q210JUTGamePad7CRumbleFv -/* 8006F9AC 0006C8EC 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006F9B0 0006C8F0 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006F9AC 0006C8EC 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006F9B0 0006C8F0 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006F9B4 0006C8F4 80 63 00 00 */ lwz r3, 0(r3) /* 8006F9B8 0006C8F8 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006F9BC 0006C8FC 38 80 00 00 */ li r4, 0 @@ -901,13 +901,13 @@ dVibration_c_NS_Kill: /* 8006FE08 0006CD48 90 01 00 14 */ stw r0, 0x14(r1) /* 8006FE0C 0006CD4C 93 E1 00 0C */ stw r31, 0xc(r1) /* 8006FE10 0006CD50 7C 7F 1B 78 */ mr r31, r3 -/* 8006FE14 0006CD54 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006FE18 0006CD58 80 83 D2 D8 */ lwz r4, lbl_803DD2D8@l(r3) +/* 8006FE14 0006CD54 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006FE18 0006CD58 80 83 D2 D8 */ lwz r4, m_gamePad@l(r3) /* 8006FE1C 0006CD5C 38 64 00 68 */ addi r3, r4, 0x68 /* 8006FE20 0006CD60 A8 84 00 7C */ lha r4, 0x7c(r4) /* 8006FE24 0006CD64 48 27 1B 25 */ bl stopPatternedRumble__Q210JUTGamePad7CRumbleFs -/* 8006FE28 0006CD68 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006FE2C 0006CD6C 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006FE28 0006CD68 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006FE2C 0006CD6C 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006FE30 0006CD70 80 63 00 00 */ lwz r3, 0(r3) /* 8006FE34 0006CD74 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006FE38 0006CD78 38 80 00 01 */ li r4, 1 @@ -1000,13 +1000,13 @@ dVibration_c_NS_Pause: /* 8006FF68 0006CEA8 2C 00 FF FF */ cmpwi r0, -1 /* 8006FF6C 0006CEAC 41 82 00 30 */ beq lbl_8006FF9C lbl_8006FF70: -/* 8006FF70 0006CEB0 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006FF74 0006CEB4 80 83 D2 D8 */ lwz r4, lbl_803DD2D8@l(r3) +/* 8006FF70 0006CEB0 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006FF74 0006CEB4 80 83 D2 D8 */ lwz r4, m_gamePad@l(r3) /* 8006FF78 0006CEB8 38 64 00 68 */ addi r3, r4, 0x68 /* 8006FF7C 0006CEBC A8 84 00 7C */ lha r4, 0x7c(r4) /* 8006FF80 0006CEC0 48 27 19 C9 */ bl stopPatternedRumble__Q210JUTGamePad7CRumbleFs -/* 8006FF84 0006CEC4 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 8006FF88 0006CEC8 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 8006FF84 0006CEC4 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 8006FF88 0006CEC8 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 8006FF8C 0006CECC 80 63 00 00 */ lwz r3, 0(r3) /* 8006FF90 0006CED0 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006FF94 0006CED4 38 80 00 01 */ li r4, 1 diff --git a/asm/d/ev/d_ev_camera.s b/asm/d/ev/d_ev_camera.s index 48def057a26..1d4835da8fa 100644 --- a/asm/d/ev/d_ev_camera.s +++ b/asm/d/ev/d_ev_camera.s @@ -8383,8 +8383,8 @@ lbl_800903FC: /* 80090420 0008D360 38 60 00 01 */ li r3, 1 /* 80090424 0008D364 80 1E 01 7C */ lwz r0, 0x17c(r30) /* 80090428 0008D368 54 05 30 32 */ slwi r5, r0, 6 -/* 8009042C 0008D36C 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 80090430 0008D370 38 04 D2 E8 */ addi r0, r4, lbl_803DD2E8@l +/* 8009042C 0008D36C 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 80090430 0008D370 38 04 D2 E8 */ addi r0, r4, m_cpadInfo@l /* 80090434 0008D374 7C 80 2A 14 */ add r4, r0, r5 /* 80090438 0008D378 80 84 00 30 */ lwz r4, 0x30(r4) /* 8009043C 0008D37C 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17 diff --git a/asm/d/file/d_file_select.s b/asm/d/file/d_file_select.s index c2d6082308c..29688bf3f9c 100644 --- a/asm/d/file/d_file_select.s +++ b/asm/d/file/d_file_select.s @@ -2101,8 +2101,8 @@ lbl_801853AC: /* 801853D4 00182314 7C 7F 1B 78 */ mr r31, r3 /* 801853D8 00182318 80 63 02 54 */ lwz r3, 0x254(r3) /* 801853DC 0018231C 4B EA CD C1 */ bl checkTrigger__9STControlFv -/* 801853E0 00182320 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801853E4 00182324 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801853E0 00182320 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801853E4 00182324 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801853E8 00182328 80 63 00 34 */ lwz r3, 0x34(r3) /* 801853EC 0018232C 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801853F0 00182330 40 82 00 0C */ bne lbl_801853FC @@ -3428,8 +3428,8 @@ lbl_8018675C: /* 80186784 001836C4 7C 7F 1B 78 */ mr r31, r3 /* 80186788 001836C8 80 63 02 54 */ lwz r3, 0x254(r3) /* 8018678C 001836CC 4B EA BA 11 */ bl checkTrigger__9STControlFv -/* 80186790 001836D0 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80186794 001836D4 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80186790 001836D0 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80186794 001836D4 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80186798 001836D8 80 63 00 34 */ lwz r3, 0x34(r3) /* 8018679C 001836DC 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801867A0 001836E0 41 82 00 10 */ beq lbl_801867B0 @@ -5002,8 +5002,8 @@ lbl_80187EAC: /* 80187EE4 00184E24 7C 7F 1B 78 */ mr r31, r3 /* 80187EE8 00184E28 80 63 02 54 */ lwz r3, 0x254(r3) /* 80187EEC 00184E2C 4B EA A2 B1 */ bl checkTrigger__9STControlFv -/* 80187EF0 00184E30 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80187EF4 00184E34 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80187EF0 00184E30 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80187EF4 00184E34 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80187EF8 00184E38 80 63 00 34 */ lwz r3, 0x34(r3) /* 80187EFC 00184E3C 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 80187F00 00184E40 41 82 00 10 */ beq lbl_80187F10 @@ -6343,8 +6343,8 @@ lbl_80189288: /* 801892AC 001861EC 7C 7F 1B 78 */ mr r31, r3 /* 801892B0 001861F0 80 63 02 54 */ lwz r3, 0x254(r3) /* 801892B4 001861F4 4B EA 8E E9 */ bl checkTrigger__9STControlFv -/* 801892B8 001861F8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801892BC 001861FC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801892B8 001861F8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801892BC 001861FC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801892C0 00186200 80 63 00 34 */ lwz r3, 0x34(r3) /* 801892C4 00186204 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801892C8 00186208 41 82 00 10 */ beq lbl_801892D8 @@ -13347,8 +13347,8 @@ dFile_select_c_NS_errYesNoSelect: /* 8018FA44 0018C984 3B E0 00 00 */ li r31, 0 /* 8018FA48 0018C988 80 63 02 54 */ lwz r3, 0x254(r3) /* 8018FA4C 0018C98C 4B EA 27 51 */ bl checkTrigger__9STControlFv -/* 8018FA50 0018C990 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8018FA54 0018C994 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8018FA50 0018C990 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8018FA54 0018C994 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8018FA58 0018C998 80 03 00 34 */ lwz r0, 0x34(r3) /* 8018FA5C 0018C99C 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 8018FA60 0018C9A0 41 82 00 90 */ beq lbl_8018FAF0 diff --git a/asm/d/menu/d_menu_calibration.s b/asm/d/menu/d_menu_calibration.s index e0dc435a23d..474aa9a5301 100644 --- a/asm/d/menu/d_menu_calibration.s +++ b/asm/d/menu/d_menu_calibration.s @@ -235,8 +235,8 @@ lbl_801AF068: /* 801AF0C0 001AC000 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801AF0C4 001AC004 7C 08 02 A6 */ mflr r0 /* 801AF0C8 001AC008 90 01 00 14 */ stw r0, 0x14(r1) -/* 801AF0CC 001AC00C 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801AF0D0 001AC010 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801AF0CC 001AC00C 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801AF0D0 001AC010 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801AF0D4 001AC014 80 84 00 34 */ lwz r4, 0x34(r4) /* 801AF0D8 001AC018 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17 /* 801AF0DC 001AC01C 41 82 00 50 */ beq lbl_801AF12C @@ -433,8 +433,8 @@ lbl_801AF35C: /* 801AF3BC 001AC2FC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801AF3C0 001AC300 7C 08 02 A6 */ mflr r0 /* 801AF3C4 001AC304 90 01 00 14 */ stw r0, 0x14(r1) -/* 801AF3C8 001AC308 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801AF3CC 001AC30C 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801AF3C8 001AC308 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801AF3CC 001AC30C 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801AF3D0 001AC310 80 84 00 34 */ lwz r4, 0x34(r4) /* 801AF3D4 001AC314 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17 /* 801AF3D8 001AC318 41 82 00 50 */ beq lbl_801AF428 @@ -596,8 +596,8 @@ lbl_801AF5D8: /* 801AF638 001AC578 90 01 00 24 */ stw r0, 0x24(r1) /* 801AF63C 001AC57C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 801AF640 001AC580 7C 7F 1B 78 */ mr r31, r3 -/* 801AF644 001AC584 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801AF648 001AC588 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801AF644 001AC584 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801AF648 001AC588 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801AF64C 001AC58C 80 63 00 34 */ lwz r3, 0x34(r3) /* 801AF650 001AC590 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801AF654 001AC594 41 82 00 58 */ beq lbl_801AF6AC diff --git a/asm/d/menu/d_menu_dmap.s b/asm/d/menu/d_menu_dmap.s index b2bd621ee70..b522c1fb9cc 100644 --- a/asm/d/menu/d_menu_dmap.s +++ b/asm/d/menu/d_menu_dmap.s @@ -7560,8 +7560,8 @@ lbl_801BED5C: /* 801BEDE0 001BBD20 48 00 01 ED */ bl dMenu_Dmap_c_NS_itemSelectAnmInit /* 801BEDE4 001BBD24 48 00 01 2C */ b lbl_801BEF10 lbl_801BEDE8: -/* 801BEDE8 001BBD28 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801BEDEC 001BBD2C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801BEDE8 001BBD28 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801BEDEC 001BBD2C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801BEDF0 001BBD30 80 03 00 34 */ lwz r0, 0x34(r3) /* 801BEDF4 001BBD34 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 801BEDF8 001BBD38 41 82 01 18 */ beq lbl_801BEF10 @@ -8757,8 +8757,8 @@ lbl_801BFF5C: /* 801BFF9C 001BCEDC 88 03 01 7B */ lbz r0, 0x17b(r3) /* 801BFFA0 001BCEE0 28 00 00 01 */ cmplwi r0, 1 /* 801BFFA4 001BCEE4 40 82 00 D4 */ bne lbl_801C0078 -/* 801BFFA8 001BCEE8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801BFFAC 001BCEEC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801BFFA8 001BCEE8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801BFFAC 001BCEEC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801BFFB0 001BCEF0 80 83 00 34 */ lwz r4, 0x34(r3) /* 801BFFB4 001BCEF4 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17 /* 801BFFB8 001BCEF8 41 82 00 48 */ beq lbl_801C0000 diff --git a/asm/d/menu/d_menu_fishing.s b/asm/d/menu/d_menu_fishing.s index 0d7f300f347..283b2817a08 100644 --- a/asm/d/menu/d_menu_fishing.s +++ b/asm/d/menu/d_menu_fishing.s @@ -597,8 +597,8 @@ lbl_801C5550: /* 801C55AC 001C24EC 80 04 00 04 */ lwz r0, 4(r4) /* 801C55B0 001C24F0 2C 00 00 01 */ cmpwi r0, 1 /* 801C55B4 001C24F4 4C 82 00 20 */ bnelr -/* 801C55B8 001C24F8 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801C55BC 001C24FC 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801C55B8 001C24F8 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801C55BC 001C24FC 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801C55C0 001C2500 80 04 00 34 */ lwz r0, 0x34(r4) /* 801C55C4 001C2504 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 /* 801C55C8 001C2508 4D 82 00 20 */ beqlr diff --git a/asm/d/menu/d_menu_insect.s b/asm/d/menu/d_menu_insect.s index 953f74ffda3..59c376d8759 100644 --- a/asm/d/menu/d_menu_insect.s +++ b/asm/d/menu/d_menu_insect.s @@ -824,8 +824,8 @@ lbl_801D8CAC: /* 801D8CE4 001D5C24 80 04 00 04 */ lwz r0, 4(r4) /* 801D8CE8 001D5C28 2C 00 00 01 */ cmpwi r0, 1 /* 801D8CEC 001D5C2C 40 82 01 00 */ bne lbl_801D8DEC -/* 801D8CF0 001D5C30 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801D8CF4 001D5C34 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801D8CF0 001D5C30 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801D8CF4 001D5C34 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801D8CF8 001D5C38 80 A4 00 34 */ lwz r5, 0x34(r4) /* 801D8CFC 001D5C3C 54 A4 05 AD */ rlwinm. r4, r5, 0, 0x16, 0x16 /* 801D8D00 001D5C40 40 82 00 10 */ bne lbl_801D8D10 @@ -1188,8 +1188,8 @@ lbl_801D9250: /* 801D925C 001D619C 38 21 00 10 */ addi r1, r1, 0x10 /* 801D9260 001D61A0 4E 80 00 20 */ blr /* 801D9264 001D61A4 4E 80 00 20 */ blr -/* 801D9268 001D61A8 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801D926C 001D61AC 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801D9268 001D61A8 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801D926C 001D61AC 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801D9270 001D61B0 80 84 00 34 */ lwz r4, 0x34(r4) /* 801D9274 001D61B4 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17 /* 801D9278 001D61B8 40 82 00 0C */ bne lbl_801D9284 @@ -1225,8 +1225,8 @@ lbl_801D9284: /* 801D92EC 001D622C 7C 7F 1B 78 */ mr r31, r3 /* 801D92F0 001D6230 80 63 00 0C */ lwz r3, 0xc(r3) /* 801D92F4 001D6234 4B E5 8E A9 */ bl checkTrigger__9STControlFv -/* 801D92F8 001D6238 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801D92FC 001D623C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801D92F8 001D6238 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801D92FC 001D623C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801D9300 001D6240 80 63 00 34 */ lwz r3, 0x34(r3) /* 801D9304 001D6244 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801D9308 001D6248 41 82 00 8C */ beq lbl_801D9394 diff --git a/asm/d/menu/d_menu_letter.s b/asm/d/menu/d_menu_letter.s index 9f99358f6c3..c0d137a839e 100644 --- a/asm/d/menu/d_menu_letter.s +++ b/asm/d/menu/d_menu_letter.s @@ -1173,8 +1173,8 @@ lbl_801DDDF8: /* 801DDE74 001DADB4 80 03 00 04 */ lwz r0, 4(r3) /* 801DDE78 001DADB8 2C 00 00 01 */ cmpwi r0, 1 /* 801DDE7C 001DADBC 40 82 02 D0 */ bne lbl_801DE14C -/* 801DDE80 001DADC0 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801DDE84 001DADC4 3B A3 D2 E8 */ addi r29, r3, lbl_803DD2E8@l +/* 801DDE80 001DADC0 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801DDE84 001DADC4 3B A3 D2 E8 */ addi r29, r3, m_cpadInfo@l /* 801DDE88 001DADC8 80 7D 00 34 */ lwz r3, 0x34(r29) /* 801DDE8C 001DADCC 54 60 05 AD */ rlwinm. r0, r3, 0, 0x16, 0x16 /* 801DDE90 001DADD0 41 82 00 20 */ beq lbl_801DDEB0 @@ -1821,8 +1821,8 @@ lbl_801DE810: /* 801DE82C 001DB76C 90 01 00 B4 */ stw r0, 0xb4(r1) /* 801DE830 001DB770 93 E1 00 AC */ stw r31, 0xac(r1) /* 801DE834 001DB774 7C 7F 1B 78 */ mr r31, r3 -/* 801DE838 001DB778 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801DE83C 001DB77C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801DE838 001DB778 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801DE83C 001DB77C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801DE840 001DB780 80 63 00 34 */ lwz r3, 0x34(r3) /* 801DE844 001DB784 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801DE848 001DB788 41 82 00 A4 */ beq lbl_801DE8EC diff --git a/asm/d/menu/d_menu_option.s b/asm/d/menu/d_menu_option.s index 837e663cf43..87eaf65eb6e 100644 --- a/asm/d/menu/d_menu_option.s +++ b/asm/d/menu/d_menu_option.s @@ -1474,8 +1474,8 @@ lbl_801E344C: /* 801E3450 001E0390 80 03 00 04 */ lwz r0, 4(r3) /* 801E3454 001E0394 2C 00 00 01 */ cmpwi r0, 1 /* 801E3458 001E0398 40 82 01 84 */ bne lbl_801E35DC -/* 801E345C 001E039C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801E3460 001E03A0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801E345C 001E039C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801E3460 001E03A0 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801E3464 001E03A4 80 83 00 34 */ lwz r4, 0x34(r3) /* 801E3468 001E03A8 54 85 05 EF */ rlwinm. r5, r4, 0, 0x17, 0x17 /* 801E346C 001E03AC 41 82 00 B8 */ beq lbl_801E3524 @@ -2485,8 +2485,8 @@ lbl_801E42F8: /* 801E4318 001E1258 40 82 00 38 */ bne lbl_801E4350 /* 801E431C 001E125C 38 00 00 01 */ li r0, 1 /* 801E4320 001E1260 98 1F 03 EA */ stb r0, 0x3ea(r31) -/* 801E4324 001E1264 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 801E4328 001E1268 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 801E4324 001E1264 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 801E4328 001E1268 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 801E432C 001E126C 80 63 00 00 */ lwz r3, 0(r3) /* 801E4330 001E1270 38 63 00 68 */ addi r3, r3, 0x68 /* 801E4334 001E1274 38 9F 03 E0 */ addi r4, r31, 0x3e0 @@ -2534,8 +2534,8 @@ lbl_801E43B0: /* 801E43D0 001E1310 40 82 00 38 */ bne lbl_801E4408 /* 801E43D4 001E1314 38 00 00 01 */ li r0, 1 /* 801E43D8 001E1318 98 1F 03 EA */ stb r0, 0x3ea(r31) -/* 801E43DC 001E131C 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 801E43E0 001E1320 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 801E43DC 001E131C 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 801E43E0 001E1320 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 801E43E4 001E1324 80 63 00 00 */ lwz r3, 0(r3) /* 801E43E8 001E1328 38 63 00 68 */ addi r3, r3, 0x68 /* 801E43EC 001E132C 38 9F 03 E0 */ addi r4, r31, 0x3e0 @@ -3181,8 +3181,8 @@ lbl_801E4CBC: /* 801E4D3C 001E1C7C 7C 7E 1B 78 */ mr r30, r3 /* 801E4D40 001E1C80 7F E3 FB 78 */ mr r3, r31 /* 801E4D44 001E1C84 4B FF ED 85 */ bl dMenu_Option_c_NS_checkRightTrigger -/* 801E4D48 001E1C88 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801E4D4C 001E1C8C 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801E4D48 001E1C88 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801E4D4C 001E1C8C 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801E4D50 001E1C90 80 84 00 34 */ lwz r4, 0x34(r4) /* 801E4D54 001E1C94 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17 /* 801E4D58 001E1C98 41 82 00 1C */ beq lbl_801E4D74 @@ -3525,8 +3525,8 @@ lbl_801E5230: /* 801E5268 001E21A8 90 01 00 24 */ stw r0, 0x24(r1) /* 801E526C 001E21AC 93 E1 00 1C */ stw r31, 0x1c(r1) /* 801E5270 001E21B0 7C 7F 1B 78 */ mr r31, r3 -/* 801E5274 001E21B4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801E5278 001E21B8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801E5274 001E21B4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801E5278 001E21B8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801E527C 001E21BC 80 63 00 34 */ lwz r3, 0x34(r3) /* 801E5280 001E21C0 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b /* 801E5284 001E21C4 40 82 00 0C */ bne lbl_801E5290 @@ -6511,8 +6511,8 @@ dMenu_Option_c_NS_changeTVCheck: /* 801E7DFC 001E4D3C 90 01 00 24 */ stw r0, 0x24(r1) /* 801E7E00 001E4D40 93 E1 00 1C */ stw r31, 0x1c(r1) /* 801E7E04 001E4D44 7C 7F 1B 78 */ mr r31, r3 -/* 801E7E08 001E4D48 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801E7E0C 001E4D4C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801E7E08 001E4D48 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801E7E0C 001E4D4C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801E7E10 001E4D50 80 03 00 34 */ lwz r0, 0x34(r3) /* 801E7E14 001E4D54 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b /* 801E7E18 001E4D58 41 82 00 6C */ beq lbl_801E7E84 diff --git a/asm/d/menu/d_menu_ring.s b/asm/d/menu/d_menu_ring.s index adf07b88133..0125172c6cd 100644 --- a/asm/d/menu/d_menu_ring.s +++ b/asm/d/menu/d_menu_ring.s @@ -2614,8 +2614,8 @@ lbl_801EB70C: /* 801EB710 001E8650 55 25 06 3E */ clrlwi r5, r9, 0x18 /* 801EB714 001E8654 7C 07 28 40 */ cmplw r7, r5 /* 801EB718 001E8658 41 82 01 8C */ beq lbl_801EB8A4 -/* 801EB71C 001E865C 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801EB720 001E8660 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801EB71C 001E865C 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801EB720 001E8660 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801EB724 001E8664 80 04 00 30 */ lwz r0, 0x30(r4) /* 801EB728 001E8668 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19 /* 801EB72C 001E866C 41 82 00 38 */ beq lbl_801EB764 @@ -3638,8 +3638,8 @@ dMenu_Ring_c_NS_setActiveCursor: /* 801EC560 001E94A0 88 04 00 E0 */ lbz r0, 0xe0(r4) /* 801EC564 001E94A4 28 00 00 00 */ cmplwi r0, 0 /* 801EC568 001E94A8 40 82 01 D4 */ bne lbl_801EC73C -/* 801EC56C 001E94AC 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801EC570 001E94B0 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801EC56C 001E94AC 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801EC570 001E94B0 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801EC574 001E94B4 80 84 00 34 */ lwz r4, 0x34(r4) /* 801EC578 001E94B8 54 80 06 B5 */ rlwinm. r0, r4, 0, 0x1a, 0x1a /* 801EC57C 001E94BC 41 82 00 44 */ beq lbl_801EC5C0 @@ -4543,8 +4543,8 @@ lbl_801ED294: /* 801ED2B0 001EA1F0 7C 08 03 A6 */ mtlr r0 /* 801ED2B4 001EA1F4 38 21 00 70 */ addi r1, r1, 0x70 /* 801ED2B8 001EA1F8 4E 80 00 20 */ blr -/* 801ED2BC 001EA1FC 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 801ED2C0 001EA200 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 801ED2BC 001EA1FC 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 801ED2C0 001EA200 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 801ED2C4 001EA204 80 04 00 30 */ lwz r0, 0x30(r4) /* 801ED2C8 001EA208 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19 /* 801ED2CC 001EA20C 41 82 00 30 */ beq lbl_801ED2FC diff --git a/asm/d/menu/d_menu_save.s b/asm/d/menu/d_menu_save.s index 4f2cdb0b318..0f5902f0ab7 100644 --- a/asm/d/menu/d_menu_save.s +++ b/asm/d/menu/d_menu_save.s @@ -4598,8 +4598,8 @@ lbl_801F391C: /* 801F3954 001F0894 40 82 01 2C */ bne lbl_801F3A80 /* 801F3958 001F0898 80 7F 00 0C */ lwz r3, 0xc(r31) /* 801F395C 001F089C 4B E3 E8 41 */ bl checkTrigger__9STControlFv -/* 801F3960 001F08A0 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F3964 001F08A4 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F3960 001F08A0 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F3964 001F08A4 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F3968 001F08A8 80 63 00 34 */ lwz r3, 0x34(r3) /* 801F396C 001F08AC 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801F3970 001F08B0 41 82 00 10 */ beq lbl_801F3980 @@ -5110,8 +5110,8 @@ lbl_801F40C0: /* 801F40F8 001F1038 40 82 01 2C */ bne lbl_801F4224 /* 801F40FC 001F103C 80 7F 00 0C */ lwz r3, 0xc(r31) /* 801F4100 001F1040 4B E3 E0 9D */ bl checkTrigger__9STControlFv -/* 801F4104 001F1044 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F4108 001F1048 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F4104 001F1044 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F4108 001F1048 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F410C 001F104C 80 63 00 34 */ lwz r3, 0x34(r3) /* 801F4110 001F1050 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801F4114 001F1054 41 82 00 10 */ beq lbl_801F4124 @@ -6037,8 +6037,8 @@ dMenu_save_c_NS_errYesNoSelect: lbl_801F4E84: /* 801F4E84 001F1DC4 80 7F 00 0C */ lwz r3, 0xc(r31) /* 801F4E88 001F1DC8 4B E3 D3 15 */ bl checkTrigger__9STControlFv -/* 801F4E8C 001F1DCC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F4E90 001F1DD0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F4E8C 001F1DCC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F4E90 001F1DD0 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F4E94 001F1DD4 80 03 00 34 */ lwz r0, 0x34(r3) /* 801F4E98 001F1DD8 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 801F4E9C 001F1DDC 41 82 00 A0 */ beq lbl_801F4F3C diff --git a/asm/d/menu/d_menu_skill.s b/asm/d/menu/d_menu_skill.s index a7a09b5f2e9..ce0575af95a 100644 --- a/asm/d/menu/d_menu_skill.s +++ b/asm/d/menu/d_menu_skill.s @@ -819,8 +819,8 @@ lbl_801F7D3C: /* 801F7DB4 001F4CF4 80 03 00 04 */ lwz r0, 4(r3) /* 801F7DB8 001F4CF8 2C 00 00 01 */ cmpwi r0, 1 /* 801F7DBC 001F4CFC 40 82 01 50 */ bne lbl_801F7F0C -/* 801F7DC0 001F4D00 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F7DC4 001F4D04 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F7DC0 001F4D00 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F7DC4 001F4D04 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F7DC8 001F4D08 80 63 00 34 */ lwz r3, 0x34(r3) /* 801F7DCC 001F4D0C 54 60 05 AD */ rlwinm. r0, r3, 0, 0x16, 0x16 /* 801F7DD0 001F4D10 41 82 00 20 */ beq lbl_801F7DF0 @@ -1059,8 +1059,8 @@ lbl_801F80F8: /* 801F8158 001F5098 90 01 00 24 */ stw r0, 0x24(r1) /* 801F815C 001F509C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 801F8160 001F50A0 7C 7F 1B 78 */ mr r31, r3 -/* 801F8164 001F50A4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F8168 001F50A8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F8164 001F50A4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F8168 001F50A8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F816C 001F50AC 80 63 00 34 */ lwz r3, 0x34(r3) /* 801F8170 001F50B0 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801F8174 001F50B4 41 82 00 48 */ beq lbl_801F81BC diff --git a/asm/d/menu/d_menu_window.s b/asm/d/menu/d_menu_window.s index 03642315257..d9ae9d046ed 100644 --- a/asm/d/menu/d_menu_window.s +++ b/asm/d/menu/d_menu_window.s @@ -5,16 +5,16 @@ .global dMw_UP_TRIGGER dMw_UP_TRIGGER: -/* 801F9F84 001F6EC4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F9F88 001F6EC8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F9F84 001F6EC4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F9F88 001F6EC8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F9F8C 001F6ECC 80 03 00 34 */ lwz r0, 0x34(r3) /* 801F9F90 001F6ED0 54 03 EF FE */ rlwinm r3, r0, 0x1d, 0x1f, 0x1f /* 801F9F94 001F6ED4 4E 80 00 20 */ blr .global dMw_DOWN_TRIGGER dMw_DOWN_TRIGGER: -/* 801F9F98 001F6ED8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F9F9C 001F6EDC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F9F98 001F6ED8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F9F9C 001F6EDC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F9FA0 001F6EE0 80 03 00 34 */ lwz r0, 0x34(r3) /* 801F9FA4 001F6EE4 54 03 F7 FE */ rlwinm r3, r0, 0x1e, 0x1f, 0x1f /* 801F9FA8 001F6EE8 4E 80 00 20 */ blr @@ -24,8 +24,8 @@ dMw_LEFT_TRIGGER: /* 801F9FAC 001F6EEC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801F9FB0 001F6EF0 7C 08 02 A6 */ mflr r0 /* 801F9FB4 001F6EF4 90 01 00 14 */ stw r0, 0x14(r1) -/* 801F9FB8 001F6EF8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801F9FBC 001F6EFC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801F9FB8 001F6EF8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801F9FBC 001F6EFC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801F9FC0 001F6F00 80 03 00 34 */ lwz r0, 0x34(r3) /* 801F9FC4 001F6F04 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 801F9FC8 001F6F08 41 82 00 18 */ beq lbl_801F9FE0 @@ -47,8 +47,8 @@ dMw_RIGHT_TRIGGER: /* 801F9FF4 001F6F34 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801F9FF8 001F6F38 7C 08 02 A6 */ mflr r0 /* 801F9FFC 001F6F3C 90 01 00 14 */ stw r0, 0x14(r1) -/* 801FA000 001F6F40 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FA004 001F6F44 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FA000 001F6F40 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FA004 001F6F44 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FA008 001F6F48 80 03 00 34 */ lwz r0, 0x34(r3) /* 801FA00C 001F6F4C 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e /* 801FA010 001F6F50 41 82 00 18 */ beq lbl_801FA028 @@ -67,32 +67,32 @@ lbl_801FA02C: .global dMw_A_TRIGGER dMw_A_TRIGGER: -/* 801FA03C 001F6F7C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FA040 001F6F80 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FA03C 001F6F7C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FA040 001F6F80 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FA044 001F6F84 80 03 00 34 */ lwz r0, 0x34(r3) /* 801FA048 001F6F88 54 03 C7 FE */ rlwinm r3, r0, 0x18, 0x1f, 0x1f /* 801FA04C 001F6F8C 4E 80 00 20 */ blr .global dMw_B_TRIGGER dMw_B_TRIGGER: -/* 801FA050 001F6F90 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FA054 001F6F94 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FA050 001F6F90 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FA054 001F6F94 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FA058 001F6F98 80 03 00 34 */ lwz r0, 0x34(r3) /* 801FA05C 001F6F9C 54 03 BF FE */ rlwinm r3, r0, 0x17, 0x1f, 0x1f /* 801FA060 001F6FA0 4E 80 00 20 */ blr .global dMw_Z_TRIGGER dMw_Z_TRIGGER: -/* 801FA064 001F6FA4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FA068 001F6FA8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FA064 001F6FA4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FA068 001F6FA8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FA06C 001F6FAC 80 03 00 34 */ lwz r0, 0x34(r3) /* 801FA070 001F6FB0 54 03 E7 FE */ rlwinm r3, r0, 0x1c, 0x1f, 0x1f /* 801FA074 001F6FB4 4E 80 00 20 */ blr .global dMw_START_TRIGGER dMw_START_TRIGGER: -/* 801FA078 001F6FB8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FA07C 001F6FBC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FA078 001F6FB8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FA07C 001F6FBC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FA080 001F6FC0 80 03 00 34 */ lwz r0, 0x34(r3) /* 801FA084 001F6FC4 54 03 A7 FE */ rlwinm r3, r0, 0x14, 0x1f, 0x1f /* 801FA088 001F6FC8 4E 80 00 20 */ blr @@ -829,8 +829,8 @@ lbl_801FAB0C: /* 801FABAC 001F7AEC 4E 80 04 21 */ bctrl /* 801FABB0 001F7AF0 2C 03 00 00 */ cmpwi r3, 0 /* 801FABB4 001F7AF4 40 82 04 10 */ bne lbl_801FAFC4 -/* 801FABB8 001F7AF8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FABBC 001F7AFC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FABB8 001F7AF8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FABBC 001F7AFC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FABC0 001F7B00 80 63 00 34 */ lwz r3, 0x34(r3) /* 801FABC4 001F7B04 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801FABC8 001F7B08 40 82 00 0C */ bne lbl_801FABD4 @@ -2257,8 +2257,8 @@ lbl_801FC034: /* 801FC034 001F8F74 90 1F 01 14 */ stw r0, 0x114(r31) /* 801FC038 001F8F78 80 7F 01 14 */ lwz r3, 0x114(r31) /* 801FC03C 001F8F7C 4B FB B9 D1 */ bl dMenu_Collect_c_NS__create -/* 801FC040 001F8F80 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FC044 001F8F84 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FC040 001F8F80 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FC044 001F8F84 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FC048 001F8F88 88 03 00 39 */ lbz r0, 0x39(r3) /* 801FC04C 001F8F8C 28 00 00 00 */ cmplwi r0, 0 /* 801FC050 001F8F90 41 82 00 14 */ beq lbl_801FC064 @@ -3707,8 +3707,8 @@ lbl_801FD378: /* 801FD3BC 001FA2FC 48 16 4C C9 */ bl func_80362084 /* 801FD3C0 001FA300 60 00 00 00 */ nop lbl_801FD3C4: -/* 801FD3C4 001FA304 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FD3C8 001FA308 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FD3C4 001FA304 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FD3C8 001FA308 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FD3CC 001FA30C 88 03 00 39 */ lbz r0, 0x39(r3) /* 801FD3D0 001FA310 28 00 00 00 */ cmplwi r0, 0 /* 801FD3D4 001FA314 40 82 00 24 */ bne lbl_801FD3F8 @@ -3721,8 +3721,8 @@ lbl_801FD3C4: /* 801FD3F0 001FA330 38 80 00 01 */ li r4, 1 /* 801FD3F4 001FA334 4B FF F9 09 */ bl dMw_c_NS_dMw_offButtonBit lbl_801FD3F8: -/* 801FD3F8 001FA338 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801FD3FC 001FA33C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801FD3F8 001FA338 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801FD3FC 001FA33C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801FD400 001FA340 88 03 00 3B */ lbz r0, 0x3b(r3) /* 801FD404 001FA344 28 00 00 00 */ cmplwi r0, 0 /* 801FD408 001FA348 40 82 00 24 */ bne lbl_801FD42C diff --git a/asm/d/menu/item/d_menu_item_explain.s b/asm/d/menu/item/d_menu_item_explain.s index 06158322b43..e7c1743e814 100644 --- a/asm/d/menu/item/d_menu_item_explain.s +++ b/asm/d/menu/item/d_menu_item_explain.s @@ -1415,8 +1415,8 @@ lbl_801DBB6C: /* 801DBBB0 001D8AF0 41 82 00 08 */ beq lbl_801DBBB8 /* 801DBBB4 001D8AF4 48 06 02 DD */ bl dMsgScrnArrow_c_NS_arwAnimeMove lbl_801DBBB8: -/* 801DBBB8 001D8AF8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801DBBBC 001D8AFC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801DBBB8 001D8AF8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801DBBBC 001D8AFC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801DBBC0 001D8B00 80 63 00 34 */ lwz r3, 0x34(r3) /* 801DBBC4 001D8B04 54 64 05 EF */ rlwinm. r4, r3, 0, 0x17, 0x17 /* 801DBBC8 001D8B08 40 82 00 34 */ bne lbl_801DBBFC @@ -1662,8 +1662,8 @@ lbl_801DBF18: /* 801DBF54 001D8E94 7C 7F 1B 78 */ mr r31, r3 /* 801DBF58 001D8E98 80 63 00 B8 */ lwz r3, 0xb8(r3) /* 801DBF5C 001D8E9C 4B E5 62 41 */ bl checkTrigger__9STControlFv -/* 801DBF60 001D8EA0 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801DBF64 001D8EA4 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801DBF60 001D8EA0 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801DBF64 001D8EA4 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801DBF68 001D8EA8 80 63 00 34 */ lwz r3, 0x34(r3) /* 801DBF6C 001D8EAC 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 801DBF70 001D8EB0 41 82 00 E4 */ beq lbl_801DC054 @@ -1852,8 +1852,8 @@ lbl_801DC204: /* 801DC21C 001D915C 90 01 00 24 */ stw r0, 0x24(r1) /* 801DC220 001D9160 93 E1 00 1C */ stw r31, 0x1c(r1) /* 801DC224 001D9164 7C 7F 1B 78 */ mr r31, r3 -/* 801DC228 001D9168 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801DC22C 001D916C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 801DC228 001D9168 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801DC22C 001D916C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801DC230 001D9170 80 63 00 34 */ lwz r3, 0x34(r3) /* 801DC234 001D9174 54 64 05 EF */ rlwinm. r4, r3, 0, 0x17, 0x17 /* 801DC238 001D9178 40 82 00 0C */ bne lbl_801DC244 diff --git a/asm/d/meter/d_meter_map.s b/asm/d/meter/d_meter_map.s index 90c8d03e2bb..11b2103d803 100644 --- a/asm/d/meter/d_meter_map.s +++ b/asm/d/meter/d_meter_map.s @@ -1066,8 +1066,8 @@ lbl_8020E310: /* 8020E374 0020B2B4 48 01 06 5D */ bl dMeter2Info_set2DVibration /* 8020E378 0020B2B8 48 00 00 28 */ b lbl_8020E3A0 lbl_8020E37C: -/* 8020E37C 0020B2BC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8020E380 0020B2C0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8020E37C 0020B2BC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8020E380 0020B2C0 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8020E384 0020B2C4 80 63 00 34 */ lwz r3, 0x34(r3) /* 8020E388 0020B2C8 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c /* 8020E38C 0020B2CC 40 82 00 14 */ bne lbl_8020E3A0 diff --git a/asm/d/msg/d_msg_class.s b/asm/d/msg/d_msg_class.s index 9d0644a774c..5f9e8135dce 100644 --- a/asm/d/msg/d_msg_class.s +++ b/asm/d/msg/d_msg_class.s @@ -3882,8 +3882,8 @@ lbl_8022BC20: /* 8022BC20 00228B60 88 1F 12 4B */ lbz r0, 0x124b(r31) /* 8022BC24 00228B64 28 00 00 00 */ cmplwi r0, 0 /* 8022BC28 00228B68 41 82 00 30 */ beq lbl_8022BC58 -/* 8022BC2C 00228B6C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8022BC30 00228B70 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8022BC2C 00228B6C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8022BC30 00228B70 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8022BC34 00228B74 80 03 00 34 */ lwz r0, 0x34(r3) /* 8022BC38 00228B78 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 8022BC3C 00228B7C 41 82 00 14 */ beq lbl_8022BC50 @@ -4050,8 +4050,8 @@ lbl_8022BE50: /* 8022BE84 00228DC4 7C 03 00 2E */ lwzx r0, r3, r0 /* 8022BE88 00228DC8 7C 09 03 A6 */ mtctr r0 /* 8022BE8C 00228DCC 4E 80 04 20 */ bctr -/* 8022BE90 00228DD0 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8022BE94 00228DD4 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8022BE90 00228DD0 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8022BE94 00228DD4 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8022BE98 00228DD8 80 03 00 34 */ lwz r0, 0x34(r3) /* 8022BE9C 00228DDC 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 8022BEA0 00228DE0 40 82 00 10 */ bne lbl_8022BEB0 diff --git a/asm/d/msg/d_msg_object.s b/asm/d/msg/d_msg_object.s index 983dcd69f14..292e08e969e 100644 --- a/asm/d/msg/d_msg_object.s +++ b/asm/d/msg/d_msg_object.s @@ -1775,8 +1775,8 @@ lbl_802343C8: /* 802343CC 0023130C 98 1D 12 4D */ stb r0, 0x124d(r29) /* 802343D0 00231310 48 00 01 20 */ b lbl_802344F0 lbl_802343D4: -/* 802343D4 00231314 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 802343D8 00231318 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 802343D4 00231314 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 802343D8 00231318 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 802343DC 0023131C 80 63 00 34 */ lwz r3, 0x34(r3) /* 802343E0 00231320 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 802343E4 00231324 41 82 00 2C */ beq lbl_80234410 @@ -2232,8 +2232,8 @@ lbl_80234A8C: /* 80234A98 002319D8 C0 22 B0 C0 */ lfs f1, lbl_80454AC0-_SDA2_BASE_(r2) /* 80234A9C 002319DC FC 02 08 40 */ fcmpo cr0, f2, f1 /* 80234AA0 002319E0 40 80 00 60 */ bge lbl_80234B00 -/* 80234AA4 002319E4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80234AA8 002319E8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80234AA4 002319E4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80234AA8 002319E8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80234AAC 002319EC 80 03 00 34 */ lwz r0, 0x34(r3) /* 80234AB0 002319F0 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80234AB4 002319F4 41 82 00 0C */ beq lbl_80234AC0 @@ -2626,8 +2626,8 @@ dMsgObject_c_NS_continueProc: /* 80235044 00231F84 7D 89 03 A6 */ mtctr r12 /* 80235048 00231F88 4E 80 04 21 */ bctrl lbl_8023504C: -/* 8023504C 00231F8C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80235050 00231F90 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8023504C 00231F8C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80235050 00231F90 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80235054 00231F94 80 63 00 34 */ lwz r3, 0x34(r3) /* 80235058 00231F98 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 8023505C 00231F9C 40 82 00 0C */ bne lbl_80235068 @@ -2860,8 +2860,8 @@ lbl_80235380: /* 802353AC 002322EC 38 00 00 00 */ li r0, 0 /* 802353B0 002322F0 98 03 5E 50 */ stb r0, 0x5e50(r3) lbl_802353B4: -/* 802353B4 002322F4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 802353B8 002322F8 3B C3 D2 E8 */ addi r30, r3, lbl_803DD2E8@l +/* 802353B4 002322F4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 802353B8 002322F8 3B C3 D2 E8 */ addi r30, r3, m_cpadInfo@l /* 802353BC 002322FC 80 7E 00 34 */ lwz r3, 0x34(r30) /* 802353C0 00232300 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 802353C4 00232304 41 82 00 24 */ beq lbl_802353E8 @@ -3239,8 +3239,8 @@ dMsgObject_c_NS_inputProc: /* 80235910 00232850 41 82 01 AC */ beq lbl_80235ABC /* 80235914 00232854 38 00 00 00 */ li r0, 0 /* 80235918 00232858 98 1C 01 99 */ stb r0, 0x199(r28) -/* 8023591C 0023285C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80235920 00232860 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8023591C 0023285C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80235920 00232860 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80235924 00232864 80 63 00 34 */ lwz r3, 0x34(r3) /* 80235928 00232868 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 8023592C 0023286C 41 82 01 58 */ beq lbl_80235A84 @@ -3421,8 +3421,8 @@ lbl_80235B9C: /* 80235BB0 00232AF0 48 00 C4 D1 */ bl dMsgScrnHowl_c_NS_isKeyCheck /* 80235BB4 00232AF4 54 60 06 3F */ clrlwi. r0, r3, 0x18 /* 80235BB8 00232AF8 41 82 00 1C */ beq lbl_80235BD4 -/* 80235BBC 00232AFC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80235BC0 00232B00 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80235BBC 00232AFC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80235BC0 00232B00 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80235BC4 00232B04 80 03 00 34 */ lwz r0, 0x34(r3) /* 80235BC8 00232B08 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 /* 80235BCC 00232B0C 41 82 00 08 */ beq lbl_80235BD4 @@ -3431,8 +3431,8 @@ lbl_80235BD4: /* 80235BD4 00232B14 7F E3 FB 78 */ mr r3, r31 /* 80235BD8 00232B18 48 00 0E 01 */ bl dMsgObject_c_NS_isSend /* 80235BDC 00232B1C 7C 7E 1B 78 */ mr r30, r3 -/* 80235BE0 00232B20 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80235BE4 00232B24 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80235BE0 00232B20 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80235BE4 00232B24 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80235BE8 00232B28 80 63 00 34 */ lwz r3, 0x34(r3) /* 80235BEC 00232B2C 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 80235BF0 00232B30 40 82 00 1C */ bne lbl_80235C0C @@ -4483,8 +4483,8 @@ lbl_80236A90: /* 80236AA8 002339E8 40 82 00 38 */ bne lbl_80236AE0 /* 80236AAC 002339EC 7F E3 FB 78 */ mr r3, r31 /* 80236AB0 002339F0 48 00 11 4D */ bl dMsgObject_c_NS_setButtonStatusLocal -/* 80236AB4 002339F4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80236AB8 002339F8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80236AB4 002339F4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80236AB8 002339F8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80236ABC 002339FC 80 63 00 34 */ lwz r3, 0x34(r3) /* 80236AC0 00233A00 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 80236AC4 00233A04 40 82 00 0C */ bne lbl_80236AD0 @@ -4521,8 +4521,8 @@ lbl_80236B1C: /* 80236B24 00233A64 40 82 00 98 */ bne lbl_80236BBC /* 80236B28 00233A68 7F E3 FB 78 */ mr r3, r31 /* 80236B2C 00233A6C 48 00 10 D1 */ bl dMsgObject_c_NS_setButtonStatusLocal -/* 80236B30 00233A70 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80236B34 00233A74 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80236B30 00233A70 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80236B34 00233A74 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80236B38 00233A78 80 63 00 34 */ lwz r3, 0x34(r3) /* 80236B3C 00233A7C 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 80236B40 00233A80 40 82 00 0C */ bne lbl_80236B4C @@ -4546,8 +4546,8 @@ lbl_80236B54: /* 80236B80 00233AC0 38 60 00 02 */ li r3, 2 /* 80236B84 00233AC4 48 00 00 5C */ b lbl_80236BE0 lbl_80236B88: -/* 80236B88 00233AC8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80236B8C 00233ACC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80236B88 00233AC8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80236B8C 00233ACC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80236B90 00233AD0 80 63 00 34 */ lwz r3, 0x34(r3) /* 80236B94 00233AD4 54 60 05 EF */ rlwinm. r0, r3, 0, 0x17, 0x17 /* 80236B98 00233AD8 40 82 00 0C */ bne lbl_80236BA4 diff --git a/asm/d/msg/scrn/d_msg_scrn_explain.s b/asm/d/msg/scrn/d_msg_scrn_explain.s index 000d81dadeb..f69d8132632 100644 --- a/asm/d/msg/scrn/d_msg_scrn_explain.s +++ b/asm/d/msg/scrn/d_msg_scrn_explain.s @@ -1188,8 +1188,8 @@ lbl_8023DD70: /* 8023DDD0 0023AD10 B0 03 00 5E */ sth r0, 0x5e(r3) /* 8023DDD4 0023AD14 48 00 00 A8 */ b lbl_8023DE7C lbl_8023DDD8: -/* 8023DDD8 0023AD18 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 8023DDDC 0023AD1C 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 8023DDD8 0023AD18 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 8023DDDC 0023AD1C 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 8023DDE0 0023AD20 80 84 00 34 */ lwz r4, 0x34(r4) /* 8023DDE4 0023AD24 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17 /* 8023DDE8 0023AD28 40 82 00 54 */ bne lbl_8023DE3C @@ -1768,16 +1768,16 @@ lbl_8023E638: .global dMsgScrnExplain_c_NS_checkTriggerA dMsgScrnExplain_c_NS_checkTriggerA: -/* 8023E640 0023B580 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8023E644 0023B584 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8023E640 0023B580 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8023E644 0023B584 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8023E648 0023B588 80 03 00 34 */ lwz r0, 0x34(r3) /* 8023E64C 0023B58C 54 03 C7 FE */ rlwinm r3, r0, 0x18, 0x1f, 0x1f /* 8023E650 0023B590 4E 80 00 20 */ blr .global dMsgScrnExplain_c_NS_checkTriggerB dMsgScrnExplain_c_NS_checkTriggerB: -/* 8023E654 0023B594 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8023E658 0023B598 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8023E654 0023B594 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8023E658 0023B598 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 8023E65C 0023B59C 80 03 00 34 */ lwz r0, 0x34(r3) /* 8023E660 0023B5A0 54 03 BF FE */ rlwinm r3, r0, 0x17, 0x1f, 0x1f /* 8023E664 0023B5A4 4E 80 00 20 */ blr diff --git a/asm/d/msg/scrn/d_msg_scrn_howl.s b/asm/d/msg/scrn/d_msg_scrn_howl.s index d54e5526dbd..6190765beb7 100644 --- a/asm/d/msg/scrn/d_msg_scrn_howl.s +++ b/asm/d/msg/scrn/d_msg_scrn_howl.s @@ -1353,8 +1353,8 @@ lbl_80241CB0: /* 80241D94 0023ECD4 38 00 00 02 */ li r0, 2 /* 80241D98 0023ECD8 98 1F 21 95 */ stb r0, 0x2195(r31) lbl_80241D9C: -/* 80241D9C 0023ECDC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80241DA0 0023ECE0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80241D9C 0023ECDC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80241DA0 0023ECE0 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80241DA4 0023ECE4 80 03 00 34 */ lwz r0, 0x34(r3) /* 80241DA8 0023ECE8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 /* 80241DAC 0023ECEC 41 82 00 3C */ beq lbl_80241DE8 @@ -1435,8 +1435,8 @@ lbl_80241E64: /* 80241EC4 0023EE04 54 00 10 3A */ slwi r0, r0, 2 /* 80241EC8 0023EE08 7C 7F 02 14 */ add r3, r31, r0 /* 80241ECC 0023EE0C D0 23 01 80 */ stfs f1, 0x180(r3) -/* 80241ED0 0023EE10 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80241ED4 0023EE14 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80241ED0 0023EE10 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80241ED4 0023EE14 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80241ED8 0023EE18 80 03 00 30 */ lwz r0, 0x30(r3) /* 80241EDC 0023EE1C 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80241EE0 0023EE20 41 82 00 18 */ beq lbl_80241EF8 @@ -1468,8 +1468,8 @@ lbl_80241F14: /* 80241F40 0023EE80 93 E1 00 0C */ stw r31, 0xc(r1) /* 80241F44 0023EE84 93 C1 00 08 */ stw r30, 8(r1) /* 80241F48 0023EE88 7C 7F 1B 78 */ mr r31, r3 -/* 80241F4C 0023EE8C 3C 80 80 3E */ lis r4, lbl_803DD2E8@ha -/* 80241F50 0023EE90 38 84 D2 E8 */ addi r4, r4, lbl_803DD2E8@l +/* 80241F4C 0023EE8C 3C 80 80 3E */ lis r4, m_cpadInfo@ha +/* 80241F50 0023EE90 38 84 D2 E8 */ addi r4, r4, m_cpadInfo@l /* 80241F54 0023EE94 80 04 00 30 */ lwz r0, 0x30(r4) /* 80241F58 0023EE98 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80241F5C 0023EE9C 41 82 00 28 */ beq lbl_80241F84 diff --git a/asm/d/s/d_s_logo.s b/asm/d/s/d_s_logo.s index ecb8e0a4df9..734c252b583 100644 --- a/asm/d/s/d_s_logo.s +++ b/asm/d/s/d_s_logo.s @@ -96,8 +96,8 @@ dScnLogo_c_NS_checkProgSelect: /* 802561CC 0025310C 48 00 23 55 */ bl dScnLogo_c_NS_isProgressiveMode /* 802561D0 00253110 54 60 06 3F */ clrlwi. r0, r3, 0x18 /* 802561D4 00253114 40 82 00 18 */ bne lbl_802561EC -/* 802561D8 00253118 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 802561DC 0025311C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 802561D8 00253118 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 802561DC 0025311C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 802561E0 00253120 80 03 00 30 */ lwz r0, 0x30(r3) /* 802561E4 00253124 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 /* 802561E8 00253128 41 82 00 14 */ beq lbl_802561FC @@ -215,8 +215,8 @@ lbl_80256304: /* 80256390 002532D0 88 1D 02 09 */ lbz r0, 0x209(r29) /* 80256394 002532D4 28 00 00 00 */ cmplwi r0, 0 /* 80256398 002532D8 40 82 00 80 */ bne lbl_80256418 -/* 8025639C 002532DC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 802563A0 002532E0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8025639C 002532DC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 802563A0 002532E0 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 802563A4 002532E4 80 03 00 30 */ lwz r0, 0x30(r3) /* 802563A8 002532E8 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e /* 802563AC 002532EC 40 82 00 14 */ bne lbl_802563C0 @@ -248,8 +248,8 @@ lbl_802563C0: /* 80256410 00253350 B0 1D 02 12 */ sth r0, 0x212(r29) /* 80256414 00253354 48 00 00 78 */ b lbl_8025648C lbl_80256418: -/* 80256418 00253358 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 8025641C 0025335C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80256418 00253358 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 8025641C 0025335C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80256420 00253360 80 03 00 30 */ lwz r0, 0x30(r3) /* 80256424 00253364 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 80256428 00253368 40 82 00 14 */ bne lbl_8025643C @@ -279,8 +279,8 @@ lbl_8025643C: /* 80256484 002533C4 B0 1D 02 10 */ sth r0, 0x210(r29) /* 80256488 002533C8 B0 7D 02 12 */ sth r3, 0x212(r29) lbl_8025648C: -/* 8025648C 002533CC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80256490 002533D0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8025648C 002533CC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80256490 002533D0 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80256494 002533D4 80 03 00 34 */ lwz r0, 0x34(r3) /* 80256498 002533D8 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 8025649C 002533DC 40 82 00 10 */ bne lbl_802564AC @@ -874,8 +874,8 @@ lbl_80256D4C: /* 80256D4C 00253C8C A0 1F 02 0C */ lhz r0, 0x20c(r31) /* 80256D50 00253C90 28 00 00 00 */ cmplwi r0, 0 /* 80256D54 00253C94 41 82 00 18 */ beq lbl_80256D6C -/* 80256D58 00253C98 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80256D5C 00253C9C 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80256D58 00253C98 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80256D5C 00253C9C 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80256D60 00253CA0 80 03 00 34 */ lwz r0, 0x34(r3) /* 80256D64 00253CA4 70 00 1F 7F */ andi. r0, r0, 0x1f7f /* 80256D68 00253CA8 41 82 00 44 */ beq lbl_80256DAC diff --git a/asm/d/shop/d_shop_system.s b/asm/d/shop/d_shop_system.s index 38912d5c6e3..68ae6d772e2 100644 --- a/asm/d/shop/d_shop_system.s +++ b/asm/d/shop/d_shop_system.s @@ -431,8 +431,8 @@ dShopSystem_c_NS_checkController: /* 80197690 001945D0 88 03 0F 72 */ lbz r0, 0xf72(r3) /* 80197694 001945D4 28 00 00 00 */ cmplwi r0, 0 /* 80197698 001945D8 41 82 00 28 */ beq lbl_801976C0 -/* 8019769C 001945DC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 801976A0 001945E0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8019769C 001945DC 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 801976A0 001945E0 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 801976A4 001945E4 80 03 00 34 */ lwz r0, 0x34(r3) /* 801976A8 001945E8 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 801976AC 001945EC 41 82 00 0C */ beq lbl_801976B8 @@ -483,8 +483,8 @@ lbl_80197720: /* 80197744 00194684 38 63 00 01 */ addi r3, r3, 1 /* 80197748 00194688 48 00 00 A8 */ b lbl_801977F0 lbl_8019774C: -/* 8019774C 0019468C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80197750 00194690 3B 83 D2 E8 */ addi r28, r3, lbl_803DD2E8@l +/* 8019774C 0019468C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80197750 00194690 3B 83 D2 E8 */ addi r28, r3, m_cpadInfo@l /* 80197754 00194694 80 1C 00 34 */ lwz r0, 0x34(r28) /* 80197758 00194698 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 8019775C 0019469C 41 82 00 54 */ beq lbl_801977B0 diff --git a/asm/f/ap/f_ap_game.s b/asm/f/ap/f_ap_game.s index cfdac9d590b..125a93ac133 100644 --- a/asm/f/ap/f_ap_game.s +++ b/asm/f/ap/f_ap_game.s @@ -113,8 +113,8 @@ fapGm_Create: /* 80018AB8 000159F8 48 00 58 C1 */ bl fopCamM_Init /* 80018ABC 000159FC 48 00 7A 5D */ bl fopDwTg_CreateQueue /* 80018AC0 00015A00 38 00 FF FF */ li r0, -1 -/* 80018AC4 00015A04 3C 60 80 3F */ lis r3, lbl_803F1BBC@ha -/* 80018AC8 00015A08 38 63 1B BC */ addi r3, r3, lbl_803F1BBC@l +/* 80018AC4 00015A04 3C 60 80 3F */ lis r3, g_HIO@ha +/* 80018AC8 00015A08 38 63 1B BC */ addi r3, r3, g_HIO@l /* 80018ACC 00015A0C 98 03 00 04 */ stb r0, 4(r3) /* 80018AD0 00015A10 80 01 00 14 */ lwz r0, 0x14(r1) /* 80018AD4 00015A14 7C 08 03 A6 */ mtlr r0 @@ -144,8 +144,8 @@ lbl_80018B10: /* 80018B28 00015A68 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80018B2C 00015A6C 7C 08 02 A6 */ mflr r0 /* 80018B30 00015A70 90 01 00 14 */ stw r0, 0x14(r1) -/* 80018B34 00015A74 3C 60 80 3F */ lis r3, lbl_803F1BBC@ha -/* 80018B38 00015A78 38 63 1B BC */ addi r3, r3, lbl_803F1BBC@l +/* 80018B34 00015A74 3C 60 80 3F */ lis r3, g_HIO@ha +/* 80018B38 00015A78 38 63 1B BC */ addi r3, r3, g_HIO@l /* 80018B3C 00015A7C 4B FF FE 09 */ bl fapGm_HIO_c .global fapGm_HIO_c_NS_dtor /* 80018B40 00015A80 3C 80 80 02 */ lis r4, fapGm_HIO_c_NS_dtor@ha diff --git a/asm/f/op/actor/f_op_actor_mng.s b/asm/f/op/actor/f_op_actor_mng.s index 9ba8415029d..d5fad407c4e 100644 --- a/asm/f/op/actor/f_op_actor_mng.s +++ b/asm/f/op/actor/f_op_actor_mng.s @@ -174,7 +174,7 @@ fopAcM_CreateAppend: /* 80019AC8 00016A08 41 82 00 3C */ beq lbl_80019B04 /* 80019ACC 00016A0C 38 80 00 00 */ li r4, 0 /* 80019AD0 00016A10 38 A0 00 24 */ li r5, 0x24 -/* 80019AD4 00016A14 48 25 5E 89 */ bl cLib_memSet +/* 80019AD4 00016A14 48 25 5E 89 */ bl cLib_memSet__FPviUl /* 80019AD8 00016A18 3C 60 00 01 */ lis r3, 0x0000FFFF@ha /* 80019ADC 00016A1C 38 03 FF FF */ addi r0, r3, 0x0000FFFF@l /* 80019AE0 00016A20 B0 1F 00 16 */ sth r0, 0x16(r31) diff --git a/asm/f/op/kankyo/f_op_kankyo_mng.s b/asm/f/op/kankyo/f_op_kankyo_mng.s index 89ceb0fe2c0..c71fc1cc948 100644 --- a/asm/f/op/kankyo/f_op_kankyo_mng.s +++ b/asm/f/op/kankyo/f_op_kankyo_mng.s @@ -16,7 +16,7 @@ fopKyM_CreateAppend: /* 8001F680 0001C5C0 41 82 00 20 */ beq lbl_8001F6A0 /* 8001F684 0001C5C4 38 80 00 00 */ li r4, 0 /* 8001F688 0001C5C8 38 A0 00 1C */ li r5, 0x1c -/* 8001F68C 0001C5CC 48 25 02 D1 */ bl cLib_memSet +/* 8001F68C 0001C5CC 48 25 02 D1 */ bl cLib_memSet__FPviUl /* 8001F690 0001C5D0 C0 02 82 68 */ lfs f0, lbl_80451C68-_SDA2_BASE_(r2) /* 8001F694 0001C5D4 D0 1F 00 0C */ stfs f0, 0xc(r31) /* 8001F698 0001C5D8 D0 1F 00 10 */ stfs f0, 0x10(r31) diff --git a/asm/m/Do/controller/m_Do_controller_pad.s b/asm/m/Do/controller/m_Do_controller_pad.s deleted file mode 100644 index 1f4c523ae25..00000000000 --- a/asm/m/Do/controller/m_Do_controller_pad.s +++ /dev/null @@ -1,318 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80007954 - - -.global mDoCPd_c_NS_create -mDoCPd_c_NS_create: -/* 80007954 00004894 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80007958 00004898 7C 08 02 A6 */ mflr r0 -/* 8000795C 0000489C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80007960 000048A0 38 60 00 B0 */ li r3, 0xb0 -/* 80007964 000048A4 48 2C 72 E9 */ bl __nw__FUl -/* 80007968 000048A8 7C 60 1B 79 */ or. r0, r3, r3 -/* 8000796C 000048AC 41 82 00 10 */ beq lbl_8000797C -/* 80007970 000048B0 38 80 00 00 */ li r4, 0 -/* 80007974 000048B4 48 2D 8D 69 */ bl __ct__10JUTGamePadFUl -/* 80007978 000048B8 7C 60 1B 78 */ mr r0, r3 -lbl_8000797C: -/* 8000797C 000048BC 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 80007980 000048C0 94 03 D2 D8 */ stwu r0, lbl_803DD2D8@l(r3) -/* 80007984 000048C4 88 0D 80 00 */ lbz r0, lbl_80450580-_SDA_BASE_(r13) -/* 80007988 000048C8 7C 00 07 75 */ extsb. r0, r0 -/* 8000798C 000048CC 41 82 00 80 */ beq lbl_80007A0C -/* 80007990 000048D0 38 60 00 B0 */ li r3, 0xb0 -/* 80007994 000048D4 48 2C 72 B9 */ bl __nw__FUl -/* 80007998 000048D8 7C 60 1B 79 */ or. r0, r3, r3 -/* 8000799C 000048DC 41 82 00 10 */ beq lbl_800079AC -/* 800079A0 000048E0 38 80 00 01 */ li r4, 1 -/* 800079A4 000048E4 48 2D 8D 39 */ bl __ct__10JUTGamePadFUl -/* 800079A8 000048E8 7C 60 1B 78 */ mr r0, r3 -lbl_800079AC: -/* 800079AC 000048EC 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 800079B0 000048F0 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l -/* 800079B4 000048F4 90 03 00 04 */ stw r0, 4(r3) -/* 800079B8 000048F8 38 60 00 B0 */ li r3, 0xb0 -/* 800079BC 000048FC 48 2C 72 91 */ bl __nw__FUl -/* 800079C0 00004900 7C 60 1B 79 */ or. r0, r3, r3 -/* 800079C4 00004904 41 82 00 10 */ beq lbl_800079D4 -/* 800079C8 00004908 38 80 00 02 */ li r4, 2 -/* 800079CC 0000490C 48 2D 8D 11 */ bl __ct__10JUTGamePadFUl -/* 800079D0 00004910 7C 60 1B 78 */ mr r0, r3 -lbl_800079D4: -/* 800079D4 00004914 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 800079D8 00004918 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l -/* 800079DC 0000491C 90 03 00 08 */ stw r0, 8(r3) -/* 800079E0 00004920 38 60 00 B0 */ li r3, 0xb0 -/* 800079E4 00004924 48 2C 72 69 */ bl __nw__FUl -/* 800079E8 00004928 7C 60 1B 79 */ or. r0, r3, r3 -/* 800079EC 0000492C 41 82 00 10 */ beq lbl_800079FC -/* 800079F0 00004930 38 80 00 03 */ li r4, 3 -/* 800079F4 00004934 48 2D 8C E9 */ bl __ct__10JUTGamePadFUl -/* 800079F8 00004938 7C 60 1B 78 */ mr r0, r3 -lbl_800079FC: -/* 800079FC 0000493C 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 80007A00 00004940 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l -/* 80007A04 00004944 90 03 00 0C */ stw r0, 0xc(r3) -/* 80007A08 00004948 48 00 00 14 */ b lbl_80007A1C -lbl_80007A0C: -/* 80007A0C 0000494C 38 00 00 00 */ li r0, 0 -/* 80007A10 00004950 90 03 00 04 */ stw r0, 4(r3) -/* 80007A14 00004954 90 03 00 08 */ stw r0, 8(r3) -/* 80007A18 00004958 90 03 00 0C */ stw r0, 0xc(r3) -lbl_80007A1C: -/* 80007A1C 0000495C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13) -/* 80007A20 00004960 80 03 00 00 */ lwz r0, 0(r3) -/* 80007A24 00004964 2C 00 00 00 */ cmpwi r0, 0 -/* 80007A28 00004968 40 82 00 1C */ bne lbl_80007A44 -/* 80007A2C 0000496C 38 80 00 00 */ li r4, 0 -/* 80007A30 00004970 98 8D 8F 81 */ stb r4, lbl_80451501-_SDA_BASE_(r13) -.global resetCallBack__6mDoRstFiPv -/* 80007A34 00004974 3C 60 80 01 */ lis r3, resetCallBack__6mDoRstFiPv@ha -.global resetCallBack__6mDoRstFiPv -/* 80007A38 00004978 38 03 57 4C */ addi r0, r3, resetCallBack__6mDoRstFiPv@l -/* 80007A3C 0000497C 90 0D 8F 6C */ stw r0, lbl_804514EC-_SDA_BASE_(r13) -/* 80007A40 00004980 90 8D 8F 70 */ stw r4, lbl_804514F0-_SDA_BASE_(r13) -lbl_80007A44: -/* 80007A44 00004984 38 00 00 03 */ li r0, 3 -/* 80007A48 00004988 90 0D 8F 5C */ stw r0, lbl_804514DC-_SDA_BASE_(r13) -/* 80007A4C 0000498C 38 60 00 03 */ li r3, 3 -/* 80007A50 00004990 48 34 7F C1 */ bl PADSetAnalogMode -/* 80007A54 00004994 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80007A58 00004998 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l -/* 80007A5C 0000499C 7C 04 03 78 */ mr r4, r0 -/* 80007A60 000049A0 38 60 00 00 */ li r3, 0 -/* 80007A64 000049A4 38 00 00 04 */ li r0, 4 -/* 80007A68 000049A8 7C 09 03 A6 */ mtctr r0 -lbl_80007A6C: -/* 80007A6C 000049AC 98 64 00 3A */ stb r3, 0x3a(r4) -/* 80007A70 000049B0 98 64 00 39 */ stb r3, 0x39(r4) -/* 80007A74 000049B4 98 64 00 3C */ stb r3, 0x3c(r4) -/* 80007A78 000049B8 98 64 00 3B */ stb r3, 0x3b(r4) -/* 80007A7C 000049BC 38 84 00 40 */ addi r4, r4, 0x40 -/* 80007A80 000049C0 42 00 FF EC */ bdnz lbl_80007A6C -/* 80007A84 000049C4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80007A88 000049C8 7C 08 03 A6 */ mtlr r0 -/* 80007A8C 000049CC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80007A90 000049D0 4E 80 00 20 */ blr - -.global mDoCPd_c_NS_read -mDoCPd_c_NS_read: -/* 80007A94 000049D4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80007A98 000049D8 7C 08 02 A6 */ mflr r0 -/* 80007A9C 000049DC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80007AA0 000049E0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80007AA4 000049E4 48 35 A7 39 */ bl _savegpr_29 -/* 80007AA8 000049E8 48 2D 8E 3D */ bl read__10JUTGamePadFv -/* 80007AAC 000049EC 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13) -/* 80007AB0 000049F0 80 03 00 00 */ lwz r0, 0(r3) -/* 80007AB4 000049F4 2C 00 00 00 */ cmpwi r0, 0 -/* 80007AB8 000049F8 40 82 00 4C */ bne lbl_80007B04 -/* 80007ABC 000049FC 80 03 00 08 */ lwz r0, 8(r3) -/* 80007AC0 00004A00 2C 00 00 00 */ cmpwi r0, 0 -/* 80007AC4 00004A04 41 82 00 40 */ beq lbl_80007B04 -/* 80007AC8 00004A08 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80007ACC 00004A0C 48 2D 9E D1 */ bl getGamePad__10JUTGamePadFl -/* 80007AD0 00004A10 38 80 00 00 */ li r4, 0 -/* 80007AD4 00004A14 A8 03 00 7C */ lha r0, 0x7c(r3) -/* 80007AD8 00004A18 2C 00 FF FF */ cmpwi r0, -1 -/* 80007ADC 00004A1C 41 82 00 14 */ beq lbl_80007AF0 -/* 80007AE0 00004A20 88 03 00 98 */ lbz r0, 0x98(r3) -/* 80007AE4 00004A24 28 00 00 00 */ cmplwi r0, 0 -/* 80007AE8 00004A28 41 82 00 08 */ beq lbl_80007AF0 -/* 80007AEC 00004A2C 38 80 00 01 */ li r4, 1 -lbl_80007AF0: -/* 80007AF0 00004A30 54 80 06 3F */ clrlwi. r0, r4, 0x18 -/* 80007AF4 00004A34 40 82 00 10 */ bne lbl_80007B04 -/* 80007AF8 00004A38 38 00 00 00 */ li r0, 0 -/* 80007AFC 00004A3C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13) -/* 80007B00 00004A40 90 03 00 08 */ stw r0, 8(r3) -lbl_80007B04: -/* 80007B04 00004A44 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 80007B08 00004A48 38 03 D2 D8 */ addi r0, r3, lbl_803DD2D8@l -/* 80007B0C 00004A4C 7C 1F 03 78 */ mr r31, r0 -/* 80007B10 00004A50 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80007B14 00004A54 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l -/* 80007B18 00004A58 7C 1E 03 78 */ mr r30, r0 -/* 80007B1C 00004A5C 3B A0 00 00 */ li r29, 0 -lbl_80007B20: -/* 80007B20 00004A60 80 9F 00 00 */ lwz r4, 0(r31) -/* 80007B24 00004A64 28 04 00 00 */ cmplwi r4, 0 -/* 80007B28 00004A68 40 82 00 18 */ bne lbl_80007B40 -/* 80007B2C 00004A6C 7F C3 F3 78 */ mr r3, r30 -/* 80007B30 00004A70 38 80 00 00 */ li r4, 0 -/* 80007B34 00004A74 38 A0 00 40 */ li r5, 0x40 -/* 80007B38 00004A78 48 26 7E 25 */ bl cLib_memSet -/* 80007B3C 00004A7C 48 00 00 14 */ b lbl_80007B50 -lbl_80007B40: -/* 80007B40 00004A80 7F C3 F3 78 */ mr r3, r30 -/* 80007B44 00004A84 48 00 00 39 */ bl mDoCPd_c_NS_convert -/* 80007B48 00004A88 7F C3 F3 78 */ mr r3, r30 -/* 80007B4C 00004A8C 48 00 01 85 */ bl mDoCPd_c_NS_LRlockCheck -lbl_80007B50: -/* 80007B50 00004A90 3B BD 00 01 */ addi r29, r29, 1 -/* 80007B54 00004A94 28 1D 00 04 */ cmplwi r29, 4 -/* 80007B58 00004A98 3B FF 00 04 */ addi r31, r31, 4 -/* 80007B5C 00004A9C 3B DE 00 40 */ addi r30, r30, 0x40 -/* 80007B60 00004AA0 41 80 FF C0 */ blt lbl_80007B20 -/* 80007B64 00004AA4 39 61 00 20 */ addi r11, r1, 0x20 -/* 80007B68 00004AA8 48 35 A6 C1 */ bl _restgpr_29 -/* 80007B6C 00004AAC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80007B70 00004AB0 7C 08 03 A6 */ mtlr r0 -/* 80007B74 00004AB4 38 21 00 20 */ addi r1, r1, 0x20 -/* 80007B78 00004AB8 4E 80 00 20 */ blr - -.global mDoCPd_c_NS_convert -mDoCPd_c_NS_convert: -/* 80007B7C 00004ABC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80007B80 00004AC0 80 04 00 18 */ lwz r0, 0x18(r4) -/* 80007B84 00004AC4 90 03 00 30 */ stw r0, 0x30(r3) -/* 80007B88 00004AC8 80 04 00 1C */ lwz r0, 0x1c(r4) -/* 80007B8C 00004ACC 90 03 00 34 */ stw r0, 0x34(r3) -/* 80007B90 00004AD0 C0 04 00 48 */ lfs f0, 0x48(r4) -/* 80007B94 00004AD4 D0 03 00 00 */ stfs f0, 0(r3) -/* 80007B98 00004AD8 C0 04 00 4C */ lfs f0, 0x4c(r4) -/* 80007B9C 00004ADC D0 03 00 04 */ stfs f0, 4(r3) -/* 80007BA0 00004AE0 C0 04 00 50 */ lfs f0, 0x50(r4) -/* 80007BA4 00004AE4 D0 03 00 08 */ stfs f0, 8(r3) -/* 80007BA8 00004AE8 A8 04 00 54 */ lha r0, 0x54(r4) -/* 80007BAC 00004AEC B0 03 00 0C */ sth r0, 0xc(r3) -/* 80007BB0 00004AF0 C0 04 00 58 */ lfs f0, 0x58(r4) -/* 80007BB4 00004AF4 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 80007BB8 00004AF8 C0 04 00 5C */ lfs f0, 0x5c(r4) -/* 80007BBC 00004AFC D0 03 00 14 */ stfs f0, 0x14(r3) -/* 80007BC0 00004B00 C0 04 00 60 */ lfs f0, 0x60(r4) -/* 80007BC4 00004B04 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 80007BC8 00004B08 A8 04 00 64 */ lha r0, 0x64(r4) -/* 80007BCC 00004B0C B0 03 00 1C */ sth r0, 0x1c(r3) -/* 80007BD0 00004B10 88 04 00 24 */ lbz r0, 0x24(r4) -/* 80007BD4 00004B14 C0 42 80 20 */ lfs f2, lbl_80451A20-_SDA2_BASE_(r2) -/* 80007BD8 00004B18 C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) -/* 80007BDC 00004B1C 90 01 00 0C */ stw r0, 0xc(r1) -/* 80007BE0 00004B20 3C 00 43 30 */ lis r0, 0x4330 -/* 80007BE4 00004B24 90 01 00 08 */ stw r0, 8(r1) -/* 80007BE8 00004B28 C8 01 00 08 */ lfd f0, 8(r1) -/* 80007BEC 00004B2C EC 00 08 28 */ fsubs f0, f0, f1 -/* 80007BF0 00004B30 EC 02 00 32 */ fmuls f0, f2, f0 -/* 80007BF4 00004B34 D0 03 00 20 */ stfs f0, 0x20(r3) -/* 80007BF8 00004B38 C0 23 00 20 */ lfs f1, 0x20(r3) -/* 80007BFC 00004B3C C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) -/* 80007C00 00004B40 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007C04 00004B44 40 81 00 08 */ ble lbl_80007C0C -/* 80007C08 00004B48 D0 03 00 20 */ stfs f0, 0x20(r3) -lbl_80007C0C: -/* 80007C0C 00004B4C 88 04 00 25 */ lbz r0, 0x25(r4) -/* 80007C10 00004B50 C0 42 80 20 */ lfs f2, lbl_80451A20-_SDA2_BASE_(r2) -/* 80007C14 00004B54 C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) -/* 80007C18 00004B58 90 01 00 0C */ stw r0, 0xc(r1) -/* 80007C1C 00004B5C 3C 00 43 30 */ lis r0, 0x4330 -/* 80007C20 00004B60 90 01 00 08 */ stw r0, 8(r1) -/* 80007C24 00004B64 C8 01 00 08 */ lfd f0, 8(r1) -/* 80007C28 00004B68 EC 00 08 28 */ fsubs f0, f0, f1 -/* 80007C2C 00004B6C EC 02 00 32 */ fmuls f0, f2, f0 -/* 80007C30 00004B70 D0 03 00 24 */ stfs f0, 0x24(r3) -/* 80007C34 00004B74 C0 23 00 24 */ lfs f1, 0x24(r3) -/* 80007C38 00004B78 C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) -/* 80007C3C 00004B7C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007C40 00004B80 40 81 00 08 */ ble lbl_80007C48 -/* 80007C44 00004B84 D0 03 00 24 */ stfs f0, 0x24(r3) -lbl_80007C48: -/* 80007C48 00004B88 88 04 00 26 */ lbz r0, 0x26(r4) -/* 80007C4C 00004B8C C0 42 80 28 */ lfs f2, lbl_80451A28-_SDA2_BASE_(r2) -/* 80007C50 00004B90 C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) -/* 80007C54 00004B94 90 01 00 0C */ stw r0, 0xc(r1) -/* 80007C58 00004B98 3C 00 43 30 */ lis r0, 0x4330 -/* 80007C5C 00004B9C 90 01 00 08 */ stw r0, 8(r1) -/* 80007C60 00004BA0 C8 01 00 08 */ lfd f0, 8(r1) -/* 80007C64 00004BA4 EC 00 08 28 */ fsubs f0, f0, f1 -/* 80007C68 00004BA8 EC 02 00 32 */ fmuls f0, f2, f0 -/* 80007C6C 00004BAC D0 03 00 28 */ stfs f0, 0x28(r3) -/* 80007C70 00004BB0 C0 23 00 28 */ lfs f1, 0x28(r3) -/* 80007C74 00004BB4 C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) -/* 80007C78 00004BB8 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007C7C 00004BBC 40 81 00 08 */ ble lbl_80007C84 -/* 80007C80 00004BC0 D0 03 00 28 */ stfs f0, 0x28(r3) -lbl_80007C84: -/* 80007C84 00004BC4 88 04 00 27 */ lbz r0, 0x27(r4) -/* 80007C88 00004BC8 C0 42 80 28 */ lfs f2, lbl_80451A28-_SDA2_BASE_(r2) -/* 80007C8C 00004BCC C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) -/* 80007C90 00004BD0 90 01 00 0C */ stw r0, 0xc(r1) -/* 80007C94 00004BD4 3C 00 43 30 */ lis r0, 0x4330 -/* 80007C98 00004BD8 90 01 00 08 */ stw r0, 8(r1) -/* 80007C9C 00004BDC C8 01 00 08 */ lfd f0, 8(r1) -/* 80007CA0 00004BE0 EC 00 08 28 */ fsubs f0, f0, f1 -/* 80007CA4 00004BE4 EC 02 00 32 */ fmuls f0, f2, f0 -/* 80007CA8 00004BE8 D0 03 00 2C */ stfs f0, 0x2c(r3) -/* 80007CAC 00004BEC C0 23 00 2C */ lfs f1, 0x2c(r3) -/* 80007CB0 00004BF0 C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) -/* 80007CB4 00004BF4 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007CB8 00004BF8 40 81 00 08 */ ble lbl_80007CC0 -/* 80007CBC 00004BFC D0 03 00 2C */ stfs f0, 0x2c(r3) -lbl_80007CC0: -/* 80007CC0 00004C00 88 04 00 7E */ lbz r0, 0x7e(r4) -/* 80007CC4 00004C04 98 03 00 38 */ stb r0, 0x38(r3) -/* 80007CC8 00004C08 38 21 00 10 */ addi r1, r1, 0x10 -/* 80007CCC 00004C0C 4E 80 00 20 */ blr - -.global mDoCPd_c_NS_LRlockCheck -mDoCPd_c_NS_LRlockCheck: -/* 80007CD0 00004C10 C0 23 00 28 */ lfs f1, 0x28(r3) -/* 80007CD4 00004C14 38 00 00 00 */ li r0, 0 -/* 80007CD8 00004C18 98 03 00 3A */ stb r0, 0x3a(r3) -/* 80007CDC 00004C1C 98 03 00 3C */ stb r0, 0x3c(r3) -/* 80007CE0 00004C20 3C 80 80 3F */ lis r4, lbl_803F1BBC@ha -/* 80007CE4 00004C24 38 84 1B BC */ addi r4, r4, lbl_803F1BBC@l -/* 80007CE8 00004C28 C0 04 00 0C */ lfs f0, 0xc(r4) -/* 80007CEC 00004C2C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007CF0 00004C30 40 81 00 24 */ ble lbl_80007D14 -/* 80007CF4 00004C34 88 03 00 39 */ lbz r0, 0x39(r3) -/* 80007CF8 00004C38 28 00 00 01 */ cmplwi r0, 1 -/* 80007CFC 00004C3C 41 82 00 0C */ beq lbl_80007D08 -/* 80007D00 00004C40 38 00 00 01 */ li r0, 1 -/* 80007D04 00004C44 98 03 00 3A */ stb r0, 0x3a(r3) -lbl_80007D08: -/* 80007D08 00004C48 38 00 00 01 */ li r0, 1 -/* 80007D0C 00004C4C 98 03 00 39 */ stb r0, 0x39(r3) -/* 80007D10 00004C50 48 00 00 14 */ b lbl_80007D24 -lbl_80007D14: -/* 80007D14 00004C54 C0 04 00 10 */ lfs f0, 0x10(r4) -/* 80007D18 00004C58 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007D1C 00004C5C 40 80 00 08 */ bge lbl_80007D24 -/* 80007D20 00004C60 98 03 00 39 */ stb r0, 0x39(r3) -lbl_80007D24: -/* 80007D24 00004C64 C0 23 00 2C */ lfs f1, 0x2c(r3) -/* 80007D28 00004C68 C0 04 00 0C */ lfs f0, 0xc(r4) -/* 80007D2C 00004C6C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007D30 00004C70 40 81 00 24 */ ble lbl_80007D54 -/* 80007D34 00004C74 88 03 00 3B */ lbz r0, 0x3b(r3) -/* 80007D38 00004C78 28 00 00 01 */ cmplwi r0, 1 -/* 80007D3C 00004C7C 41 82 00 0C */ beq lbl_80007D48 -/* 80007D40 00004C80 38 00 00 01 */ li r0, 1 -/* 80007D44 00004C84 98 03 00 3C */ stb r0, 0x3c(r3) -lbl_80007D48: -/* 80007D48 00004C88 38 00 00 01 */ li r0, 1 -/* 80007D4C 00004C8C 98 03 00 3B */ stb r0, 0x3b(r3) -/* 80007D50 00004C90 4E 80 00 20 */ blr -lbl_80007D54: -/* 80007D54 00004C94 3C 80 80 3F */ lis r4, lbl_803F1BBC@ha -/* 80007D58 00004C98 38 84 1B BC */ addi r4, r4, lbl_803F1BBC@l -/* 80007D5C 00004C9C C0 04 00 10 */ lfs f0, 0x10(r4) -/* 80007D60 00004CA0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80007D64 00004CA4 4C 80 00 20 */ bgelr -/* 80007D68 00004CA8 38 00 00 00 */ li r0, 0 -/* 80007D6C 00004CAC 98 03 00 3B */ stb r0, 0x3b(r3) -/* 80007D70 00004CB0 4E 80 00 20 */ blr - -.global mDoCPd_c_NS_recalibrate -mDoCPd_c_NS_recalibrate: -/* 80007D74 00004CB4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80007D78 00004CB8 7C 08 02 A6 */ mflr r0 -/* 80007D7C 00004CBC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80007D80 00004CC0 48 2D 92 A5 */ bl clearForReset__10JUTGamePadFv -/* 80007D84 00004CC4 3C 60 F0 00 */ lis r3, 0xf000 -/* 80007D88 00004CC8 48 2D 9C 51 */ bl setEnabled__Q210JUTGamePad7CRumbleF7PADMask -/* 80007D8C 00004CCC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80007D90 00004CD0 7C 08 03 A6 */ mtlr r0 -/* 80007D94 00004CD4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80007D98 00004CD8 4E 80 00 20 */ blr - diff --git a/asm/m/Do/m_Do_graphic.s b/asm/m/Do/m_Do_graphic.s index 41fcee8ff97..fad1467d891 100644 --- a/asm/m/Do/m_Do_graphic.s +++ b/asm/m/Do/m_Do_graphic.s @@ -29,7 +29,7 @@ createTimg: lbl_80007DF0: /* 80007DF0 00004D30 38 80 00 00 */ li r4, 0 /* 80007DF4 00004D34 7F E5 FB 78 */ mr r5, r31 -/* 80007DF8 00004D38 48 26 7B 65 */ bl cLib_memSet +/* 80007DF8 00004D38 48 26 7B 65 */ bl cLib_memSet__FPviUl /* 80007DFC 00004D3C 9B BE 00 00 */ stb r29, 0(r30) /* 80007E00 00004D40 38 00 00 00 */ li r0, 0 /* 80007E04 00004D44 98 1E 00 01 */ stb r0, 1(r30) @@ -487,8 +487,8 @@ dScnPly_BeforeOfPaint: /* 80008474 000053B4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80008478 000053B8 7C 08 02 A6 */ mflr r0 /* 8000847C 000053BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80008480 000053C0 3C 60 80 3F */ lis r3, lbl_803F1BBC@ha -/* 80008484 000053C4 38 A3 1B BC */ addi r5, r3, lbl_803F1BBC@l +/* 80008480 000053C0 3C 60 80 3F */ lis r3, g_HIO@ha +/* 80008484 000053C4 38 A3 1B BC */ addi r5, r3, g_HIO@l /* 80008488 000053C8 88 C5 00 16 */ lbz r6, 0x16(r5) /* 8000848C 000053CC 54 C0 07 BD */ rlwinm. r0, r6, 0, 0x1e, 0x1e /* 80008490 000053D0 41 82 00 28 */ beq lbl_800084B8 diff --git a/asm/m/Do/m_Do_machine.s b/asm/m/Do/m_Do_machine.s index 936d9648bd3..d9ac51f48cc 100644 --- a/asm/m/Do/m_Do_machine.s +++ b/asm/m/Do/m_Do_machine.s @@ -472,7 +472,7 @@ lbl_8000B828: /* 8000B838 00008778 40 82 00 CC */ bne lbl_8000B904 /* 8000B83C 0000877C 38 61 00 10 */ addi r3, r1, 0x10 /* 8000B840 00008780 38 80 00 00 */ li r4, 0 -/* 8000B844 00008784 48 2D 4E 99 */ bl __ct__10JUTGamePadFUl +/* 8000B844 00008784 48 2D 4E 99 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort /* 8000B848 00008788 38 01 00 10 */ addi r0, r1, 0x10 /* 8000B84C 0000878C 90 1F 00 84 */ stw r0, 0x84(r31) /* 8000B850 00008790 38 00 FF FF */ li r0, -1 @@ -581,7 +581,7 @@ fault_callback_scroll: lbl_8000B9CC: /* 8000B9CC 0000890C 38 61 00 10 */ addi r3, r1, 0x10 /* 8000B9D0 00008910 38 80 00 00 */ li r4, 0 -/* 8000B9D4 00008914 48 2D 4D 09 */ bl __ct__10JUTGamePadFUl +/* 8000B9D4 00008914 48 2D 4D 09 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort /* 8000B9D8 00008918 38 01 00 10 */ addi r0, r1, 0x10 /* 8000B9DC 0000891C 90 1C 00 84 */ stw r0, 0x84(r28) /* 8000B9E0 00008920 38 00 FF FF */ li r0, -1 diff --git a/asm/sbss.s b/asm/sbss.s index 1af2f87906d..6ed262aecc8 100644 --- a/asm/sbss.s +++ b/asm/sbss.s @@ -1745,8 +1745,8 @@ lbl_804514D4: .global lbl_804514D8 lbl_804514D8: .skip 0x4 -.global lbl_804514DC -lbl_804514DC: +.global sAnalogMode +sAnalogMode: .skip 0x4 .global lbl_804514E0 lbl_804514E0: diff --git a/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h index e6a0ee090fd..49248000836 100644 --- a/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h +++ b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h @@ -7,13 +7,14 @@ #include "os/OS.h" #include "pad/pad.h" -typedef u32 EPadPort; typedef u32 EStickMode; typedef u32 EWhichStick; -class JUTGamePad : public JKRDisposer { +struct JUTGamePad : public JKRDisposer { public: - JUTGamePad(EPadPort port); + // typedef u32 EPadPort; + enum EPadPort { Port_1 = 0, Port_2 = 0, Port_3 = 0, Port_4 = 0 }; + JUTGamePad(JUTGamePad::EPadPort port); virtual ~JUTGamePad(); void initList(); @@ -26,7 +27,7 @@ public: void stopPatternedRumble() { this->rumble.stopPatternedRumble(this->pad_port); } static void checkResetSwitch(); static void clearForReset(); - static JUTGamePad* getGamePad(s32 pad_index); + static JUTGamePad* getGamePad(int pad_index); static bool recalibrate(PADMask pad_mask); struct CButton { @@ -91,7 +92,6 @@ public: u8* field_0x10; }; -private: CButton buttons; CStick control_stick; CStick c_stick; @@ -135,7 +135,7 @@ extern float lbl_80456028; // JUTGamePad::CStick::clear() init to extern bool lbl_804514E4[4]; // JUTGamePad::CRumble::mStatus (static?) extern PADMask lbl_804514E8; // JUTGamePad::CRumble::mEnabled (static?) extern PADMask lbl_803CC5F0[4]; // JUTGamePad::CRumble::sChannelMask -extern s32 lbl_804514DC; // JUTGamePad::sAnalogMode +extern s32 sAnalogMode; // JUTGamePad::sAnalogMode extern bool lbl_804514D0; // JUTGamePad::mIsPadListInitialized extern JSUList lbl_804343E4; // JUTGamePad::mPadList // extern JSUPtrList lbl_804343E4; // JUTGamePad::mPadList diff --git a/include/c/cLib.h b/include/c/cLib.h new file mode 100644 index 00000000000..0d19c4467dc --- /dev/null +++ b/include/c/cLib.h @@ -0,0 +1 @@ +void cLib_memSet(void* ptr, int value, unsigned long size); \ No newline at end of file diff --git a/include/d/d_a/d_a_alink/asm/func_800B271C.s b/include/d/d_a/d_a_alink/asm/func_800B271C.s index 9650bf81cf4..5dbfdc6215e 100644 --- a/include/d/d_a/d_a_alink/asm/func_800B271C.s +++ b/include/d/d_a/d_a_alink/asm/func_800B271C.s @@ -187,8 +187,8 @@ lbl_800B29B0: /* 800B29C4 000AF904 B0 7E 2F E0 */ sth r3, 0x2fe0(r30) /* 800B29C8 000AF908 48 00 00 24 */ b lbl_800B29EC lbl_800B29CC: -/* 800B29CC 000AF90C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 800B29D0 000AF910 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 800B29CC 000AF90C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 800B29D0 000AF910 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 800B29D4 000AF914 C0 03 00 08 */ lfs f0, 8(r3) /* 800B29D8 000AF918 D0 1E 33 A8 */ stfs f0, 0x33a8(r30) /* 800B29DC 000AF91C A8 63 00 0C */ lha r3, 0xc(r3) @@ -264,8 +264,8 @@ lbl_800B2AD4: /* 800B2AD4 000AFA14 38 00 00 01 */ li r0, 1 /* 800B2AD8 000AFA18 98 1E 2F B9 */ stb r0, 0x2fb9(r30) lbl_800B2ADC: -/* 800B2ADC 000AFA1C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 800B2AE0 000AFA20 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 800B2ADC 000AFA1C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 800B2AE0 000AFA20 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 800B2AE4 000AFA24 80 03 00 34 */ lwz r0, 0x34(r3) /* 800B2AE8 000AFA28 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 /* 800B2AEC 000AFA2C 41 82 00 10 */ beq lbl_800B2AFC @@ -308,8 +308,8 @@ lbl_800B2B5C: /* 800B2B6C 000AFAAC 60 00 00 20 */ ori r0, r0, 0x20 /* 800B2B70 000AFAB0 98 1E 2F 8D */ stb r0, 0x2f8d(r30) lbl_800B2B74: -/* 800B2B74 000AFAB4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 800B2B78 000AFAB8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 800B2B74 000AFAB4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 800B2B78 000AFAB8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 800B2B7C 000AFABC 88 03 00 3C */ lbz r0, 0x3c(r3) /* 800B2B80 000AFAC0 28 00 00 00 */ cmplwi r0, 0 /* 800B2B84 000AFAC4 41 82 00 10 */ beq lbl_800B2B94 @@ -317,8 +317,8 @@ lbl_800B2B74: /* 800B2B8C 000AFACC 60 00 00 40 */ ori r0, r0, 0x40 /* 800B2B90 000AFAD0 98 1E 2F 8D */ stb r0, 0x2f8d(r30) lbl_800B2B94: -/* 800B2B94 000AFAD4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 800B2B98 000AFAD8 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 800B2B94 000AFAD4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 800B2B98 000AFAD8 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 800B2B9C 000AFADC 80 03 00 30 */ lwz r0, 0x30(r3) /* 800B2BA0 000AFAE0 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 800B2BA4 000AFAE4 41 82 00 10 */ beq lbl_800B2BB4 @@ -361,8 +361,8 @@ lbl_800B2C14: /* 800B2C24 000AFB64 60 00 00 20 */ ori r0, r0, 0x20 /* 800B2C28 000AFB68 98 1E 2F 8E */ stb r0, 0x2f8e(r30) lbl_800B2C2C: -/* 800B2C2C 000AFB6C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 800B2C30 000AFB70 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 800B2C2C 000AFB6C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 800B2C30 000AFB70 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 800B2C34 000AFB74 88 03 00 3B */ lbz r0, 0x3b(r3) /* 800B2C38 000AFB78 28 00 00 00 */ cmplwi r0, 0 /* 800B2C3C 000AFB7C 41 82 00 10 */ beq lbl_800B2C4C diff --git a/include/d/d_a/d_a_alink/asm/func_80117CF8.s b/include/d/d_a/d_a_alink/asm/func_80117CF8.s index d21c18f4ff3..b0e6cc4dbc6 100644 --- a/include/d/d_a/d_a_alink/asm/func_80117CF8.s +++ b/include/d/d_a/d_a_alink/asm/func_80117CF8.s @@ -170,8 +170,8 @@ lbl_80117F4C: /* 80117F60 00114EA0 28 00 00 F2 */ cmplwi r0, 0xf2 /* 80117F64 00114EA4 40 82 00 64 */ bne lbl_80117FC8 lbl_80117F68: -/* 80117F68 00114EA8 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80117F6C 00114EAC 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80117F68 00114EA8 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80117F6C 00114EAC 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80117F70 00114EB0 C0 03 00 08 */ lfs f0, 8(r3) /* 80117F74 00114EB4 D0 1C 33 A8 */ stfs f0, 0x33a8(r28) /* 80117F78 00114EB8 A8 63 00 0C */ lha r3, 0xc(r3) diff --git a/include/d/d_a/d_a_alink/asm/func_80130BC4.s b/include/d/d_a/d_a_alink/asm/func_80130BC4.s index 246ba3cb5b2..7c794c0e0fa 100644 --- a/include/d/d_a/d_a_alink/asm/func_80130BC4.s +++ b/include/d/d_a/d_a_alink/asm/func_80130BC4.s @@ -108,8 +108,8 @@ lbl_80130D38: /* 80130D4C 0012DC8C D0 1F 34 7C */ stfs f0, 0x347c(r31) /* 80130D50 0012DC90 48 00 05 54 */ b lbl_801312A4 lbl_80130D54: -/* 80130D54 0012DC94 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80130D58 0012DC98 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80130D54 0012DC94 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80130D58 0012DC98 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80130D5C 0012DC9C 80 03 00 30 */ lwz r0, 0x30(r3) /* 80130D60 0012DCA0 54 1A C7 FE */ rlwinm r26, r0, 0x18, 0x1f, 0x1f /* 80130D64 0012DCA4 A8 1F 30 10 */ lha r0, 0x3010(r31) @@ -252,8 +252,8 @@ lbl_80130F24: /* 80130F4C 0012DE8C 4B FF 87 8D */ bl daAlink_c_NS_setSingleAnimeWolfBaseSpeed lbl_80130F50: /* 80130F50 0012DE90 AB 3F 30 0E */ lha r25, 0x300e(r31) -/* 80130F54 0012DE94 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80130F58 0012DE98 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 80130F54 0012DE94 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80130F58 0012DE98 38 63 D2 E8 */ addi r3, r3, m_cpadInfo@l /* 80130F5C 0012DE9C C3 E3 00 04 */ lfs f31, 4(r3) /* 80130F60 0012DEA0 38 7F 2D 84 */ addi r3, r31, 0x2d84 /* 80130F64 0012DEA4 C0 22 92 C0 */ lfs f1, lbl_80452CC0-_SDA2_BASE_(r2) diff --git a/include/d/d_attention/asm/func_80070018.s b/include/d/d_attention/asm/func_80070018.s index 8d9d9e89666..09c0e118aee 100644 --- a/include/d/d_attention/asm/func_80070018.s +++ b/include/d/d_attention/asm/func_80070018.s @@ -1,6 +1,6 @@ /* 80070018 0006CF58 54 64 30 32 */ slwi r4, r3, 6 -/* 8007001C 0006CF5C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80070020 0006CF60 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 8007001C 0006CF5C 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80070020 0006CF60 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80070024 0006CF64 7C 60 22 14 */ add r3, r0, r4 /* 80070028 0006CF68 88 63 00 39 */ lbz r3, 0x39(r3) /* 8007002C 0006CF6C 30 03 FF FF */ addic r0, r3, -1 diff --git a/include/d/d_attention/asm/func_800725F0.s b/include/d/d_attention/asm/func_800725F0.s index a966a8e1709..d5ca4e08e3a 100644 --- a/include/d/d_attention/asm/func_800725F0.s +++ b/include/d/d_attention/asm/func_800725F0.s @@ -77,8 +77,8 @@ lbl_80072700: /* 80072708 0006F648 40 82 00 80 */ bne lbl_80072788 /* 8007270C 0006F64C 80 1F 00 0C */ lwz r0, 0xc(r31) /* 80072710 0006F650 54 04 30 32 */ slwi r4, r0, 6 -/* 80072714 0006F654 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80072718 0006F658 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 80072714 0006F654 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80072718 0006F658 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 8007271C 0006F65C 7C 60 22 14 */ add r3, r0, r4 /* 80072720 0006F660 C0 23 00 04 */ lfs f1, 4(r3) /* 80072724 0006F664 C0 02 8C 34 */ lfs f0, lbl_80452634-_SDA2_BASE_(r2) diff --git a/include/d/d_lib/asm/CSTControl_NS_getAngleStick.s b/include/d/d_lib/asm/CSTControl_NS_getAngleStick.s index 5c23cbcdb12..7a1506f5183 100644 --- a/include/d/d_lib/asm/CSTControl_NS_getAngleStick.s +++ b/include/d/d_lib/asm/CSTControl_NS_getAngleStick.s @@ -1,4 +1,4 @@ -/* 8003218C 0002F0CC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80032190 0002F0D0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8003218C 0002F0CC 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 80032190 0002F0D0 38 63 D2 E8 */ addi r3, r3, m_gamePad@l /* 80032194 0002F0D4 A8 63 00 1C */ lha r3, 0x1c(r3) /* 80032198 0002F0D8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_lib/asm/CSTControl_NS_getValueStick.s b/include/d/d_lib/asm/CSTControl_NS_getValueStick.s index 29cc3cf3807..527d15f68e0 100644 --- a/include/d/d_lib/asm/CSTControl_NS_getValueStick.s +++ b/include/d/d_lib/asm/CSTControl_NS_getValueStick.s @@ -1,4 +1,4 @@ -/* 8003217C 0002F0BC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80032180 0002F0C0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8003217C 0002F0BC 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 80032180 0002F0C0 38 63 D2 E8 */ addi r3, r3, m_gamePad@l /* 80032184 0002F0C4 C0 23 00 18 */ lfs f1, 0x18(r3) /* 80032188 0002F0C8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_lib/asm/getAngleStick.s b/include/d/d_lib/asm/getAngleStick.s index 9dbeb5956cf..0d172af9857 100644 --- a/include/d/d_lib/asm/getAngleStick.s +++ b/include/d/d_lib/asm/getAngleStick.s @@ -1,4 +1,4 @@ -/* 8003216C 0002F0AC 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80032170 0002F0B0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8003216C 0002F0AC 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 80032170 0002F0B0 38 63 D2 E8 */ addi r3, r3, m_gamePad@l /* 80032174 0002F0B4 A8 63 00 0C */ lha r3, 0xc(r3) /* 80032178 0002F0B8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_lib/asm/getValueStick.s b/include/d/d_lib/asm/getValueStick.s index 34ce1f701be..9e3a2744f4e 100644 --- a/include/d/d_lib/asm/getValueStick.s +++ b/include/d/d_lib/asm/getValueStick.s @@ -1,4 +1,4 @@ -/* 8003215C 0002F09C 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80032160 0002F0A0 38 63 D2 E8 */ addi r3, r3, lbl_803DD2E8@l +/* 8003215C 0002F09C 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 80032160 0002F0A0 38 63 D2 E8 */ addi r3, r3, m_gamePad@l /* 80032164 0002F0A4 C0 23 00 08 */ lfs f1, 8(r3) /* 80032168 0002F0A8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_lib/d_lib.h b/include/d/d_lib/d_lib.h index fa426d0d311..bc7e249f2c8 100644 --- a/include/d/d_lib/d_lib.h +++ b/include/d/d_lib/d_lib.h @@ -54,16 +54,6 @@ struct CSTControl { s16 getAngleStick(); }; -struct m_cpadInfo { - u8 p1[0x8]; - f32 stickValue; - s16 stickAngle; - u8 p2[0x8]; - f32 CstickValue; - s16 CstickAngle; - u8 p3[0xE2]; -}; - u32 dLib_getEventSwitchNo(int param_1); struct fopAc_ac_c; diff --git a/include/functions.h b/include/functions.h index ef68c683cdb..f1e3146a487 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1,3 +1,268 @@ +extern "C" { +void read__8mDoCPd_cFv(void); +void create__8mDoCPd_cFv(void); +void __ct__10JUTGamePadFQ210JUTGamePad8EPadPort(void); +void convert__8mDoCPd_cFP27interface_of_controller_padP10JUTGamePad(void); +void cLib_memSet__FPviUl(void); +void JUTGamePad_NS_clearForReset(void); +void JUTGamePad_NS_CRumble_NS_setEnabled(void); +void LRlockCheck__8mDoCPd_cFP27interface_of_controller_pad(void); +void mDoCPd_c_NS_recalibrate(void); +void mDoCPd_c_NS_convert(void); +void getGamePad__10JUTGamePadFi(void); +void read__10JUTGamePadFv(void); +void mDoCPd_c_NS_LRlockCheck(void); +void mDoRst_resetCallBack(void); +void J2DScreen_NS_draw(void); +void PSMTXCopy(void); +void PSMTXConcat(void); +void PSMTXScale(void); +void screenSet__12dFile_info_cFv(void); +void dFile_info_c_NS_screenSet(void); +void mDoExt_removeMesgFont(void); +void func_80362210(void); +void JKRAramHeap_NS_getTotalFreeSize(void); +void JKRAramHeap_NS_getFreeSize(void); +void heapDisplay__9HeapCheckCFv(void); +void func_803621C4(void); +void init__20dSv_player_collect_cFv(void); +void dComIfGp_setSelectItem(int); +void getUsedCount__9HeapCheckCFv(void); +void isEventBit__11dSv_event_cCFUs(void); +void dComIfGs_setMixItemIndex(void); +void dComIfGs_setSelectItemIndex(void); +void dComIfGs_getMixItemIndex(void); +char* strcpy(char*, const char*); +int strcmp(char*, char*); +void setBombNum__21dSv_player_item_max_cFUcUc(void); +void func_80362224(void); +void func_803621D8(void); +void func_803621CC(void); +void func_80362218(void); +void _restgpr_26(void); +void _savegpr_26(void); +void func_8036221C(void); +void func_803621D0(void); +void func_803620AC(void); +void func_803626BC(void); +void func_803664DC(void); +void _restgpr_29(void); +void _savegpr_29(void); +void _restgpr_28(void); +void _savegpr_28(void); +void _restgpr_27(void); +void _savegpr_27(void); +void _savegpr_26(void); +void _restgpr_26(void); +void JKRAramHeap_NS_dump(void); +void dRes_control_c_NS_dump(void); +void JUTConsole_NS_getLineOffset(void); +void JUTConsole_NS_dumpToTerminal(void); +void JUTConsole_NS_scroll(void); +void JUTConsole_NS_clear(void); +void JUTReport_X1_(void); +void JUTAssertion_NS_setMessageCount(void); +void DynamicModuleControlBase_NS_dump(void); +void _restgpr_25(void); +unsigned int getSelectItemIndex__21dSv_player_status_a_cCFi(int); +void setLineUpItem__17dSv_player_item_cFv(void); +void dMeter2Info_c_NS_setHotSpringTimer(void); +void setItem__17dSv_player_item_cFiUc(void); +void dSv_item_rename__FUc(void); +void setBottleItemIn__17dSv_player_item_cFUcUc(void); +void getItem__17dSv_player_item_cCFib(void); +void setEquipBottleItemIn__17dSv_player_item_cFUcUc(u8, u8); +void isFirstBit__21dSv_player_get_item_cCFUc(void); +void setBombNum__24dSv_player_item_record_cFUcUc(void); +void setItem__17dSv_player_item_cFiUc(void); +void dMeter2Info_c_NS_getString(void); +void dComIfG_play_c_NS_getNowVibration(void); +void setInitEventBit(void); +void daObjCarry_c_NS_clrSaveFlag(void); +void daObjCarry_c_NS_setSaveFlag(void); +void init__14dSv_MiniGame_cFv(void); +void init__11dSv_event_cFv(void); +void init__13dSv_memory2_cFv(void); +void init__12dSv_memory_cFv(void); +void init__12dSv_player_cFv(void); +void init__10dSv_info_cFvZone(void); +void init__10dSv_zone_cFi(void); +void onOneSwitch__13dSv_zoneBit_cFi(void); +void onSwitch__13dSv_zoneBit_cFi(void); +int dStage_roomControl_c_NS_getZoneNo(int, int); +void onSwitch__12dSv_danBit_cFi(void); +void onSwitch__12dSv_memBit_cFi(void); +void revOneSwitch__13dSv_zoneBit_cFi(void); +void revSwitch__13dSv_zoneBit_cFi(void); +void revSwitch__12dSv_danBit_cFi(void); +void revSwitch__12dSv_memBit_cFi(void); +void isOneSwitch__13dSv_zoneBit_cCFi(void); +void isSwitch__13dSv_zoneBit_cCFi(void); +void isSwitch__12dSv_danBit_cCFi(void); +void isSwitch__12dSv_memBit_cCFi(void); +void isOneItem__13dSv_zoneBit_cCFi(void); +void isItem__13dSv_zoneBit_cCFi(void); +void isItem__12dSv_memBit_cCFi(void); +void isItem__12dSv_danBit_cCFi(void); +void off__15dSv_zoneActor_cFi(void); +void is__15dSv_zoneActor_cCFi(void); +void func_8036220C(void); +void onEventBit__11dSv_event_cFUs(void); +void func_8036687C(void); +void func_80003540(void); +void func_80362324(void); +void func_8036221C(void); +void func_8036221C(void); +void countUsed__FP10JKRExpHeap(void); +void JUTReport(void); +void func_803621D0(void); +void offEventBit__11dSv_event_cFUs(void); +void func_803621C0(void); +void dMeter2Info_c_NS_setSaveStageName(void); +void dComIfG_play_c_NS_setNowVibration(void); +void getVibration__19dSv_player_config_cFv(void); +void dComIfGs_setKeyNum(void); +void getSound__19dSv_player_config_cFv(void); +void setSound__19dSv_player_config_cFUc(void); +void getTotalUsedSize__10JKRExpHeapCFv(void); +void HeapCheck_NS_getUsedCount(void); +void CheckHeap1__9HeapCheckFv(void); +void JUTException_NS_panic_f(const char* filename, int line, const char* format, ...); +void Debug_console__FUl(void); +void debugDisplay__Fv(void); +void CheckHeap__FUl(void); +void debug__Fv(void); +void mDoAud_Execute(void); +void fapGm_Execute(void); +void mDoMemCd_Ctrl_c_NS_update(void); +void JKRSolidHeap_NS_create(void); +void cDyl_InitAsync(void); +void fopAcM_initManager(void); +void fapGm_Create(void); +void mDoDvdThd_callback_c_NS_create(void); +void mDoExt_getCommandHeap(void); +void mDoExt_getHostIOHeap(void); +void mDoExt_getJ2dHeap(void); +void mDoExt_getArchiveHeap(void); +void mDoExt_getGameHeap(void); +void mDoExt_getZeldaHeap(void); +void mDoCPd_c_NS_create(void); +void mDoGph_Create(void); +void mDoMch_Create(void); +void init__10dSv_save_cFv(void); +void func_80361D60(void); +void dComIfG_inf_c_NS_ct(void); +void version_check__Fv(void); +void J2DTextBox_NS_getStringPtr(void); +void J2DTextBox_NS_setString_X1_(void); +void CPaneMgrAlpha_X1_(void); +void mDoExt_getMesgFont(void); +void J2DScreen_NS_setPriority(void); +void __ct__9J2DScreenFv(void); +void dFile_info_c_NS_setPlayTime(void); +void dFile_info_c_NS_setSaveDate(void); +void dFile_info_c_NS_setHeartCnt(void); +void setHeartCnt__12dFile_info_cFP10dSv_save_c(void); +void setSaveDate__12dFile_info_cFP10dSv_save_c(void); +void func_803664DC(void); +void setPlayTime__12dFile_info_cFP10dSv_save_c(void); +void func_80362540(void); +void dDlst_list_c_NS_set(void); +void init__14dComIfG_play_cFv(void); +void func_80003458(void); +void dStage_roomControl_c_NS_initZone(void); +void JUTWarningConsole(void); +void JUTConsole_NS_print(void); +void JUTConsole_NS_check(void); +void JUTConsole_NS_print_f(void); +void JUTConsole_NS_clear(void); +void JUTReportConsole_f(void); +void JUTWarningConsole(void); +void JUTWarningConsole_f(void); + +void func_803621CC(void); +void VIWaitForRetrace(void); +void func_80361C24(void); + +void _restgpr_26(void); +void _restgpr_27(void); +void _restgpr_28(void); +void _restgpr_29(void); +void _savegpr_26(void); +void _savegpr_27(void); +void _savegpr_28(void); +void _savegpr_29(void); +void func_80003540(void); +void func_80365470(void); +void func_803688DC(void); +void func_80368ABC(void); +void func_80368BE4(void); +void JKRArchive_NS_getDirEntry(void); + +void _restgpr_29(void); +void _savegpr_29(void); +void func_80361C24(void); + +void func_803621CC(void); +void func_80362218(void); + +void JKRArchive_NS_findDirectory(void); +void JKRArchive_NS_findFsResource(void); +void JKRArchive_NS_findIdResource(void); +void JKRArchive_NS_findIdxResource(void); +void JKRArchive_NS_findNameResource(void); +void JKRArchive_NS_findPtrResource(void); +void JKRArchive_NS_findTypeResource(void); +void JKRCompArchive(void); + +void func_80365470(void); + +void DCInvalidateRange(void); +void JKRDvdRipper_NS_loadToMainRAM_X1_(void); +void func_80003458(void); +void func_803621CC(void); +void func_80362218(void); +void func_803650D0(void); + +void JKRDecomp_NS_orderSync(void); +void func_80003540(void); + +void JKRAramHeap_NS_alloc(void); +void JKRAram_NS_aramToMainRam(void); +void JKRDvdAramRipper_NS_loadToAram(void); +void JKRAram_NS_mainRamToAram(void); +void JKRAramPiece_NS_sendCommand(void); + +void DCInvalidateRange(void); +void DCStoreRangeNoSync(void); +void __RAS_OSDisableInterrupts_begin(void); +void func_80003540(void); +void func_80361C24(void); +void func_803621B0(void); +void func_803621C4(void); +void func_803621C8(void); +void func_803621FC(void); +void func_80362210(void); +void func_80362214(void); + +void ARQPostRequest(void); +void DCStoreRange(void); + +void JSUInputStream_NS_read(void); +void JSURandomInputStream_NS_seek(void); + +void DCInvalidateRange(void); +void JSUInputStream_NS_dtor(void); +void JSUFileInputStream_ct(void); + +void ARAlloc(void); +void ARGetSize(void); +void ARInit(void); +void ARQInit(void); +void DCStoreRangeNoSync(void); +void __RAS_OSDisableInterrupts_begin(void); +u8 dComIfGs_getBottleMax(void); +} #include "os/OS.h" extern "C" { diff --git a/include/m_Do/m_Do_Reset/m_Do_Reset.h b/include/m_Do/m_Do_Reset/m_Do_Reset.h index b7786248502..ab3b2d8f27d 100644 --- a/include/m_Do/m_Do_Reset/m_Do_Reset.h +++ b/include/m_Do/m_Do_Reset/m_Do_Reset.h @@ -22,7 +22,6 @@ struct ResetData { u8 field_0x16; u8 field_0x17; }; -extern ResetData* m_Do_Reset_NS_mDoRst_NS_mResetData; struct mDoRst { ResetData* getResetData(); diff --git a/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_LRlockCheck.s b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_LRlockCheck.s new file mode 100644 index 00000000000..d04eb91db85 --- /dev/null +++ b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_LRlockCheck.s @@ -0,0 +1,46 @@ +/* 80007CD0 00004C10 C0 23 00 28 */ lfs f1, 0x28(r3) +/* 80007CD4 00004C14 38 00 00 00 */ li r0, 0 +/* 80007CD8 00004C18 98 03 00 3A */ stb r0, 0x3a(r3) +/* 80007CDC 00004C1C 98 03 00 3C */ stb r0, 0x3c(r3) +/* 80007CE0 00004C20 3C 80 80 3F */ lis r4, g_HIO@ha +/* 80007CE4 00004C24 38 84 1B BC */ addi r4, r4, g_HIO@l +/* 80007CE8 00004C28 C0 04 00 0C */ lfs f0, 0xc(r4) +/* 80007CEC 00004C2C FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007CF0 00004C30 40 81 00 24 */ ble lbl_80007D14 +/* 80007CF4 00004C34 88 03 00 39 */ lbz r0, 0x39(r3) +/* 80007CF8 00004C38 28 00 00 01 */ cmplwi r0, 1 +/* 80007CFC 00004C3C 41 82 00 0C */ beq lbl_80007D08 +/* 80007D00 00004C40 38 00 00 01 */ li r0, 1 +/* 80007D04 00004C44 98 03 00 3A */ stb r0, 0x3a(r3) +lbl_80007D08: +/* 80007D08 00004C48 38 00 00 01 */ li r0, 1 +/* 80007D0C 00004C4C 98 03 00 39 */ stb r0, 0x39(r3) +/* 80007D10 00004C50 48 00 00 14 */ b lbl_80007D24 +lbl_80007D14: +/* 80007D14 00004C54 C0 04 00 10 */ lfs f0, 0x10(r4) +/* 80007D18 00004C58 FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007D1C 00004C5C 40 80 00 08 */ bge lbl_80007D24 +/* 80007D20 00004C60 98 03 00 39 */ stb r0, 0x39(r3) +lbl_80007D24: +/* 80007D24 00004C64 C0 23 00 2C */ lfs f1, 0x2c(r3) +/* 80007D28 00004C68 C0 04 00 0C */ lfs f0, 0xc(r4) +/* 80007D2C 00004C6C FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007D30 00004C70 40 81 00 24 */ ble lbl_80007D54 +/* 80007D34 00004C74 88 03 00 3B */ lbz r0, 0x3b(r3) +/* 80007D38 00004C78 28 00 00 01 */ cmplwi r0, 1 +/* 80007D3C 00004C7C 41 82 00 0C */ beq lbl_80007D48 +/* 80007D40 00004C80 38 00 00 01 */ li r0, 1 +/* 80007D44 00004C84 98 03 00 3C */ stb r0, 0x3c(r3) +lbl_80007D48: +/* 80007D48 00004C88 38 00 00 01 */ li r0, 1 +/* 80007D4C 00004C8C 98 03 00 3B */ stb r0, 0x3b(r3) +/* 80007D50 00004C90 4E 80 00 20 */ blr +lbl_80007D54: +/* 80007D54 00004C94 3C 80 80 3F */ lis r4, g_HIO@ha +/* 80007D58 00004C98 38 84 1B BC */ addi r4, r4, g_HIO@l +/* 80007D5C 00004C9C C0 04 00 10 */ lfs f0, 0x10(r4) +/* 80007D60 00004CA0 FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007D64 00004CA4 4C 80 00 20 */ bgelr +/* 80007D68 00004CA8 38 00 00 00 */ li r0, 0 +/* 80007D6C 00004CAC 98 03 00 3B */ stb r0, 0x3b(r3) +/* 80007D70 00004CB0 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_convert.s b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_convert.s new file mode 100644 index 00000000000..9b2ff973f7a --- /dev/null +++ b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_convert.s @@ -0,0 +1,89 @@ +/* 80007B7C 00004ABC 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80007B80 00004AC0 80 04 00 18 */ lwz r0, 0x18(r4) +/* 80007B84 00004AC4 90 03 00 30 */ stw r0, 0x30(r3) +/* 80007B88 00004AC8 80 04 00 1C */ lwz r0, 0x1c(r4) +/* 80007B8C 00004ACC 90 03 00 34 */ stw r0, 0x34(r3) +/* 80007B90 00004AD0 C0 04 00 48 */ lfs f0, 0x48(r4) +/* 80007B94 00004AD4 D0 03 00 00 */ stfs f0, 0(r3) +/* 80007B98 00004AD8 C0 04 00 4C */ lfs f0, 0x4c(r4) +/* 80007B9C 00004ADC D0 03 00 04 */ stfs f0, 4(r3) +/* 80007BA0 00004AE0 C0 04 00 50 */ lfs f0, 0x50(r4) +/* 80007BA4 00004AE4 D0 03 00 08 */ stfs f0, 8(r3) +/* 80007BA8 00004AE8 A8 04 00 54 */ lha r0, 0x54(r4) +/* 80007BAC 00004AEC B0 03 00 0C */ sth r0, 0xc(r3) +/* 80007BB0 00004AF0 C0 04 00 58 */ lfs f0, 0x58(r4) +/* 80007BB4 00004AF4 D0 03 00 10 */ stfs f0, 0x10(r3) +/* 80007BB8 00004AF8 C0 04 00 5C */ lfs f0, 0x5c(r4) +/* 80007BBC 00004AFC D0 03 00 14 */ stfs f0, 0x14(r3) +/* 80007BC0 00004B00 C0 04 00 60 */ lfs f0, 0x60(r4) +/* 80007BC4 00004B04 D0 03 00 18 */ stfs f0, 0x18(r3) +/* 80007BC8 00004B08 A8 04 00 64 */ lha r0, 0x64(r4) +/* 80007BCC 00004B0C B0 03 00 1C */ sth r0, 0x1c(r3) +/* 80007BD0 00004B10 88 04 00 24 */ lbz r0, 0x24(r4) +/* 80007BD4 00004B14 C0 42 80 20 */ lfs f2, lbl_80451A20-_SDA2_BASE_(r2) +/* 80007BD8 00004B18 C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) +/* 80007BDC 00004B1C 90 01 00 0C */ stw r0, 0xc(r1) +/* 80007BE0 00004B20 3C 00 43 30 */ lis r0, 0x4330 +/* 80007BE4 00004B24 90 01 00 08 */ stw r0, 8(r1) +/* 80007BE8 00004B28 C8 01 00 08 */ lfd f0, 8(r1) +/* 80007BEC 00004B2C EC 00 08 28 */ fsubs f0, f0, f1 +/* 80007BF0 00004B30 EC 02 00 32 */ fmuls f0, f2, f0 +/* 80007BF4 00004B34 D0 03 00 20 */ stfs f0, 0x20(r3) +/* 80007BF8 00004B38 C0 23 00 20 */ lfs f1, 0x20(r3) +/* 80007BFC 00004B3C C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) +/* 80007C00 00004B40 FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007C04 00004B44 40 81 00 08 */ ble lbl_80007C0C +/* 80007C08 00004B48 D0 03 00 20 */ stfs f0, 0x20(r3) +lbl_80007C0C: +/* 80007C0C 00004B4C 88 04 00 25 */ lbz r0, 0x25(r4) +/* 80007C10 00004B50 C0 42 80 20 */ lfs f2, lbl_80451A20-_SDA2_BASE_(r2) +/* 80007C14 00004B54 C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) +/* 80007C18 00004B58 90 01 00 0C */ stw r0, 0xc(r1) +/* 80007C1C 00004B5C 3C 00 43 30 */ lis r0, 0x4330 +/* 80007C20 00004B60 90 01 00 08 */ stw r0, 8(r1) +/* 80007C24 00004B64 C8 01 00 08 */ lfd f0, 8(r1) +/* 80007C28 00004B68 EC 00 08 28 */ fsubs f0, f0, f1 +/* 80007C2C 00004B6C EC 02 00 32 */ fmuls f0, f2, f0 +/* 80007C30 00004B70 D0 03 00 24 */ stfs f0, 0x24(r3) +/* 80007C34 00004B74 C0 23 00 24 */ lfs f1, 0x24(r3) +/* 80007C38 00004B78 C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) +/* 80007C3C 00004B7C FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007C40 00004B80 40 81 00 08 */ ble lbl_80007C48 +/* 80007C44 00004B84 D0 03 00 24 */ stfs f0, 0x24(r3) +lbl_80007C48: +/* 80007C48 00004B88 88 04 00 26 */ lbz r0, 0x26(r4) +/* 80007C4C 00004B8C C0 42 80 28 */ lfs f2, lbl_80451A28-_SDA2_BASE_(r2) +/* 80007C50 00004B90 C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) +/* 80007C54 00004B94 90 01 00 0C */ stw r0, 0xc(r1) +/* 80007C58 00004B98 3C 00 43 30 */ lis r0, 0x4330 +/* 80007C5C 00004B9C 90 01 00 08 */ stw r0, 8(r1) +/* 80007C60 00004BA0 C8 01 00 08 */ lfd f0, 8(r1) +/* 80007C64 00004BA4 EC 00 08 28 */ fsubs f0, f0, f1 +/* 80007C68 00004BA8 EC 02 00 32 */ fmuls f0, f2, f0 +/* 80007C6C 00004BAC D0 03 00 28 */ stfs f0, 0x28(r3) +/* 80007C70 00004BB0 C0 23 00 28 */ lfs f1, 0x28(r3) +/* 80007C74 00004BB4 C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) +/* 80007C78 00004BB8 FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007C7C 00004BBC 40 81 00 08 */ ble lbl_80007C84 +/* 80007C80 00004BC0 D0 03 00 28 */ stfs f0, 0x28(r3) +lbl_80007C84: +/* 80007C84 00004BC4 88 04 00 27 */ lbz r0, 0x27(r4) +/* 80007C88 00004BC8 C0 42 80 28 */ lfs f2, lbl_80451A28-_SDA2_BASE_(r2) +/* 80007C8C 00004BCC C8 22 80 30 */ lfd f1, lbl_80451A30-_SDA2_BASE_(r2) +/* 80007C90 00004BD0 90 01 00 0C */ stw r0, 0xc(r1) +/* 80007C94 00004BD4 3C 00 43 30 */ lis r0, 0x4330 +/* 80007C98 00004BD8 90 01 00 08 */ stw r0, 8(r1) +/* 80007C9C 00004BDC C8 01 00 08 */ lfd f0, 8(r1) +/* 80007CA0 00004BE0 EC 00 08 28 */ fsubs f0, f0, f1 +/* 80007CA4 00004BE4 EC 02 00 32 */ fmuls f0, f2, f0 +/* 80007CA8 00004BE8 D0 03 00 2C */ stfs f0, 0x2c(r3) +/* 80007CAC 00004BEC C0 23 00 2C */ lfs f1, 0x2c(r3) +/* 80007CB0 00004BF0 C0 02 80 24 */ lfs f0, lbl_80451A24-_SDA2_BASE_(r2) +/* 80007CB4 00004BF4 FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 80007CB8 00004BF8 40 81 00 08 */ ble lbl_80007CC0 +/* 80007CBC 00004BFC D0 03 00 2C */ stfs f0, 0x2c(r3) +lbl_80007CC0: +/* 80007CC0 00004C00 88 04 00 7E */ lbz r0, 0x7e(r4) +/* 80007CC4 00004C04 98 03 00 38 */ stb r0, 0x38(r3) +/* 80007CC8 00004C08 38 21 00 10 */ addi r1, r1, 0x10 +/* 80007CCC 00004C0C 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_create.s b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_create.s new file mode 100644 index 00000000000..2c2c5be2609 --- /dev/null +++ b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_create.s @@ -0,0 +1,88 @@ +/* 80007954 00004894 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80007958 00004898 7C 08 02 A6 */ mflr r0 +/* 8000795C 0000489C 90 01 00 14 */ stw r0, 0x14(r1) +/* 80007960 000048A0 38 60 00 B0 */ li r3, 0xb0 +/* 80007964 000048A4 48 2C 72 E9 */ bl __nw__FUl +/* 80007968 000048A8 7C 60 1B 79 */ or. r0, r3, r3 +/* 8000796C 000048AC 41 82 00 10 */ beq lbl_8000797C +/* 80007970 000048B0 38 80 00 00 */ li r4, 0 +/* 80007974 000048B4 48 2D 8D 69 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort +/* 80007978 000048B8 7C 60 1B 78 */ mr r0, r3 +lbl_8000797C: +/* 8000797C 000048BC 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 80007980 000048C0 94 03 D2 D8 */ stwu r0, m_gamePad@l(r3) +/* 80007984 000048C4 88 0D 80 00 */ lbz r0, lbl_80450580-_SDA_BASE_(r13) +/* 80007988 000048C8 7C 00 07 75 */ extsb. r0, r0 +/* 8000798C 000048CC 41 82 00 80 */ beq lbl_80007A0C +/* 80007990 000048D0 38 60 00 B0 */ li r3, 0xb0 +/* 80007994 000048D4 48 2C 72 B9 */ bl __nw__FUl +/* 80007998 000048D8 7C 60 1B 79 */ or. r0, r3, r3 +/* 8000799C 000048DC 41 82 00 10 */ beq lbl_800079AC +/* 800079A0 000048E0 38 80 00 01 */ li r4, 1 +/* 800079A4 000048E4 48 2D 8D 39 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort +/* 800079A8 000048E8 7C 60 1B 78 */ mr r0, r3 +lbl_800079AC: +/* 800079AC 000048EC 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 800079B0 000048F0 38 63 D2 D8 */ addi r3, r3, m_gamePad@l +/* 800079B4 000048F4 90 03 00 04 */ stw r0, 4(r3) +/* 800079B8 000048F8 38 60 00 B0 */ li r3, 0xb0 +/* 800079BC 000048FC 48 2C 72 91 */ bl __nw__FUl +/* 800079C0 00004900 7C 60 1B 79 */ or. r0, r3, r3 +/* 800079C4 00004904 41 82 00 10 */ beq lbl_800079D4 +/* 800079C8 00004908 38 80 00 02 */ li r4, 2 +/* 800079CC 0000490C 48 2D 8D 11 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort +/* 800079D0 00004910 7C 60 1B 78 */ mr r0, r3 +lbl_800079D4: +/* 800079D4 00004914 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 800079D8 00004918 38 63 D2 D8 */ addi r3, r3, m_gamePad@l +/* 800079DC 0000491C 90 03 00 08 */ stw r0, 8(r3) +/* 800079E0 00004920 38 60 00 B0 */ li r3, 0xb0 +/* 800079E4 00004924 48 2C 72 69 */ bl __nw__FUl +/* 800079E8 00004928 7C 60 1B 79 */ or. r0, r3, r3 +/* 800079EC 0000492C 41 82 00 10 */ beq lbl_800079FC +/* 800079F0 00004930 38 80 00 03 */ li r4, 3 +/* 800079F4 00004934 48 2D 8C E9 */ bl __ct__10JUTGamePadFQ210JUTGamePad8EPadPort +/* 800079F8 00004938 7C 60 1B 78 */ mr r0, r3 +lbl_800079FC: +/* 800079FC 0000493C 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 80007A00 00004940 38 63 D2 D8 */ addi r3, r3, m_gamePad@l +/* 80007A04 00004944 90 03 00 0C */ stw r0, 0xc(r3) +/* 80007A08 00004948 48 00 00 14 */ b lbl_80007A1C +lbl_80007A0C: +/* 80007A0C 0000494C 38 00 00 00 */ li r0, 0 +/* 80007A10 00004950 90 03 00 04 */ stw r0, 4(r3) +/* 80007A14 00004954 90 03 00 08 */ stw r0, 8(r3) +/* 80007A18 00004958 90 03 00 0C */ stw r0, 0xc(r3) +lbl_80007A1C: +/* 80007A1C 0000495C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13) +/* 80007A20 00004960 80 03 00 00 */ lwz r0, 0(r3) +/* 80007A24 00004964 2C 00 00 00 */ cmpwi r0, 0 +/* 80007A28 00004968 40 82 00 1C */ bne lbl_80007A44 +/* 80007A2C 0000496C 38 80 00 00 */ li r4, 0 +/* 80007A30 00004970 98 8D 8F 81 */ stb r4, lbl_80451501-_SDA_BASE_(r13) +/* 80007A34 00004974 3C 60 80 01 */ lis r3, resetCallBack__6mDoRstFiPv@ha +/* 80007A38 00004978 38 03 57 4C */ addi r0, r3, resetCallBack__6mDoRstFiPv@l +/* 80007A3C 0000497C 90 0D 8F 6C */ stw r0, lbl_804514EC-_SDA_BASE_(r13) +/* 80007A40 00004980 90 8D 8F 70 */ stw r4, lbl_804514F0-_SDA_BASE_(r13) +lbl_80007A44: +/* 80007A44 00004984 38 00 00 03 */ li r0, 3 +/* 80007A48 00004988 90 0D 8F 5C */ stw r0, sAnalogMode-_SDA_BASE_(r13) +/* 80007A4C 0000498C 38 60 00 03 */ li r3, 3 +/* 80007A50 00004990 48 34 7F C1 */ bl PADSetAnalogMode +/* 80007A54 00004994 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80007A58 00004998 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l +/* 80007A5C 0000499C 7C 04 03 78 */ mr r4, r0 +/* 80007A60 000049A0 38 60 00 00 */ li r3, 0 +/* 80007A64 000049A4 38 00 00 04 */ li r0, 4 +/* 80007A68 000049A8 7C 09 03 A6 */ mtctr r0 +lbl_80007A6C: +/* 80007A6C 000049AC 98 64 00 3A */ stb r3, 0x3a(r4) +/* 80007A70 000049B0 98 64 00 39 */ stb r3, 0x39(r4) +/* 80007A74 000049B4 98 64 00 3C */ stb r3, 0x3c(r4) +/* 80007A78 000049B8 98 64 00 3B */ stb r3, 0x3b(r4) +/* 80007A7C 000049BC 38 84 00 40 */ addi r4, r4, 0x40 +/* 80007A80 000049C0 42 00 FF EC */ bdnz lbl_80007A6C +/* 80007A84 000049C4 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80007A88 000049C8 7C 08 03 A6 */ mtlr r0 +/* 80007A8C 000049CC 38 21 00 10 */ addi r1, r1, 0x10 +/* 80007A90 000049D0 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_read.s b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_read.s new file mode 100644 index 00000000000..aaf0df6081c --- /dev/null +++ b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_read.s @@ -0,0 +1,63 @@ +/* 80007A94 000049D4 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 80007A98 000049D8 7C 08 02 A6 */ mflr r0 +/* 80007A9C 000049DC 90 01 00 24 */ stw r0, 0x24(r1) +/* 80007AA0 000049E0 39 61 00 20 */ addi r11, r1, 0x20 +/* 80007AA4 000049E4 48 35 A7 39 */ bl _savegpr_29 +/* 80007AA8 000049E8 48 2D 8E 3D */ bl read__10JUTGamePadFv +/* 80007AAC 000049EC 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13) +/* 80007AB0 000049F0 80 03 00 00 */ lwz r0, 0(r3) +/* 80007AB4 000049F4 2C 00 00 00 */ cmpwi r0, 0 +/* 80007AB8 000049F8 40 82 00 4C */ bne lbl_80007B04 +/* 80007ABC 000049FC 80 03 00 08 */ lwz r0, 8(r3) +/* 80007AC0 00004A00 2C 00 00 00 */ cmpwi r0, 0 +/* 80007AC4 00004A04 41 82 00 40 */ beq lbl_80007B04 +/* 80007AC8 00004A08 80 63 00 0C */ lwz r3, 0xc(r3) +/* 80007ACC 00004A0C 48 2D 9E D1 */ bl getGamePad__10JUTGamePadFi +/* 80007AD0 00004A10 38 80 00 00 */ li r4, 0 +/* 80007AD4 00004A14 A8 03 00 7C */ lha r0, 0x7c(r3) +/* 80007AD8 00004A18 2C 00 FF FF */ cmpwi r0, -1 +/* 80007ADC 00004A1C 41 82 00 14 */ beq lbl_80007AF0 +/* 80007AE0 00004A20 88 03 00 98 */ lbz r0, 0x98(r3) +/* 80007AE4 00004A24 28 00 00 00 */ cmplwi r0, 0 +/* 80007AE8 00004A28 41 82 00 08 */ beq lbl_80007AF0 +/* 80007AEC 00004A2C 38 80 00 01 */ li r4, 1 +lbl_80007AF0: +/* 80007AF0 00004A30 54 80 06 3F */ clrlwi. r0, r4, 0x18 +/* 80007AF4 00004A34 40 82 00 10 */ bne lbl_80007B04 +/* 80007AF8 00004A38 38 00 00 00 */ li r0, 0 +/* 80007AFC 00004A3C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13) +/* 80007B00 00004A40 90 03 00 08 */ stw r0, 8(r3) +lbl_80007B04: +/* 80007B04 00004A44 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 80007B08 00004A48 38 03 D2 D8 */ addi r0, r3, m_gamePad@l +/* 80007B0C 00004A4C 7C 1F 03 78 */ mr r31, r0 +/* 80007B10 00004A50 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80007B14 00004A54 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l +/* 80007B18 00004A58 7C 1E 03 78 */ mr r30, r0 +/* 80007B1C 00004A5C 3B A0 00 00 */ li r29, 0 +lbl_80007B20: +/* 80007B20 00004A60 80 9F 00 00 */ lwz r4, 0(r31) +/* 80007B24 00004A64 28 04 00 00 */ cmplwi r4, 0 +/* 80007B28 00004A68 40 82 00 18 */ bne lbl_80007B40 +/* 80007B2C 00004A6C 7F C3 F3 78 */ mr r3, r30 +/* 80007B30 00004A70 38 80 00 00 */ li r4, 0 +/* 80007B34 00004A74 38 A0 00 40 */ li r5, 0x40 +/* 80007B38 00004A78 48 26 7E 25 */ bl cLib_memSet__FPviUl +/* 80007B3C 00004A7C 48 00 00 14 */ b lbl_80007B50 +lbl_80007B40: +/* 80007B40 00004A80 7F C3 F3 78 */ mr r3, r30 +/* 80007B44 00004A84 48 00 00 39 */ bl convert__8mDoCPd_cFP27interface_of_controller_padP10JUTGamePad +/* 80007B48 00004A88 7F C3 F3 78 */ mr r3, r30 +/* 80007B4C 00004A8C 48 00 01 85 */ bl LRlockCheck__8mDoCPd_cFP27interface_of_controller_pad +lbl_80007B50: +/* 80007B50 00004A90 3B BD 00 01 */ addi r29, r29, 1 +/* 80007B54 00004A94 28 1D 00 04 */ cmplwi r29, 4 +/* 80007B58 00004A98 3B FF 00 04 */ addi r31, r31, 4 +/* 80007B5C 00004A9C 3B DE 00 40 */ addi r30, r30, 0x40 +/* 80007B60 00004AA0 41 80 FF C0 */ blt lbl_80007B20 +/* 80007B64 00004AA4 39 61 00 20 */ addi r11, r1, 0x20 +/* 80007B68 00004AA8 48 35 A6 C1 */ bl _restgpr_29 +/* 80007B6C 00004AAC 80 01 00 24 */ lwz r0, 0x24(r1) +/* 80007B70 00004AB0 7C 08 03 A6 */ mtlr r0 +/* 80007B74 00004AB4 38 21 00 20 */ addi r1, r1, 0x20 +/* 80007B78 00004AB8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_recalibrate.s b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_recalibrate.s new file mode 100644 index 00000000000..92f6063c202 --- /dev/null +++ b/include/m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_recalibrate.s @@ -0,0 +1,10 @@ +/* 80007D74 00004CB4 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80007D78 00004CB8 7C 08 02 A6 */ mflr r0 +/* 80007D7C 00004CBC 90 01 00 14 */ stw r0, 0x14(r1) +/* 80007D80 00004CC0 48 2D 92 A5 */ bl clearForReset__10JUTGamePadFv +/* 80007D84 00004CC4 3C 60 F0 00 */ lis r3, 0xf000 +/* 80007D88 00004CC8 48 2D 9C 51 */ bl setEnabled__Q210JUTGamePad7CRumbleFUl +/* 80007D8C 00004CCC 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80007D90 00004CD0 7C 08 03 A6 */ mtlr r0 +/* 80007D94 00004CD4 38 21 00 10 */ addi r1, r1, 0x10 +/* 80007D98 00004CD8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/m_Do/m_Do_controller_pad/m_Do_controller_pad.h b/include/m_Do/m_Do_controller_pad/m_Do_controller_pad.h index 9ee81f57c58..fd4d7d0b6a1 100644 --- a/include/m_Do/m_Do_controller_pad/m_Do_controller_pad.h +++ b/include/m_Do/m_Do_controller_pad/m_Do_controller_pad.h @@ -2,6 +2,114 @@ #define __M_DO_CONTROLLER_PAD_H_ #include "JSystem/JUtility/JUTGamePad/JUTGamePad.h" -extern JUTGamePad* lbl_803DD2D8[4]; // m_Do_controller_pad::mDoCPd_c::m_gamePad +#include "global.h" -#endif \ No newline at end of file +struct g_HIO_struct { + u32 field_0x0; + u8 field_0x4; + u8 field_0x5; + u8 field_0x6; + u8 field_0x7; + u8 field_0x8; + u8 field_0x9; + u8 field_0xa; + u8 field_0xb; + float float_global_1; + float float_global_2; + u8 field_0x14; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; + u8 field_0x18; + u8 field_0x19; + u8 field_0x1a; + u8 field_0x1b; + u8 field_0x1c; + u8 field_0x1d; + u8 field_0x1e; + u8 field_0x1f; + u8 field_0x20; + u8 field_0x21; + u8 field_0x22; + u8 field_0x23; + u8 field_0x24; + u8 field_0x25; + u8 field_0x26; + u8 field_0x27; + u8 field_0x28; + u8 field_0x29; + u8 field_0x2a; + u8 field_0x2b; + u8 field_0x2c; + u8 field_0x2d; + u8 field_0x2e; + u8 field_0x2f; + u8 field_0x30; + u8 field_0x31; + u8 field_0x32; + u8 field_0x33; + u8 field_0x34; + u8 field_0x35; + u8 field_0x36; + u8 field_0x37; + u8 field_0x38; + u8 field_0x39; + u8 field_0x3a; + u8 field_0x3b; + u8 field_0x3c; + u8 field_0x3d; + u8 field_0x3e; + u8 field_0x3f; + u8 field_0x40; + u8 field_0x41; + u8 field_0x42; + u8 field_0x43; +}; + +struct interface_of_controller_pad { + float stick_x; + float stick_y; + float length_from_neutral; + s16 controlStick_angle; + u8 field_0xe; + u8 field_0xf; + float cStick_x; + float cStick_y; + float cStick_length_from_neutral; + s16 cStick_angle; + u8 field_0x1e; + u8 field_0x1f; + float analog_a; + float analog_b; + float trigger_left; + float trigger_right; + u32 button_flags; + u32 field_0x34; + s8 error_value; + bool field_0x39; + bool field_0x3a; + bool field_0x3b; + bool field_0x3c; +}; + +struct cpadInfo { + interface_of_controller_pad interface; + cpadInfo* unk1; + f32 stickValue; + s16 stickAngle; + u8 p2[0x8]; + f32 CstickValue; + s16 CstickAngle; + u8 p3[0xE2]; +}; + +struct mDoCPd_c { + void create(); + void read(); + static void convert(interface_of_controller_pad* controllerInteface, JUTGamePad* gamePad); + static void LRlockCheck(interface_of_controller_pad* controllerInterface); + void recalibrate(void); + + JUTGamePad* gamePad; +}; +#endif diff --git a/include/m_Do/m_Do_main/asm/func_8000578C.s b/include/m_Do/m_Do_main/asm/func_8000578C.s index e01b808e217..45a0a0d742e 100644 --- a/include/m_Do/m_Do_main/asm/func_8000578C.s +++ b/include/m_Do/m_Do_main/asm/func_8000578C.s @@ -8,8 +8,8 @@ /* 800057A8 000026E8 48 33 C7 59 */ bl OSCheckActiveThreads /* 800057AC 000026EC 38 A0 00 00 */ li r5, 0 /* 800057B0 000026F0 57 64 30 32 */ slwi r4, r27, 6 -/* 800057B4 000026F4 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 800057B8 000026F8 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 800057B4 000026F4 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 800057B8 000026F8 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 800057BC 000026FC 7C 60 22 14 */ add r3, r0, r4 /* 800057C0 00002700 80 03 00 30 */ lwz r0, 0x30(r3) /* 800057C4 00002704 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a diff --git a/include/m_Do/m_Do_main/asm/func_80005D4C.s b/include/m_Do/m_Do_main/asm/func_80005D4C.s index 86c2fb0558b..28ec4a8f708 100644 --- a/include/m_Do/m_Do_main/asm/func_80005D4C.s +++ b/include/m_Do/m_Do_main/asm/func_80005D4C.s @@ -35,8 +35,8 @@ lbl_80005DB4: /* 80005DCC 00002D0C 98 0D 85 B0 */ stb r0, lbl_80450B30-_SDA_BASE_(r13) lbl_80005DD0: /* 80005DD0 00002D10 54 64 30 32 */ slwi r4, r3, 6 -/* 80005DD4 00002D14 3C 60 80 3E */ lis r3, lbl_803DD2E8@ha -/* 80005DD8 00002D18 38 03 D2 E8 */ addi r0, r3, lbl_803DD2E8@l +/* 80005DD4 00002D14 3C 60 80 3E */ lis r3, m_cpadInfo@ha +/* 80005DD8 00002D18 38 03 D2 E8 */ addi r0, r3, m_cpadInfo@l /* 80005DDC 00002D1C 7F A0 22 14 */ add r29, r0, r4 /* 80005DE0 00002D20 3B DD 00 34 */ addi r30, r29, 0x34 /* 80005DE4 00002D24 80 1D 00 34 */ lwz r0, 0x34(r29) @@ -186,8 +186,8 @@ lbl_80005FF4: /* 80005FF4 00002F34 80 9E 00 00 */ lwz r4, 0(r30) /* 80005FF8 00002F38 54 80 07 7B */ rlwinm. r0, r4, 0, 0x1d, 0x1d /* 80005FFC 00002F3C 41 82 00 18 */ beq lbl_80006014 -/* 80006000 00002F40 3C 60 80 3F */ lis r3, lbl_803F1BBC@ha -/* 80006004 00002F44 38 63 1B BC */ addi r3, r3, lbl_803F1BBC@l +/* 80006000 00002F40 3C 60 80 3F */ lis r3, g_HIO@ha +/* 80006004 00002F44 38 63 1B BC */ addi r3, r3, g_HIO@l /* 80006008 00002F48 88 03 00 15 */ lbz r0, 0x15(r3) /* 8000600C 00002F4C 68 00 00 01 */ xori r0, r0, 1 /* 80006010 00002F50 98 03 00 15 */ stb r0, 0x15(r3) diff --git a/include/m_Do/m_Do_main/asm/func_800061C8.s b/include/m_Do/m_Do_main/asm/func_800061C8.s index 6348603bd5c..c1ec4f5a074 100644 --- a/include/m_Do/m_Do_main/asm/func_800061C8.s +++ b/include/m_Do/m_Do_main/asm/func_800061C8.s @@ -10,8 +10,8 @@ /* 800061EC 0000312C 38 60 00 02 */ li r3, 2 /* 800061F0 00003130 4B FF F5 9D */ bl CheckHeap__FUl lbl_800061F4: -/* 800061F4 00003134 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 800061F8 00003138 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l +/* 800061F4 00003134 3C 60 80 3E */ lis r3, m_gamePad@ha +/* 800061F8 00003138 38 63 D2 D8 */ addi r3, r3, m_gamePad@l /* 800061FC 0000313C 80 63 00 08 */ lwz r3, 8(r3) /* 80006200 00003140 80 03 00 18 */ lwz r0, 0x18(r3) /* 80006204 00003144 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a diff --git a/include/m_Do/m_Do_main/asm/func_8000628C.s b/include/m_Do/m_Do_main/asm/func_8000628C.s index 31af38a0328..3fe94dc0090 100644 --- a/include/m_Do/m_Do_main/asm/func_8000628C.s +++ b/include/m_Do/m_Do_main/asm/func_8000628C.s @@ -6,7 +6,7 @@ /* 800062A0 000031E0 3B E3 32 E0 */ addi r31, r3, lbl_803D32E0@l /* 800062A4 000031E4 48 00 5A A1 */ bl mDoMch_Create /* 800062A8 000031E8 48 00 4E CD */ bl mDoGph_Create -/* 800062AC 000031EC 48 00 16 A9 */ bl mDoCPd_c_NS_create +/* 800062AC 000031EC 48 00 16 A9 */ bl create__8mDoCPd_cFv /* 800062B0 000031F0 80 8D 8D F8 */ lwz r4, lbl_80451378-_SDA_BASE_(r13) /* 800062B4 000031F4 38 7F 00 00 */ addi r3, r31, 0 /* 800062B8 000031F8 90 83 00 08 */ stw r4, 8(r3) @@ -119,7 +119,7 @@ lbl_8000642C: /* 80006438 00003378 7F E3 FB 78 */ mr r3, r31 /* 8000643C 0000337C 48 01 04 59 */ bl mDoMemCd_Ctrl_c_NS_update lbl_80006440: -/* 80006440 00003380 48 00 16 55 */ bl mDoCPd_c_NS_read +/* 80006440 00003380 48 00 16 55 */ bl read__8mDoCPd_cFv /* 80006444 00003384 48 01 26 29 */ bl fapGm_Execute /* 80006448 00003388 48 00 0D 1D */ bl mDoAud_Execute /* 8000644C 0000338C 4B FF FD 7D */ bl debug__Fv diff --git a/include/pad/pad.h b/include/pad/pad.h index 1ef4fe6aa8e..08a2bda8e7b 100644 --- a/include/pad/pad.h +++ b/include/pad/pad.h @@ -1,7 +1,13 @@ #ifndef __PAD_H__ #define __PAD_H__ +#include "global.h" typedef enum PADMask { + // PAD_CHAN3_BIT = (1 << 0), + // PAD_CHAN2_BIT = (1 << 1), + // PAD_CHAN1_BIT = (1 << 2), + // PAD_CHAN0_BIT = (1 << 3), + PAD_CHAN3_BIT = (1 << 28), PAD_CHAN2_BIT = (1 << 29), PAD_CHAN1_BIT = (1 << 30), diff --git a/include/variables.h b/include/variables.h index f7b81036304..3e1dcbcb511 100644 --- a/include/variables.h +++ b/include/variables.h @@ -10,8 +10,8 @@ extern char lbl_803739A0[0x310]; extern void* lbl_80451368; extern u32 lbl_804514E0; extern u8 lbl_803C3384; -struct m_cpadInfo; -extern m_cpadInfo lbl_803DD2E8; +struct cpadInfo; +extern cpadInfo m_cpadInfo; extern u8 lbl_803A2EF4; extern u8 lbl_803A2EE0; extern u8 lbl_80450B19; @@ -40,8 +40,8 @@ extern u8 lbl_80450B1C; extern u8 lbl_80450B1C; extern u8 lbl_80450B24; extern u8 lbl_80450B24; -extern u8 lbl_803F1BBC; -extern u8 lbl_803F1BBC; +struct g_HIO_struct; +extern g_HIO_struct g_HIO; extern u8 lbl_80450C2C; extern u8 lbl_80450C28; extern u8 lbl_80450C34; @@ -49,6 +49,8 @@ extern u8 lbl_80450B24; extern u8 lbl_80450B1C; extern u8 lbl_80450580; extern u8 lbl_80450B1A; +struct JUTGamePad; +extern JUTGamePad* m_gamePad[4]; extern u8 lbl_80450B18; extern u8 lbl_803D32E0; extern u8 lbl_80450BBC; @@ -61,6 +63,8 @@ extern u8 __ct__12dSv_memory_cFv; extern u8 __ct__13dSv_memory2_cFv; extern u8 lbl_803D3420; extern u8 lbl_80450B0C; +struct ResetData; +extern ResetData* m_Do_Reset_NS_mDoRst_NS_mResetData; extern u8 lbl_80450B08; extern u8 lbl_803DB420; extern u8 main01__Fv; @@ -374,6 +378,39 @@ extern u8 lbl_804342E8; // JKernel::decompMutex (static?) extern u8 lbl_804508B8; // JKRAram::sSZSBufferSize extern u8 lbl_803CC128; // JKRAram::sMessageBuffer +extern bool lbl_80451501; + +extern float lbl_80451A20; // m_Do_controller_pad::@3709 0.06666667 +extern float lbl_80451A24; // m_Do_controller_pad::@3710 1.0 +extern float lbl_80451A28; // m_Do_controller_pad::@3711 0.007142857 +extern double lbl_80451A30; // m_Do_controller_pad::@3713 4.503599627370496E15 + +extern s32 sAnalogMode; +extern u8 lbl_804513CC; // JKernel::szpBuf (static?) +extern u8 lbl_804513D0; // JKernel::szpEnd (static?) +extern u8 lbl_804513D4; // JKernel::refBuf (static?) +extern u8 lbl_804513D8; // JKernel::refEnd (static?) +extern u8 lbl_804513DC; // JKernel::refCurrent (static?) +extern u8 lbl_804513E0; // JKernel::srcOffset (static?) +extern u8 lbl_804513E4; // JKernel::transLeft (static?) +extern u8 lbl_804513E8; // JKernel::srcLimit (static?) +extern u8 lbl_804513EC; // JKernel::srcAddress (static?) +extern u8 lbl_804513F0; // JKernel::fileOffset (static?) +extern u8 lbl_804513F4; // JKernel::readCount (static?) +extern u8 lbl_804513F8; // JKernel::maxDest (static?) +extern u8 lbl_804513FC; // DAT_804513fc (init global mutex) +extern u8 lbl_80451400; // JKernel::tsPtr (static?) +extern u8 lbl_80451404; // JKernel::tsArea (static?) + +extern u8 lbl_803CC158; // JKRAram::__vt +extern u8 lbl_8039D078; // "JKRAram.cpp" +extern u8 lbl_804342D0; // JKernel::@492 (global destructor chain) +extern u8 lbl_803CC138; // JKRAram::sMessageQueue +extern u8 lbl_804342DC; // JKRAram::sAramCommandList +extern u8 lbl_804342E8; // JKernel::decompMutex (static?) +extern u8 lbl_804508B8; // JKRAram::sSZSBufferSize +extern u8 lbl_803CC128; // JKRAram::sMessageBuffer + //// JUTGamePad: // func_802E06DC extern u8 lbl_803CC610; diff --git a/libs/JSystem/JUtility/JUTGamePad.cpp b/libs/JSystem/JUtility/JUTGamePad.cpp index 34dd7d191c9..8ff7d63b494 100644 --- a/libs/JSystem/JUtility/JUTGamePad.cpp +++ b/libs/JSystem/JUtility/JUTGamePad.cpp @@ -30,7 +30,7 @@ void JUTGamePad::initList() { s32 JUTGamePad::init() { PADSetSpec(5); - /*sAnalogMode*/ lbl_804514DC = 3; + /*sAnalogMode*/ sAnalogMode = 3; PADSetAnalogMode(3); return PADInit(); @@ -287,7 +287,7 @@ void JUTGamePad::CRumble::stopPatternedRumbleAtThePeriod() { * matching issue in general; see JKRHeap::dispose or JKRThread::searchThread, * both of which are currently nonmatching due to the same issue. */ -JUTGamePad* JUTGamePad::getGamePad(s32 pad_index) { +JUTGamePad* JUTGamePad::getGamePad(int pad_index) { JSUList* threadList = &lbl_804343E4; JSUListIterator iterator; for (iterator = threadList; iterator != threadList->getEnd(); iterator++) { @@ -300,7 +300,7 @@ JUTGamePad* JUTGamePad::getGamePad(s32 pad_index) { return NULL; } #else -asm JUTGamePad* JUTGamePad::getGamePad(s32 pad_index) { +asm JUTGamePad* JUTGamePad::getGamePad(int pad_index) { nofralloc #include "JSystem/JUtility/JUTGamePad/asm/func_802E199C.s" } diff --git a/obj_files.mk b/obj_files.mk index 796b9c5670f..f2614468e13 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -13,7 +13,7 @@ TEXT_O_FILES := \ $(BUILD_DIR)/src/m_Do/m_Do_main.o \ $(BUILD_DIR)/asm/m/Do/m_Do_printf.o \ $(BUILD_DIR)/asm/m/Do/m_Do_audio.o \ - $(BUILD_DIR)/asm/m/Do/controller/m_Do_controller_pad.o \ + $(BUILD_DIR)/src/m_Do/m_Do_controller_pad.o \ $(BUILD_DIR)/asm/m/Do/m_Do_graphic.o \ $(BUILD_DIR)/asm/m/Do/m_Do_machine.o \ $(BUILD_DIR)/asm/m/Do/m_Do_mtx.o \ diff --git a/src/d/d_lib.cpp b/src/d/d_lib.cpp index 3cb22138e86..a341f4a5561 100644 --- a/src/d/d_lib.cpp +++ b/src/d/d_lib.cpp @@ -1,5 +1,7 @@ #include "d/d_lib/d_lib.h" +#include "JSystem/JUtility/JUTGamePad/JUTGamePad.h" #include "d/d_event/d_event/d_event.h" +#include "m_Do/m_Do_controller_pad/m_Do_controller_pad.h" #include "os/OS.h" STControl::STControl(s16 param_1, s16 param_2, s16 param_3, s16 param_4, f32 param_5, f32 param_6, @@ -61,19 +63,19 @@ asm void STControl::Yinit(void) { #endif double STControl::getValueStick() { - return lbl_803DD2E8.stickValue; + return m_cpadInfo.interface.length_from_neutral; } s16 STControl::getAngleStick() { - return lbl_803DD2E8.stickAngle; + return m_cpadInfo.interface.controlStick_angle; } double CSTControl::getValueStick() { - return lbl_803DD2E8.CstickValue; + return m_cpadInfo.interface.cStick_length_from_neutral; } s16 CSTControl::getAngleStick() { - return lbl_803DD2E8.CstickAngle; + return m_cpadInfo.interface.cStick_angle; } asm u32 STControl::checkTrigger() { diff --git a/src/f/f_pc/f_pc_manager.cpp b/src/f/f_pc/f_pc_manager.cpp index f1e9e5c5051..942039fccbd 100644 --- a/src/f/f_pc/f_pc_manager.cpp +++ b/src/f/f_pc/f_pc_manager.cpp @@ -89,7 +89,7 @@ void fpcM_Management(fpcM_ManagementFunc pFunc1, fpcM_ManagementFunc pFunc2) { } else if (lbl_80450D38 == 0) { dLib_time_c::stopTime(); Z2SoundMgr_NS_pauseAllGameSound(lbl_80450B60, true); - lbl_803DD2D8[0]->stopPatternedRumble(); + m_gamePad[0]->stopPatternedRumble(); lbl_80450D38 = 1; } } diff --git a/src/m_Do/m_Do_controller_pad.cpp b/src/m_Do/m_Do_controller_pad.cpp index 4bf93c8658d..a79db0473e1 100644 --- a/src/m_Do/m_Do_controller_pad.cpp +++ b/src/m_Do/m_Do_controller_pad.cpp @@ -1 +1,178 @@ -// ok +#include "m_Do/m_Do_controller_pad/m_Do_controller_pad.h" +#include "JSystem/JUtility/JUTGamePad/JUTGamePad.h" +#include "c/cLib.h" +#include "global.h" +#include "m_Do/m_Do_Reset/m_Do_Reset.h" +#include "pad/pad.h" + +#ifdef NONMATCHING +void mDoCPd_c::create() { + JUTGamePad* JUTGamePad_ptr; + cpadInfo* m_cpadInfo_addr; + + JUTGamePad_ptr = new JUTGamePad(JUTGamePad::Port_1); + m_gamePad[0] = JUTGamePad_ptr; + if (lbl_80450580 == 0) { + m_gamePad[1] = NULL; + m_gamePad[2] = NULL; + m_gamePad[3] = NULL; + JUTGamePad_ptr = m_gamePad[3]; + } else { + m_gamePad[1] = new JUTGamePad(JUTGamePad::Port_2); + m_gamePad[2] = new JUTGamePad(JUTGamePad::Port_3); + JUTGamePad_ptr = new JUTGamePad(JUTGamePad::Port_4); + } + m_gamePad[3] = JUTGamePad_ptr; + if (m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 == 0) { + lbl_80451501 = false; + lbl_804514EC = resetCallBack__6mDoRstFiPv; + lbl_804514F0 = 0; + } + sAnalogMode = 3; + PADSetAnalogMode(3); + m_cpadInfo_addr = &m_cpadInfo; + for (int i = 4; i != 0; i--) { + m_cpadInfo_addr->interface.field_0x3a = false; + m_cpadInfo_addr->interface.field_0x39 = false; + m_cpadInfo_addr->interface.field_0x3c = false; + m_cpadInfo_addr->interface.field_0x3b = false; + m_cpadInfo_addr = m_cpadInfo_addr->unk1; + } +} +#else +asm void mDoCPd_c::create() { + nofralloc +#include "m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_create.s" +} +#endif + +#ifdef NONMATCHING +void mDoCPd_c::read() { + //_savegpr_29(); + gamePad->read(); + if (m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 == 0 && + m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x8 != 0) { + JUTGamePad* JUTGamePad_ptr = + JUTGamePad::getGamePad(m_Do_Reset_NS_mDoRst_NS_mResetData->pad_index); + bool error = false; + if (JUTGamePad_ptr->pad_port != 0xffff && + JUTGamePad_ptr->rumble.field_0x10 != 0) { // Make the rumble thing right + error = true; + } + if (error = false) { + m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x8 = 0; + } + } + JUTGamePad** m_gamePad_ptr = m_gamePad; + cpadInfo* cpad_ptr = &m_cpadInfo; + for (int i = 0; i < 4; i++) { + if (*m_gamePad_ptr == 0) { + cLib_memSet(cpad_ptr, 0, 0x40); + } else { + convert(&cpad_ptr->interface, *m_gamePad_ptr); + LRlockCheck(&cpad_ptr->interface); + } + m_gamePad_ptr = m_gamePad_ptr + 1; // Shouldn't it be 4 if it's incrementing a pointer??? + cpad_ptr = cpad_ptr->unk1; + } +} +#else +asm void mDoCPd_c::read() { + nofralloc +#include "m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_read.s" +} +#endif + +#ifdef NONMATCHING +void mDoCPd_c::convert(interface_of_controller_pad* controllerInterface, JUTGamePad* gamePad) { + controllerInterface->button_flags = gamePad->buttons.button_flags; + controllerInterface->field_0x34 = gamePad->buttons.field_0x4; + controllerInterface->stick_x = gamePad->control_stick.stick_x; + controllerInterface->stick_y = gamePad->control_stick.stick_y; + controllerInterface->length_from_neutral = gamePad->control_stick.length_from_neutral; + controllerInterface->controlStick_angle = gamePad->control_stick.angle; + controllerInterface->cStick_x = gamePad->c_stick.stick_x; + controllerInterface->cStick_y = gamePad->c_stick.stick_y; + controllerInterface->cStick_length_from_neutral = gamePad->c_stick.length_from_neutral; + controllerInterface->cStick_angle = gamePad->c_stick.angle; + controllerInterface->analog_a = + (gamePad->buttons.analog_a - lbl_80451A30) * + lbl_80451A20; //@3709 * + //(float)((double)CONCAT44(0x43300000,(uint)(gamePad->buttons).analog_a) + //- @3713); + if (controllerInterface->analog_a > lbl_80451A24) { + controllerInterface->analog_a = lbl_80451A24; + } + controllerInterface->analog_b = + (gamePad->buttons.analog_b - lbl_80451A30) * + lbl_80451A20; //@3709 * + //(float)((double)CONCAT44(0x43300000,(uint)(gamePad->buttons).analog_b) + //- @3713); + if (controllerInterface->analog_b > lbl_80451A24) { + controllerInterface->analog_b = lbl_80451A24; + } + controllerInterface->trigger_left = + (gamePad->buttons.trigger_left - lbl_80451A30) * + lbl_80451A28; //@3711 * + //(float)((double)CONCAT44(0x43300000,(uint)(gamePad->buttons).trigger_left) + //- @3713); + if (controllerInterface->trigger_left > lbl_80451A24) { + controllerInterface->trigger_left = lbl_80451A24; + } + controllerInterface->trigger_right = + (gamePad->buttons.trigger_right - lbl_80451A30) * + lbl_80451A28; //@3711 * + //(float)((double)CONCAT44(0x43300000,(uint)(gamePad->buttons).trigger_right) + //- @3713); + if (controllerInterface->trigger_right > lbl_80451A24) { + controllerInterface->trigger_right = lbl_80451A24; + } + controllerInterface->error_value = gamePad->error_value; +} +#else +asm void mDoCPd_c::convert(interface_of_controller_pad* controllerInteface, JUTGamePad* gamePad) { + nofralloc +#include "m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_convert.s" +} +#endif + +#ifdef NONMATCHING +void mDoCPd_c::LRlockCheck(interface_of_controller_pad* controllerInterface) { + float temp_1 = controllerInterface->trigger_left; // not sure if temp is left or right + controllerInterface->field_0x3a = false; + controllerInterface->field_0x3c = false; + if (temp_1 <= g_HIO.float_global_1) { // controllerInterface->trigger_left) { + if (temp_1 < g_HIO.float_global_2) { + controllerInterface->field_0x39 = false; + } + } else { + if (controllerInterface->field_0x39 == false) { + controllerInterface->field_0x3a = true; + } + controllerInterface->field_0x39 = true; + } + if (controllerInterface->trigger_right > g_HIO.float_global_1) { + if (controllerInterface->field_0x3b == false) { + controllerInterface->field_0x3c = true; + } + controllerInterface->field_0x3b = true; + return; + } + if (controllerInterface->trigger_right >= g_HIO.float_global_2) { + return; + } + controllerInterface->field_0x3b = false; + return; +} +#else +asm void mDoCPd_c::LRlockCheck(interface_of_controller_pad* controllerInterface) { + nofralloc +#include "m_Do/m_Do_controller_pad/asm/mDoCPd_c_NS_LRlockCheck.s" +} +#endif + +void mDoCPd_c::recalibrate(void) { + JUTGamePad::clearForReset(); + JUTGamePad::CRumble::setEnabled( + PADMask(PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT)); +} \ No newline at end of file diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index ca4239e789c..46c3e9ac4bc 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -31,7 +31,7 @@ void HeapCheck::CheckHeap1(void) { #ifdef NONMATCHING extern u8 lbl_803A2EF4[0x4c]; -extern u8 lbl_803DD2E8[0x100]; +extern u8 m_cpadInfo[0x100]; void CheckHeap(u32 param_1) { HeapCheck* currentHeap; @@ -42,8 +42,8 @@ void CheckHeap(u32 param_1) { unk = 0; - if ((((lbl_803DD2E8 + 0x30)[param_1 * 0x10] & 0xffffffef) == 0x60) && - (((lbl_803DD2E8 + 0x30)[param_1 * 0x10] & 0x10) != 0)) { + if ((((m_cpadInfo + 0x30)[param_1 * 0x10] & 0xffffffef) == 0x60) && + (((m_cpadInfo + 0x30)[param_1 * 0x10] & 0x10) != 0)) { unk = 1; } diff --git a/tools/elf2dol.c b/tools/elf2dol.c index b201dd31891..95e4f039a9e 100644 --- a/tools/elf2dol.c +++ b/tools/elf2dol.c @@ -1,67 +1,67 @@ -#include -#include -#include #include +#include +#include +#include #include #include #ifndef MAX //! Get the maximum of two values -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif #ifndef MIN //! Get the minimum of two values -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif -#define EI_NIDENT 16 +#define EI_NIDENT 16 typedef struct { - unsigned char e_ident[EI_NIDENT]; - uint16_t e_type; - uint16_t e_machine; - uint32_t e_version; - uint32_t e_entry; - uint32_t e_phoff; - uint32_t e_shoff; - uint32_t e_flags; - uint16_t e_ehsize; - uint16_t e_phentsize; - uint16_t e_phnum; - uint16_t e_shentsize; - uint16_t e_shnum; - uint16_t e_shstrndx; + unsigned char e_ident[EI_NIDENT]; + uint16_t e_type; + uint16_t e_machine; + uint32_t e_version; + uint32_t e_entry; + uint32_t e_phoff; + uint32_t e_shoff; + uint32_t e_flags; + uint16_t e_ehsize; + uint16_t e_phentsize; + uint16_t e_phnum; + uint16_t e_shentsize; + uint16_t e_shnum; + uint16_t e_shstrndx; } Elf32_Ehdr; -#define EI_CLASS 4 -#define EI_DATA 5 -#define EI_VERSION 6 -#define EI_PAD 7 -#define EI_NIDENT 16 +#define EI_CLASS 4 +#define EI_DATA 5 +#define EI_VERSION 6 +#define EI_PAD 7 +#define EI_NIDENT 16 -#define ELFCLASS32 1 -#define ELFDATA2MSB 2 -#define EV_CURRENT 1 +#define ELFCLASS32 1 +#define ELFDATA2MSB 2 +#define EV_CURRENT 1 -#define ET_EXEC 2 -#define EM_PPC 20 +#define ET_EXEC 2 +#define EM_PPC 20 typedef struct { - uint32_t p_type; - uint32_t p_offset; - uint32_t p_vaddr; - uint32_t p_paddr; - uint32_t p_filesz; - uint32_t p_memsz; - uint32_t p_flags; - uint32_t p_align; + uint32_t p_type; + uint32_t p_offset; + uint32_t p_vaddr; + uint32_t p_paddr; + uint32_t p_filesz; + uint32_t p_memsz; + uint32_t p_flags; + uint32_t p_align; } Elf32_Phdr; -#define PT_LOAD 1 -#define PF_R 4 -#define PF_W 2 -#define PF_X 1 +#define PT_LOAD 1 +#define PF_R 4 +#define PF_W 2 +#define PF_X 1 int verbosity = 0; @@ -72,33 +72,27 @@ int verbosity = 0; #else -static inline uint32_t swap32(uint32_t v) -{ - return (v >> 24) | - ((v >> 8) & 0x0000FF00) | - ((v << 8) & 0x00FF0000) | - (v << 24); +static inline uint32_t swap32(uint32_t v) { + return (v >> 24) | ((v >> 8) & 0x0000FF00) | ((v << 8) & 0x00FF0000) | (v << 24); } -static inline uint16_t swaf16(uint16_t v) -{ - return (v >> 8) | (v << 8); +static inline uint16_t swaf16(uint16_t v) { + return (v >> 8) | (v << 8); } #endif /* BIG_ENDIAN */ typedef struct { - - uint32_t text_off[7]; - uint32_t data_off[11]; - uint32_t text_addr[7]; - uint32_t data_addr[11]; - uint32_t text_size[7]; - uint32_t data_size[11]; - uint32_t bss_addr; - uint32_t bss_size; - uint32_t entry; - uint32_t pad[7]; + uint32_t text_off[7]; + uint32_t data_off[11]; + uint32_t text_addr[7]; + uint32_t data_addr[11]; + uint32_t text_size[7]; + uint32_t data_size[11]; + uint32_t bss_addr; + uint32_t bss_size; + uint32_t entry; + uint32_t pad[7]; } DOL_hdr; #define HAVE_BSS 1 @@ -111,13 +105,13 @@ typedef struct { #define DOL_ALIGN(x) (((x) + DOL_ALIGNMENT - 1) & ~(DOL_ALIGNMENT - 1)) typedef struct { - DOL_hdr header; - int text_cnt; - int data_cnt; - uint32_t text_elf_off[7]; - uint32_t data_elf_off[11]; - uint32_t flags; - FILE *elf; + DOL_hdr header; + int text_cnt; + int data_cnt; + uint32_t text_elf_off[7]; + uint32_t data_elf_off[11]; + uint32_t flags; + FILE* elf; } DOL_map; // We need to track 2 PDHR sizes in the event this is for Wii, but for Gamecube @@ -125,381 +119,385 @@ typedef struct { uint32_t sdataSizes[2] = {0, 0}; uint32_t sbssSizes[2] = {0, 0}; -void usage(const char *name) -{ - fprintf(stderr, "Usage: %s [-h] [-v] [--] elf-file dol-file\n", name); - fprintf(stderr, " Convert an ELF file to a DOL file (by segments)\n"); - fprintf(stderr, " Options:\n"); - fprintf(stderr, " -h Show this help\n"); - fprintf(stderr, " -v Be more verbose (twice for even more)\n"); +void usage(const char* name) { + fprintf(stderr, "Usage: %s [-h] [-v] [--] elf-file dol-file\n", name); + fprintf(stderr, " Convert an ELF file to a DOL file (by segments)\n"); + fprintf(stderr, " Options:\n"); + fprintf(stderr, " -h Show this help\n"); + fprintf(stderr, " -v Be more verbose (twice for even more)\n"); } -#define die(x) { fprintf(stderr, x "\n"); exit(1); } -#define perrordie(x) { perror(x); exit(1); } +#define die(x) \ + { \ + fprintf(stderr, x "\n"); \ + exit(1); \ + } +#define perrordie(x) \ + { \ + perror(x); \ + exit(1); \ + } -void ferrordie(FILE *f, const char *str) -{ - if(ferror(f)) { - fprintf(stderr, "Error while "); - perrordie(str); - } else if(feof(f)) { - fprintf(stderr, "EOF while %s\n", str); - exit(1); - } else { - fprintf(stderr, "Unknown error while %s\n", str); - exit(1); - } +void ferrordie(FILE* f, const char* str) { + if (ferror(f)) { + fprintf(stderr, "Error while "); + perrordie(str); + } else if (feof(f)) { + fprintf(stderr, "EOF while %s\n", str); + exit(1); + } else { + fprintf(stderr, "Unknown error while %s\n", str); + exit(1); + } } -void add_bss(DOL_map *map, uint32_t paddr, uint32_t memsz) -{ - if(map->flags & HAVE_BSS) { - uint32_t start = swap32(map->header.bss_addr); - uint32_t size = swap32(map->header.bss_size); - if ( (start+size) == paddr) { - map->header.bss_size = swap32(size+memsz); - } - } else { - map->header.bss_addr = swap32(paddr); - map->header.bss_size = swap32(memsz); - map->flags |= HAVE_BSS; - } +void add_bss(DOL_map* map, uint32_t paddr, uint32_t memsz) { + if (map->flags & HAVE_BSS) { + uint32_t start = swap32(map->header.bss_addr); + uint32_t size = swap32(map->header.bss_size); + if ((start + size) == paddr) { + map->header.bss_size = swap32(size + memsz); + } + } else { + map->header.bss_addr = swap32(paddr); + map->header.bss_size = swap32(memsz); + map->flags |= HAVE_BSS; + } } -void increment_bss_size(DOL_map *map, uint32_t memsz) -{ - // because it can be byte swapped, we need to force the add via a temporary. - uint32_t preAdd = swap32(map->header.bss_size); - preAdd += memsz; - map->header.bss_size = swap32(preAdd); +void increment_bss_size(DOL_map* map, uint32_t memsz) { + // because it can be byte swapped, we need to force the add via a temporary. + uint32_t preAdd = swap32(map->header.bss_size); + preAdd += memsz; + map->header.bss_size = swap32(preAdd); } -void read_elf_segments(DOL_map *map, const char *elf, uint32_t sdata_pdhr, uint32_t sbss_pdhr, const char *platform) -{ - int read, i; - Elf32_Ehdr ehdr; - int isWii = !(strcmp(platform, "wii")) ? 1 : 0; - - if(verbosity >= 2) - fprintf(stderr, "Reading ELF file...\n"); - - map->elf = fopen(elf, "rb"); - if(!map->elf) - perrordie("Could not open ELF file"); - - read = fread(&ehdr, sizeof(ehdr), 1, map->elf); - if(read != 1) - ferrordie(map->elf, "reading ELF header"); - - if(memcmp(&ehdr.e_ident[0], "\177ELF", 4)) - die("Invalid ELF header"); - if(ehdr.e_ident[EI_CLASS] != ELFCLASS32) - die("Invalid ELF class"); - if(ehdr.e_ident[EI_DATA] != ELFDATA2MSB) - die("Invalid ELF byte order"); - if(ehdr.e_ident[EI_VERSION] != EV_CURRENT) - die("Invalid ELF ident version"); - if(swap32(ehdr.e_version) != EV_CURRENT) - die("Invalid ELF version"); - if(swaf16(ehdr.e_type) != ET_EXEC) - die("ELF is not an executable"); - if(swaf16(ehdr.e_machine) != EM_PPC) - die("Machine is not PowerPC"); - if(!swap32(ehdr.e_entry)) - die("ELF has no entrypoint"); - - map->header.entry = ehdr.e_entry; - - if(verbosity >= 2) - fprintf(stderr, "Valid ELF header found\n"); - - uint16_t phnum = swaf16(ehdr.e_phnum); - uint32_t phoff = swap32(ehdr.e_phoff); - Elf32_Phdr *phdrs; - - if(!phnum || !phoff) - die("ELF has no program headers"); - - if(swaf16(ehdr.e_phentsize) != sizeof(Elf32_Phdr)) - die("Invalid program header entry size"); - - phdrs = malloc(phnum * sizeof(Elf32_Phdr)); - - if(fseek(map->elf, phoff, SEEK_SET) < 0) - ferrordie(map->elf, "reading ELF program headers"); - read = fread(phdrs, sizeof(Elf32_Phdr), phnum, map->elf); - if(read != phnum) - ferrordie(map->elf, "reading ELF program headers"); - - for(i=0; i= 2) - fprintf(stderr, "PHDR %d: 0x%x [0x%x] -> 0x%08x [0x%x] flags 0x%x\n", - i, offset, filesz, paddr, memsz, flags); - if(flags & PF_X) { - // TEXT segment - if(!(flags & PF_R)) - fprintf(stderr, "Warning: non-readable segment %d\n", i); - if(flags & PF_W) - fprintf(stderr, "Warning: writable and executable segment %d\n", i); - if(filesz > memsz) { - fprintf(stderr, "Error: TEXT segment %d memory size (0x%x) smaller than file size (0x%x)\n", - i, memsz, filesz); - exit(1); - } else if (memsz > filesz) { - add_bss(map, paddr + filesz, memsz - filesz); - } - if(map->text_cnt >= MAX_TEXT_SEGMENTS) { - die("Error: Too many TEXT segments"); - } - map->header.text_addr[map->text_cnt] = swap32(paddr); - map->header.text_size[map->text_cnt] = swap32(filesz); - map->text_elf_off[map->text_cnt] = offset; - map->text_cnt++; - } else { - // DATA or BSS segment - if(!(flags & PF_R)) - fprintf(stderr, "Warning: non-readable segment %d\n", i); - if(filesz == 0) { - // BSS segment - add_bss(map, paddr, memsz); +void read_elf_segments(DOL_map* map, const char* elf, uint32_t sdata_pdhr, uint32_t sbss_pdhr, + const char* platform) { + int read, i; + Elf32_Ehdr ehdr; + int isWii = !(strcmp(platform, "wii")) ? 1 : 0; - // We need to keep PHDF sizes, so track these. - if(i == sbss_pdhr) { - sbssSizes[0] = memsz; - } else if(isWii && i == sbss_pdhr + 2) { - sbssSizes[1] = memsz; - } - } else { - // DATA segment - if(filesz > memsz) { - fprintf(stderr, "Error: segment %d memory size (0x%x) is smaller than file size (0x%x)\n", - i, memsz, filesz); - exit(1); - } - if(map->data_cnt >= MAX_DATA_SEGMENTS) { - die("Error: Too many DATA segments"); - } - // Track sdata as well. - if(i == sdata_pdhr) { - sdataSizes[0] = memsz; - } else if(isWii && i == sdata_pdhr + 2) { - sdataSizes[1] = memsz; - } + if (verbosity >= 2) + fprintf(stderr, "Reading ELF file...\n"); - map->header.data_addr[map->data_cnt] = swap32(paddr); - map->header.data_size[map->data_cnt] = swap32(filesz); - map->data_elf_off[map->data_cnt] = offset; - map->data_cnt++; - } - } - - } else { - if(verbosity >= 1) - fprintf(stderr, "Skipping empty program header %d\n", i); - } - } else if(verbosity >= 1) { - fprintf(stderr, "Skipping program header %d of type %d\n", i, swap32(phdrs[i].p_type)); - } - } - increment_bss_size(map, sdataSizes[0]); - increment_bss_size(map, sdataSizes[1]); - increment_bss_size(map, sbssSizes[0]); - increment_bss_size(map, sbssSizes[1]); - if(verbosity >= 2) { - fprintf(stderr, "Segments:\n"); - for(i=0; itext_cnt; i++) { - fprintf(stderr, " TEXT %d: 0x%08x [0x%x] from ELF offset 0x%x\n", - i, swap32(map->header.text_addr[i]), swap32(map->header.text_size[i]), - map->text_elf_off[i]); - } - for(i=0; idata_cnt; i++) { - fprintf(stderr, " DATA %d: 0x%08x [0x%x] from ELF offset 0x%x\n", - i, swap32(map->header.data_addr[i]), swap32(map->header.data_size[i]), - map->data_elf_off[i]); - } - if(map->flags & HAVE_BSS) - fprintf(stderr, " BSS segment: 0x%08x [0x%x]\n", swap32(map->header.bss_addr), - swap32(map->header.bss_size)); - } + map->elf = fopen(elf, "rb"); + if (!map->elf) + perrordie("Could not open ELF file"); + + read = fread(&ehdr, sizeof(ehdr), 1, map->elf); + if (read != 1) + ferrordie(map->elf, "reading ELF header"); + + if (memcmp(&ehdr.e_ident[0], "\177ELF", 4)) + die("Invalid ELF header"); + if (ehdr.e_ident[EI_CLASS] != ELFCLASS32) + die("Invalid ELF class"); + if (ehdr.e_ident[EI_DATA] != ELFDATA2MSB) + die("Invalid ELF byte order"); + if (ehdr.e_ident[EI_VERSION] != EV_CURRENT) + die("Invalid ELF ident version"); + if (swap32(ehdr.e_version) != EV_CURRENT) + die("Invalid ELF version"); + if (swaf16(ehdr.e_type) != ET_EXEC) + die("ELF is not an executable"); + if (swaf16(ehdr.e_machine) != EM_PPC) + die("Machine is not PowerPC"); + if (!swap32(ehdr.e_entry)) + die("ELF has no entrypoint"); + + map->header.entry = ehdr.e_entry; + + if (verbosity >= 2) + fprintf(stderr, "Valid ELF header found\n"); + + uint16_t phnum = swaf16(ehdr.e_phnum); + uint32_t phoff = swap32(ehdr.e_phoff); + Elf32_Phdr* phdrs; + + if (!phnum || !phoff) + die("ELF has no program headers"); + + if (swaf16(ehdr.e_phentsize) != sizeof(Elf32_Phdr)) + die("Invalid program header entry size"); + + phdrs = malloc(phnum * sizeof(Elf32_Phdr)); + + if (fseek(map->elf, phoff, SEEK_SET) < 0) + ferrordie(map->elf, "reading ELF program headers"); + read = fread(phdrs, sizeof(Elf32_Phdr), phnum, map->elf); + if (read != phnum) + ferrordie(map->elf, "reading ELF program headers"); + + for (i = 0; i < phnum; i++) { + if (swap32(phdrs[i].p_type) == PT_LOAD) { + uint32_t offset = swap32(phdrs[i].p_offset); + uint32_t paddr = swap32(phdrs[i].p_vaddr); + uint32_t filesz = swap32(phdrs[i].p_filesz); + uint32_t memsz = swap32(phdrs[i].p_memsz); + uint32_t flags = swap32(phdrs[i].p_flags); + if (memsz) { + if (verbosity >= 2) + fprintf(stderr, "PHDR %d: 0x%x [0x%x] -> 0x%08x [0x%x] flags 0x%x\n", i, offset, + filesz, paddr, memsz, flags); + if (flags & PF_X) { + // TEXT segment + if (!(flags & PF_R)) + fprintf(stderr, "Warning: non-readable segment %d\n", i); + if (flags & PF_W) + fprintf(stderr, "Warning: writable and executable segment %d\n", i); + if (filesz > memsz) { + fprintf(stderr, + "Error: TEXT segment %d memory size (0x%x) smaller than file size " + "(0x%x)\n", + i, memsz, filesz); + exit(1); + } else if (memsz > filesz) { + add_bss(map, paddr + filesz, memsz - filesz); + } + if (map->text_cnt >= MAX_TEXT_SEGMENTS) { + die("Error: Too many TEXT segments"); + } + map->header.text_addr[map->text_cnt] = swap32(paddr); + map->header.text_size[map->text_cnt] = swap32(filesz); + map->text_elf_off[map->text_cnt] = offset; + map->text_cnt++; + } else { + // DATA or BSS segment + if (!(flags & PF_R)) + fprintf(stderr, "Warning: non-readable segment %d\n", i); + if (filesz == 0) { + // BSS segment + add_bss(map, paddr, memsz); + + // We need to keep PHDF sizes, so track these. + if (i == sbss_pdhr) { + sbssSizes[0] = memsz; + } else if (isWii && i == sbss_pdhr + 2) { + sbssSizes[1] = memsz; + } + } else { + // DATA segment + if (filesz > memsz) { + fprintf(stderr, + "Error: segment %d memory size (0x%x) is smaller than file " + "size (0x%x)\n", + i, memsz, filesz); + exit(1); + } + if (map->data_cnt >= MAX_DATA_SEGMENTS) { + die("Error: Too many DATA segments"); + } + // Track sdata as well. + if (i == sdata_pdhr) { + sdataSizes[0] = memsz; + } else if (isWii && i == sdata_pdhr + 2) { + sdataSizes[1] = memsz; + } + + map->header.data_addr[map->data_cnt] = swap32(paddr); + map->header.data_size[map->data_cnt] = swap32(filesz); + map->data_elf_off[map->data_cnt] = offset; + map->data_cnt++; + } + } + + } else { + if (verbosity >= 1) + fprintf(stderr, "Skipping empty program header %d\n", i); + } + } else if (verbosity >= 1) { + fprintf(stderr, "Skipping program header %d of type %d\n", i, swap32(phdrs[i].p_type)); + } + } + increment_bss_size(map, sdataSizes[0]); + increment_bss_size(map, sdataSizes[1]); + increment_bss_size(map, sbssSizes[0]); + increment_bss_size(map, sbssSizes[1]); + if (verbosity >= 2) { + fprintf(stderr, "Segments:\n"); + for (i = 0; i < map->text_cnt; i++) { + fprintf(stderr, " TEXT %d: 0x%08x [0x%x] from ELF offset 0x%x\n", i, + swap32(map->header.text_addr[i]), swap32(map->header.text_size[i]), + map->text_elf_off[i]); + } + for (i = 0; i < map->data_cnt; i++) { + fprintf(stderr, " DATA %d: 0x%08x [0x%x] from ELF offset 0x%x\n", i, + swap32(map->header.data_addr[i]), swap32(map->header.data_size[i]), + map->data_elf_off[i]); + } + if (map->flags & HAVE_BSS) + fprintf(stderr, " BSS segment: 0x%08x [0x%x]\n", swap32(map->header.bss_addr), + swap32(map->header.bss_size)); + } } -void map_dol(DOL_map *map) -{ - uint32_t fpos; - int i; - - if(verbosity >= 2) - fprintf(stderr, "Laying out DOL file...\n"); - - fpos = DOL_ALIGN(sizeof(DOL_hdr)); - - for(i=0; itext_cnt; i++) { - if(verbosity >= 2) - fprintf(stderr, " TEXT segment %d at 0x%x\n", i, fpos); - map->header.text_off[i] = swap32(fpos); - fpos = DOL_ALIGN(fpos + swap32(map->header.text_size[i])); - } - for(i=0; idata_cnt; i++) { - if(verbosity >= 2) - fprintf(stderr, " DATA segment %d at 0x%x\n", i, fpos); - map->header.data_off[i] = swap32(fpos); - fpos = DOL_ALIGN(fpos + swap32(map->header.data_size[i])); - } - - if(map->text_cnt == 0) { - if(verbosity >= 1) - fprintf(stderr, "Note: adding dummy TEXT segment to work around IOS bug\n"); - map->header.text_off[0] = swap32(DOL_ALIGN(sizeof(DOL_hdr))); - } - if(map->data_cnt == 0) { - if(verbosity >= 1) - fprintf(stderr, "Note: adding dummy DATA segment to work around IOS bug\n"); - map->header.data_off[0] = swap32(DOL_ALIGN(sizeof(DOL_hdr))); - } +void map_dol(DOL_map* map) { + uint32_t fpos; + int i; + + if (verbosity >= 2) + fprintf(stderr, "Laying out DOL file...\n"); + + fpos = DOL_ALIGN(sizeof(DOL_hdr)); + + for (i = 0; i < map->text_cnt; i++) { + if (verbosity >= 2) + fprintf(stderr, " TEXT segment %d at 0x%x\n", i, fpos); + map->header.text_off[i] = swap32(fpos); + fpos = DOL_ALIGN(fpos + swap32(map->header.text_size[i])); + } + for (i = 0; i < map->data_cnt; i++) { + if (verbosity >= 2) + fprintf(stderr, " DATA segment %d at 0x%x\n", i, fpos); + map->header.data_off[i] = swap32(fpos); + fpos = DOL_ALIGN(fpos + swap32(map->header.data_size[i])); + } + + if (map->text_cnt == 0) { + if (verbosity >= 1) + fprintf(stderr, "Note: adding dummy TEXT segment to work around IOS bug\n"); + map->header.text_off[0] = swap32(DOL_ALIGN(sizeof(DOL_hdr))); + } + if (map->data_cnt == 0) { + if (verbosity >= 1) + fprintf(stderr, "Note: adding dummy DATA segment to work around IOS bug\n"); + map->header.data_off[0] = swap32(DOL_ALIGN(sizeof(DOL_hdr))); + } } -#define BLOCK (1024*1024) +#define BLOCK (1024 * 1024) -void fcpy(FILE *dst, FILE *src, uint32_t dst_off, uint32_t src_off, uint32_t size) -{ - int left = size; - int read; - int written; - int block; - void *blockbuf; +void fcpy(FILE* dst, FILE* src, uint32_t dst_off, uint32_t src_off, uint32_t size) { + int left = size; + int read; + int written; + int block; + void* blockbuf; - if(fseek(src, src_off, SEEK_SET) < 0) - ferrordie(src, "reading ELF segment data"); - if(fseek(dst, dst_off, SEEK_SET) < 0) - ferrordie(dst, "writing DOL segment data"); - - blockbuf = malloc(MIN(BLOCK, left)); - - while(left) { - block = MIN(BLOCK, left); - read = fread(blockbuf, 1, block, src); - if(read != block) { - free(blockbuf); - ferrordie(src, "reading ELF segment data"); - } - written = fwrite(blockbuf, 1, block, dst); - if(written != block) { - free(blockbuf); - ferrordie(dst, "writing DOL segment data"); - } - left -= block; - } - free(blockbuf); + if (fseek(src, src_off, SEEK_SET) < 0) + ferrordie(src, "reading ELF segment data"); + if (fseek(dst, dst_off, SEEK_SET) < 0) + ferrordie(dst, "writing DOL segment data"); + + blockbuf = malloc(MIN(BLOCK, left)); + + while (left) { + block = MIN(BLOCK, left); + read = fread(blockbuf, 1, block, src); + if (read != block) { + free(blockbuf); + ferrordie(src, "reading ELF segment data"); + } + written = fwrite(blockbuf, 1, block, dst); + if (written != block) { + free(blockbuf); + ferrordie(dst, "writing DOL segment data"); + } + left -= block; + } + free(blockbuf); } -void write_dol(DOL_map *map, const char *dol) -{ - FILE *dolf; - int written; - int i; +void write_dol(DOL_map* map, const char* dol) { + FILE* dolf; + int written; + int i; - if(verbosity >= 2) - fprintf(stderr, "Writing DOL file...\n"); - - dolf = fopen(dol, "wb"); - if(!dolf) - perrordie("Could not open DOL file"); - - if(verbosity >= 2) { - fprintf(stderr, "DOL header:\n"); - for(i=0; itext_cnt); i++) - fprintf(stderr, " TEXT %d @ 0x%08x [0x%x] off 0x%x\n", i, - swap32(map->header.text_addr[i]), swap32(map->header.text_size[i]), - swap32(map->header.text_off[i])); - for(i=0; idata_cnt); i++) - fprintf(stderr, " DATA %d @ 0x%08x [0x%x] off 0x%x\n", i, - swap32(map->header.data_addr[i]), swap32(map->header.data_size[i]), - swap32(map->header.data_off[i])); - if(swap32(map->header.bss_addr) && swap32(map->header.bss_size)) - fprintf(stderr, " BSS @ 0x%08x [0x%x]\n", swap32(map->header.bss_addr), - swap32(map->header.bss_size)); - fprintf(stderr, " Entry: 0x%08x\n", swap32(map->header.entry)); - fprintf(stderr, "Writing DOL header...\n"); - } - - written = fwrite(&map->header, sizeof(DOL_hdr), 1, dolf); - if(written != 1) - ferrordie(dolf, "writing DOL header"); - - for(i=0; itext_cnt; i++) { - if(verbosity >= 2) - fprintf(stderr, "Writing TEXT segment %d...\n", i); - fcpy(dolf, map->elf, swap32(map->header.text_off[i]), map->text_elf_off[i], - swap32(map->header.text_size[i])); - } - for(i=0; idata_cnt; i++) { - if(verbosity >= 2) - fprintf(stderr, "Writing DATA segment %d...\n", i); - fcpy(dolf, map->elf, swap32(map->header.data_off[i]), map->data_elf_off[i], - swap32(map->header.data_size[i])); - } - - if(verbosity >= 2) - fprintf(stderr, "All done!\n"); - - fclose(map->elf); - fclose(dolf); + if (verbosity >= 2) + fprintf(stderr, "Writing DOL file...\n"); + + dolf = fopen(dol, "wb"); + if (!dolf) + perrordie("Could not open DOL file"); + + if (verbosity >= 2) { + fprintf(stderr, "DOL header:\n"); + for (i = 0; i < MAX(1, map->text_cnt); i++) + fprintf(stderr, " TEXT %d @ 0x%08x [0x%x] off 0x%x\n", i, + swap32(map->header.text_addr[i]), swap32(map->header.text_size[i]), + swap32(map->header.text_off[i])); + for (i = 0; i < MAX(1, map->data_cnt); i++) + fprintf(stderr, " DATA %d @ 0x%08x [0x%x] off 0x%x\n", i, + swap32(map->header.data_addr[i]), swap32(map->header.data_size[i]), + swap32(map->header.data_off[i])); + if (swap32(map->header.bss_addr) && swap32(map->header.bss_size)) + fprintf(stderr, " BSS @ 0x%08x [0x%x]\n", swap32(map->header.bss_addr), + swap32(map->header.bss_size)); + fprintf(stderr, " Entry: 0x%08x\n", swap32(map->header.entry)); + fprintf(stderr, "Writing DOL header...\n"); + } + + written = fwrite(&map->header, sizeof(DOL_hdr), 1, dolf); + if (written != 1) + ferrordie(dolf, "writing DOL header"); + + for (i = 0; i < map->text_cnt; i++) { + if (verbosity >= 2) + fprintf(stderr, "Writing TEXT segment %d...\n", i); + fcpy(dolf, map->elf, swap32(map->header.text_off[i]), map->text_elf_off[i], + swap32(map->header.text_size[i])); + } + for (i = 0; i < map->data_cnt; i++) { + if (verbosity >= 2) + fprintf(stderr, "Writing DATA segment %d...\n", i); + fcpy(dolf, map->elf, swap32(map->header.data_off[i]), map->data_elf_off[i], + swap32(map->header.data_size[i])); + } + + if (verbosity >= 2) + fprintf(stderr, "All done!\n"); + + fclose(map->elf); + fclose(dolf); } -int main(int argc, char **argv) -{ - char **arg; +int main(int argc, char** argv) { + char** arg; - if(argc < 2) { - usage(argv[0]); - return 1; - } - arg = &argv[1]; - argc--; + if (argc < 2) { + usage(argv[0]); + return 1; + } + arg = &argv[1]; + argc--; - while(argc && *arg[0] == '-') { - if(!strcmp(*arg, "-h")) { - usage(argv[0]); - return 1; - } else if(!strcmp(*arg, "-v")) { - verbosity++; - } else if(!strcmp(*arg, "--")) { - arg++; - argc--; - break; - } else { - fprintf(stderr, "Unrecognized option %s\n", *arg); - usage(argv[0]); - return 1; - } - arg++; - argc--; - } - if(argc < 2) { - usage(argv[0]); - exit(1); - } + while (argc && *arg[0] == '-') { + if (!strcmp(*arg, "-h")) { + usage(argv[0]); + return 1; + } else if (!strcmp(*arg, "-v")) { + verbosity++; + } else if (!strcmp(*arg, "--")) { + arg++; + argc--; + break; + } else { + fprintf(stderr, "Unrecognized option %s\n", *arg); + usage(argv[0]); + return 1; + } + arg++; + argc--; + } + if (argc < 2) { + usage(argv[0]); + exit(1); + } - const char *elf_file = arg[0]; - const char *dol_file = arg[1]; - uint32_t sdata_pdhr = atoi(arg[2]); - uint32_t sbss_pdhr = atoi(arg[3]); - const char *platform = arg[4]; + const char* elf_file = arg[0]; + const char* dol_file = arg[1]; + uint32_t sdata_pdhr = atoi(arg[2]); + uint32_t sbss_pdhr = atoi(arg[3]); + const char* platform = arg[4]; - DOL_map map; + DOL_map map; - memset(&map, 0, sizeof(map)); + memset(&map, 0, sizeof(map)); - read_elf_segments(&map, elf_file, sdata_pdhr, sbss_pdhr, platform); - map_dol(&map); - write_dol(&map, dol_file); - - return 0; + read_elf_segments(&map, elf_file, sdata_pdhr, sbss_pdhr, platform); + map_dol(&map); + write_dol(&map, dol_file); + + return 0; } \ No newline at end of file