Decompile nuContRmbMgr

This commit is contained in:
JoshDuMan 2020-09-21 00:37:52 -04:00
parent 5572f155bc
commit 7e632e3ceb
26 changed files with 201 additions and 446 deletions

View File

@ -7,7 +7,7 @@ SHELL=/bin/bash -o pipefail
# BUILD_DIR is location where all build artifacts are placed
BUILD_DIR = build
SRC_DIRS := src src/os
SRC_DIRS := src src/os src/os/nusys
ASM_DIRS := asm asm/os
INCLUDE_DIRS := include include/PR
DATA_DIRS := bin

View File

@ -1,24 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel contRmbCheckMesg
/* 03B110 8005FD10 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 03B114 8005FD14 AFBF0010 */ sw $ra, 0x10($sp)
/* 03B118 8005FD18 8C82000C */ lw $v0, 0xc($a0)
/* 03B11C 8005FD1C 3C04800E */ lui $a0, 0x800e
/* 03B120 8005FD20 2484AC78 */ addiu $a0, $a0, -0x5388
/* 03B124 8005FD24 90460000 */ lbu $a2, ($v0)
/* 03B128 8005FD28 3C02800E */ lui $v0, 0x800e
/* 03B12C 8005FD2C 2442AAD8 */ addiu $v0, $v0, -0x5528
/* 03B130 8005FD30 00062840 */ sll $a1, $a2, 1
/* 03B134 8005FD34 00A62821 */ addu $a1, $a1, $a2
/* 03B138 8005FD38 00052880 */ sll $a1, $a1, 2
/* 03B13C 8005FD3C 00A62821 */ addu $a1, $a1, $a2
/* 03B140 8005FD40 000528C0 */ sll $a1, $a1, 3
/* 03B144 8005FD44 0C019FD1 */ jal osMotorInit
/* 03B148 8005FD48 00A22821 */ addu $a1, $a1, $v0
/* 03B14C 8005FD4C 8FBF0010 */ lw $ra, 0x10($sp)
/* 03B150 8005FD50 03E00008 */ jr $ra
/* 03B154 8005FD54 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,116 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel contRmbControl
/* 03AF10 8005FB10 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 03AF14 8005FB14 AFB10014 */ sw $s1, 0x14($sp)
/* 03AF18 8005FB18 0000882D */ daddu $s1, $zero, $zero
/* 03AF1C 8005FB1C AFB40020 */ sw $s4, 0x20($sp)
/* 03AF20 8005FB20 24140002 */ addiu $s4, $zero, 2
/* 03AF24 8005FB24 AFB50024 */ sw $s5, 0x24($sp)
/* 03AF28 8005FB28 24150001 */ addiu $s5, $zero, 1
/* 03AF2C 8005FB2C AFB3001C */ sw $s3, 0x1c($sp)
/* 03AF30 8005FB30 0220982D */ daddu $s3, $s1, $zero
/* 03AF34 8005FB34 AFB20018 */ sw $s2, 0x18($sp)
/* 03AF38 8005FB38 0220902D */ daddu $s2, $s1, $zero
/* 03AF3C 8005FB3C AFBF0028 */ sw $ra, 0x28($sp)
/* 03AF40 8005FB40 AFB00010 */ sw $s0, 0x10($sp)
.L8005FB44:
/* 03AF44 8005FB44 3C02800B */ lui $v0, 0x800b
/* 03AF48 8005FB48 24421D40 */ addiu $v0, $v0, 0x1d40
/* 03AF4C 8005FB4C 02428021 */ addu $s0, $s2, $v0
/* 03AF50 8005FB50 92030007 */ lbu $v1, 7($s0)
/* 03AF54 8005FB54 10740015 */ beq $v1, $s4, .L8005FBAC
/* 03AF58 8005FB58 28620003 */ slti $v0, $v1, 3
/* 03AF5C 8005FB5C 50400007 */ beql $v0, $zero, .L8005FB7C
/* 03AF60 8005FB60 28620083 */ slti $v0, $v1, 0x83
/* 03AF64 8005FB64 5060003B */ beql $v1, $zero, .L8005FC54
/* 03AF68 8005FB68 26730068 */ addiu $s3, $s3, 0x68
/* 03AF6C 8005FB6C 10750009 */ beq $v1, $s5, .L8005FB94
/* 03AF70 8005FB70 0200202D */ daddu $a0, $s0, $zero
/* 03AF74 8005FB74 08017F15 */ j .L8005FC54
/* 03AF78 8005FB78 26730068 */ addiu $s3, $s3, 0x68
.L8005FB7C:
/* 03AF7C 8005FB7C 10400034 */ beqz $v0, .L8005FC50
/* 03AF80 8005FB80 28620081 */ slti $v0, $v1, 0x81
/* 03AF84 8005FB84 54400033 */ bnel $v0, $zero, .L8005FC54
/* 03AF88 8005FB88 26730068 */ addiu $s3, $s3, 0x68
/* 03AF8C 8005FB8C 08017F0E */ j .L8005FC38
/* 03AF90 8005FB90 00000000 */ nop
.L8005FB94:
/* 03AF94 8005FB94 0C017E48 */ jal osMotorStop
/* 03AF98 8005FB98 0220282D */ daddu $a1, $s1, $zero
/* 03AF9C 8005FB9C 5440002C */ bnel $v0, $zero, .L8005FC50
/* 03AFA0 8005FBA0 A2000007 */ sb $zero, 7($s0)
/* 03AFA4 8005FBA4 08017F15 */ j .L8005FC54
/* 03AFA8 8005FBA8 26730068 */ addiu $s3, $s3, 0x68
.L8005FBAC:
/* 03AFAC 8005FBAC 92020008 */ lbu $v0, 8($s0)
/* 03AFB0 8005FBB0 14400019 */ bnez $v0, .L8005FC18
/* 03AFB4 8005FBB4 0200202D */ daddu $a0, $s0, $zero
/* 03AFB8 8005FBB8 96030004 */ lhu $v1, 4($s0)
/* 03AFBC 8005FBBC 3C028009 */ lui $v0, 0x8009
/* 03AFC0 8005FBC0 8C423CE0 */ lw $v0, 0x3ce0($v0)
/* 03AFC4 8005FBC4 14400002 */ bnez $v0, .L8005FBD0
/* 03AFC8 8005FBC8 0062001B */ divu $zero, $v1, $v0
/* 03AFCC 8005FBCC 0007000D */ break 7
.L8005FBD0:
/* 03AFD0 8005FBD0 00001010 */ mfhi $v0
/* 03AFD4 8005FBD4 1440000C */ bnez $v0, .L8005FC08
/* 03AFD8 8005FBD8 00000000 */ nop
/* 03AFDC 8005FBDC 3C04800E */ lui $a0, 0x800e
/* 03AFE0 8005FBE0 2484AC78 */ addiu $a0, $a0, -0x5388
/* 03AFE4 8005FBE4 3C05800E */ lui $a1, 0x800e
/* 03AFE8 8005FBE8 24A5AAD8 */ addiu $a1, $a1, -0x5528
/* 03AFEC 8005FBEC 02652821 */ addu $a1, $s3, $a1
/* 03AFF0 8005FBF0 0C019FD1 */ jal osMotorInit
/* 03AFF4 8005FBF4 0220302D */ daddu $a2, $s1, $zero
/* 03AFF8 8005FBF8 14400003 */ bnez $v0, .L8005FC08
/* 03AFFC 8005FBFC 00000000 */ nop
/* 03B000 8005FC00 A2150008 */ sb $s5, 8($s0)
/* 03B004 8005FC04 A2140009 */ sb $s4, 9($s0)
.L8005FC08:
/* 03B008 8005FC08 96020004 */ lhu $v0, 4($s0)
/* 03B00C 8005FC0C 24420001 */ addiu $v0, $v0, 1
/* 03B010 8005FC10 08017F14 */ j .L8005FC50
/* 03B014 8005FC14 A6020004 */ sh $v0, 4($s0)
.L8005FC18:
/* 03B018 8005FC18 0C017E48 */ jal osMotorStop
/* 03B01C 8005FC1C 0220282D */ daddu $a1, $s1, $zero
/* 03B020 8005FC20 5040000C */ beql $v0, $zero, .L8005FC54
/* 03B024 8005FC24 26730068 */ addiu $s3, $s3, 0x68
/* 03B028 8005FC28 A6110004 */ sh $s1, 4($s0)
/* 03B02C 8005FC2C A2000008 */ sb $zero, 8($s0)
/* 03B030 8005FC30 08017F14 */ j .L8005FC50
/* 03B034 8005FC34 A2000009 */ sb $zero, 9($s0)
.L8005FC38:
/* 03B038 8005FC38 92020009 */ lbu $v0, 9($s0)
/* 03B03C 8005FC3C 54540005 */ bnel $v0, $s4, .L8005FC54
/* 03B040 8005FC40 26730068 */ addiu $s3, $s3, 0x68
/* 03B044 8005FC44 0200202D */ daddu $a0, $s0, $zero
/* 03B048 8005FC48 0C017E48 */ jal osMotorStop
/* 03B04C 8005FC4C 0220282D */ daddu $a1, $s1, $zero
.L8005FC50:
/* 03B050 8005FC50 26730068 */ addiu $s3, $s3, 0x68
.L8005FC54:
/* 03B054 8005FC54 26310001 */ addiu $s1, $s1, 1
/* 03B058 8005FC58 2E220004 */ sltiu $v0, $s1, 4
/* 03B05C 8005FC5C 1440FFB9 */ bnez $v0, .L8005FB44
/* 03B060 8005FC60 2652000A */ addiu $s2, $s2, 0xa
/* 03B064 8005FC64 8FBF0028 */ lw $ra, 0x28($sp)
/* 03B068 8005FC68 8FB50024 */ lw $s5, 0x24($sp)
/* 03B06C 8005FC6C 8FB40020 */ lw $s4, 0x20($sp)
/* 03B070 8005FC70 8FB3001C */ lw $s3, 0x1c($sp)
/* 03B074 8005FC74 8FB20018 */ lw $s2, 0x18($sp)
/* 03B078 8005FC78 8FB10014 */ lw $s1, 0x14($sp)
/* 03B07C 8005FC7C 8FB00010 */ lw $s0, 0x10($sp)
/* 03B080 8005FC80 0000102D */ daddu $v0, $zero, $zero
/* 03B084 8005FC84 03E00008 */ jr $ra
/* 03B088 8005FC88 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,91 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel contRmbStartMesg
/* 03B158 8005FD58 8C84000C */ lw $a0, 0xc($a0)
/* 03B15C 8005FD5C 90830000 */ lbu $v1, ($a0)
/* 03B160 8005FD60 8C850008 */ lw $a1, 8($a0)
/* 03B164 8005FD64 00031080 */ sll $v0, $v1, 2
/* 03B168 8005FD68 00431021 */ addu $v0, $v0, $v1
/* 03B16C 8005FD6C 90A30006 */ lbu $v1, 6($a1)
/* 03B170 8005FD70 00021040 */ sll $v0, $v0, 1
/* 03B174 8005FD74 3C01800B */ lui $at, 0x800b
/* 03B178 8005FD78 00220821 */ addu $at, $at, $v0
/* 03B17C 8005FD7C A0231D46 */ sb $v1, 0x1d46($at)
/* 03B180 8005FD80 90830000 */ lbu $v1, ($a0)
/* 03B184 8005FD84 00031080 */ sll $v0, $v1, 2
/* 03B188 8005FD88 00431021 */ addu $v0, $v0, $v1
/* 03B18C 8005FD8C 94A30002 */ lhu $v1, 2($a1)
/* 03B190 8005FD90 00021040 */ sll $v0, $v0, 1
/* 03B194 8005FD94 3C01800B */ lui $at, 0x800b
/* 03B198 8005FD98 00220821 */ addu $at, $at, $v0
/* 03B19C 8005FD9C A4231D42 */ sh $v1, 0x1d42($at)
/* 03B1A0 8005FDA0 90830000 */ lbu $v1, ($a0)
/* 03B1A4 8005FDA4 00031080 */ sll $v0, $v1, 2
/* 03B1A8 8005FDA8 00431021 */ addu $v0, $v0, $v1
/* 03B1AC 8005FDAC 94A30000 */ lhu $v1, ($a1)
/* 03B1B0 8005FDB0 00021040 */ sll $v0, $v0, 1
/* 03B1B4 8005FDB4 3C01800B */ lui $at, 0x800b
/* 03B1B8 8005FDB8 00220821 */ addu $at, $at, $v0
/* 03B1BC 8005FDBC A4231D40 */ sh $v1, 0x1d40($at)
/* 03B1C0 8005FDC0 90830000 */ lbu $v1, ($a0)
/* 03B1C4 8005FDC4 00031080 */ sll $v0, $v1, 2
/* 03B1C8 8005FDC8 00431021 */ addu $v0, $v0, $v1
/* 03B1CC 8005FDCC 00021040 */ sll $v0, $v0, 1
/* 03B1D0 8005FDD0 3C01800B */ lui $at, 0x800b
/* 03B1D4 8005FDD4 00220821 */ addu $at, $at, $v0
/* 03B1D8 8005FDD8 A4201D44 */ sh $zero, 0x1d44($at)
/* 03B1DC 8005FDDC 03E00008 */ jr $ra
/* 03B1E0 8005FDE0 0000102D */ daddu $v0, $zero, $zero
/* 03B1E4 8005FDE4 8C82000C */ lw $v0, 0xc($a0)
/* 03B1E8 8005FDE8 90430000 */ lbu $v1, ($v0)
/* 03B1EC 8005FDEC 00031080 */ sll $v0, $v1, 2
/* 03B1F0 8005FDF0 00431021 */ addu $v0, $v0, $v1
/* 03B1F4 8005FDF4 00021040 */ sll $v0, $v0, 1
/* 03B1F8 8005FDF8 3C01800B */ lui $at, 0x800b
/* 03B1FC 8005FDFC 00220821 */ addu $at, $at, $v0
/* 03B200 8005FE00 A4201D42 */ sh $zero, 0x1d42($at)
/* 03B204 8005FE04 03E00008 */ jr $ra
/* 03B208 8005FE08 0000102D */ daddu $v0, $zero, $zero
/* 03B20C 8005FE0C 0000282D */ daddu $a1, $zero, $zero
/* 03B210 8005FE10 24060004 */ addiu $a2, $zero, 4
/* 03B214 8005FE14 3C03800B */ lui $v1, 0x800b
/* 03B218 8005FE18 24631D47 */ addiu $v1, $v1, 0x1d47
/* 03B21C 8005FE1C 00A0202D */ daddu $a0, $a1, $zero
.L8005FE20:
/* 03B220 8005FE20 3C01800B */ lui $at, 0x800b
/* 03B224 8005FE24 00240821 */ addu $at, $at, $a0
/* 03B228 8005FE28 A0261D46 */ sb $a2, 0x1d46($at)
/* 03B22C 8005FE2C 2484000A */ addiu $a0, $a0, 0xa
/* 03B230 8005FE30 90620000 */ lbu $v0, ($v1)
/* 03B234 8005FE34 24A50001 */ addiu $a1, $a1, 1
/* 03B238 8005FE38 34420080 */ ori $v0, $v0, 0x80
/* 03B23C 8005FE3C A0620000 */ sb $v0, ($v1)
/* 03B240 8005FE40 2CA20004 */ sltiu $v0, $a1, 4
/* 03B244 8005FE44 1440FFF6 */ bnez $v0, .L8005FE20
/* 03B248 8005FE48 2463000A */ addiu $v1, $v1, 0xa
/* 03B24C 8005FE4C 03E00008 */ jr $ra
/* 03B250 8005FE50 0000102D */ daddu $v0, $zero, $zero
/* 03B254 8005FE54 0000202D */ daddu $a0, $zero, $zero
/* 03B258 8005FE58 3C03800B */ lui $v1, 0x800b
/* 03B25C 8005FE5C 24631D47 */ addiu $v1, $v1, 0x1d47
.L8005FE60:
/* 03B260 8005FE60 90620000 */ lbu $v0, ($v1)
/* 03B264 8005FE64 24840001 */ addiu $a0, $a0, 1
/* 03B268 8005FE68 3042007F */ andi $v0, $v0, 0x7f
/* 03B26C 8005FE6C A0620000 */ sb $v0, ($v1)
/* 03B270 8005FE70 2C820004 */ sltiu $v0, $a0, 4
/* 03B274 8005FE74 1440FFFA */ bnez $v0, .L8005FE60
/* 03B278 8005FE78 2463000A */ addiu $v1, $v1, 0xa
/* 03B27C 8005FE7C 03E00008 */ jr $ra
/* 03B280 8005FE80 0000102D */ daddu $v0, $zero, $zero
/* 03B284 8005FE84 00000000 */ nop
/* 03B288 8005FE88 00000000 */ nop
/* 03B28C 8005FE8C 00000000 */ nop

View File

@ -1,15 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel nuContRmbMgrRemove
/* 03B0EC 8005FCEC 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 03B0F0 8005FCF0 3C048009 */ lui $a0, 0x8009
/* 03B0F4 8005FCF4 24843D00 */ addiu $a0, $a0, 0x3d00
/* 03B0F8 8005FCF8 AFBF0010 */ sw $ra, 0x10($sp)
/* 03B0FC 8005FCFC 0C018124 */ jal nuSiCallBackRemove
/* 03B100 8005FD00 00000000 */ nop
/* 03B104 8005FD04 8FBF0010 */ lw $ra, 0x10($sp)
/* 03B108 8005FD08 03E00008 */ jr $ra
/* 03B10C 8005FD0C 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,150 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel osMotorStop
/* 03AD20 8005F920 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 03AD24 8005F924 AFB20018 */ sw $s2, 0x18($sp)
/* 03AD28 8005F928 0080902D */ daddu $s2, $a0, $zero
/* 03AD2C 8005F92C 00A0302D */ daddu $a2, $a1, $zero
/* 03AD30 8005F930 AFB00010 */ sw $s0, 0x10($sp)
/* 03AD34 8005F934 AFBF0020 */ sw $ra, 0x20($sp)
/* 03AD38 8005F938 AFB3001C */ sw $s3, 0x1c($sp)
/* 03AD3C 8005F93C AFB10014 */ sw $s1, 0x14($sp)
/* 03AD40 8005F940 92430006 */ lbu $v1, 6($s2)
/* 03AD44 8005F944 24130002 */ addiu $s3, $zero, 2
/* 03AD48 8005F948 10730069 */ beq $v1, $s3, .L8005FAF0
/* 03AD4C 8005F94C 0000802D */ daddu $s0, $zero, $zero
/* 03AD50 8005F950 28620003 */ slti $v0, $v1, 3
/* 03AD54 8005F954 10400005 */ beqz $v0, .L8005F96C
/* 03AD58 8005F958 24020001 */ addiu $v0, $zero, 1
/* 03AD5C 8005F95C 1062000A */ beq $v1, $v0, .L8005F988
/* 03AD60 8005F960 0200102D */ daddu $v0, $s0, $zero
/* 03AD64 8005F964 08017EBD */ j .L8005FAF4
/* 03AD68 8005F968 00000000 */ nop
.L8005F96C:
/* 03AD6C 8005F96C 24020003 */ addiu $v0, $zero, 3
/* 03AD70 8005F970 10620018 */ beq $v1, $v0, .L8005F9D4
/* 03AD74 8005F974 24020004 */ addiu $v0, $zero, 4
/* 03AD78 8005F978 10620048 */ beq $v1, $v0, .L8005FA9C
/* 03AD7C 8005F97C 0200102D */ daddu $v0, $s0, $zero
/* 03AD80 8005F980 08017EBD */ j .L8005FAF4
/* 03AD84 8005F984 00000000 */ nop
.L8005F988:
/* 03AD88 8005F988 96420004 */ lhu $v0, 4($s2)
/* 03AD8C 8005F98C 1040000C */ beqz $v0, .L8005F9C0
/* 03AD90 8005F990 00062040 */ sll $a0, $a2, 1
/* 03AD94 8005F994 00862021 */ addu $a0, $a0, $a2
/* 03AD98 8005F998 00042080 */ sll $a0, $a0, 2
/* 03AD9C 8005F99C 00862021 */ addu $a0, $a0, $a2
/* 03ADA0 8005F9A0 000420C0 */ sll $a0, $a0, 3
/* 03ADA4 8005F9A4 3C02800E */ lui $v0, 0x800e
/* 03ADA8 8005F9A8 2442AAD8 */ addiu $v0, $v0, -0x5528
/* 03ADAC 8005F9AC 00822021 */ addu $a0, $a0, $v0
/* 03ADB0 8005F9B0 0C019F80 */ jal osMotorAccess
/* 03ADB4 8005F9B4 0000282D */ daddu $a1, $zero, $zero
/* 03ADB8 8005F9B8 08017E71 */ j .L8005F9C4
/* 03ADBC 8005F9BC 0040802D */ daddu $s0, $v0, $zero
.L8005F9C0:
/* 03ADC0 8005F9C0 A2530006 */ sb $s3, 6($s2)
.L8005F9C4:
/* 03ADC4 8005F9C4 96420004 */ lhu $v0, 4($s2)
/* 03ADC8 8005F9C8 2442FFFF */ addiu $v0, $v0, -1
/* 03ADCC 8005F9CC 08017EBC */ j .L8005FAF0
/* 03ADD0 8005F9D0 A6420004 */ sh $v0, 4($s2)
.L8005F9D4:
/* 03ADD4 8005F9D4 96420002 */ lhu $v0, 2($s2)
/* 03ADD8 8005F9D8 1040001F */ beqz $v0, .L8005FA58
/* 03ADDC 8005F9DC 00062040 */ sll $a0, $a2, 1
/* 03ADE0 8005F9E0 96420004 */ lhu $v0, 4($s2)
/* 03ADE4 8005F9E4 96430000 */ lhu $v1, ($s2)
/* 03ADE8 8005F9E8 00431021 */ addu $v0, $v0, $v1
/* 03ADEC 8005F9EC 304300FF */ andi $v1, $v0, 0xff
/* 03ADF0 8005F9F0 3042FFFF */ andi $v0, $v0, 0xffff
/* 03ADF4 8005F9F4 00021202 */ srl $v0, $v0, 8
/* 03ADF8 8005F9F8 1040000B */ beqz $v0, .L8005FA28
/* 03ADFC 8005F9FC A6430004 */ sh $v1, 4($s2)
/* 03AE00 8005FA00 00062040 */ sll $a0, $a2, 1
/* 03AE04 8005FA04 00862021 */ addu $a0, $a0, $a2
/* 03AE08 8005FA08 00042080 */ sll $a0, $a0, 2
/* 03AE0C 8005FA0C 00862021 */ addu $a0, $a0, $a2
/* 03AE10 8005FA10 000420C0 */ sll $a0, $a0, 3
/* 03AE14 8005FA14 3C02800E */ lui $v0, 0x800e
/* 03AE18 8005FA18 2442AAD8 */ addiu $v0, $v0, -0x5528
/* 03AE1C 8005FA1C 00822021 */ addu $a0, $a0, $v0
/* 03AE20 8005FA20 08017E92 */ j .L8005FA48
/* 03AE24 8005FA24 24050001 */ addiu $a1, $zero, 1
.L8005FA28:
/* 03AE28 8005FA28 00862021 */ addu $a0, $a0, $a2
/* 03AE2C 8005FA2C 00042080 */ sll $a0, $a0, 2
/* 03AE30 8005FA30 00862021 */ addu $a0, $a0, $a2
/* 03AE34 8005FA34 000420C0 */ sll $a0, $a0, 3
/* 03AE38 8005FA38 3C02800E */ lui $v0, 0x800e
/* 03AE3C 8005FA3C 2442AAD8 */ addiu $v0, $v0, -0x5528
/* 03AE40 8005FA40 00822021 */ addu $a0, $a0, $v0
/* 03AE44 8005FA44 0000282D */ daddu $a1, $zero, $zero
.L8005FA48:
/* 03AE48 8005FA48 0C019F80 */ jal osMotorAccess
/* 03AE4C 8005FA4C 00000000 */ nop
/* 03AE50 8005FA50 08017EA3 */ j .L8005FA8C
/* 03AE54 8005FA54 0040802D */ daddu $s0, $v0, $zero
.L8005FA58:
/* 03AE58 8005FA58 00862021 */ addu $a0, $a0, $a2
/* 03AE5C 8005FA5C 00042080 */ sll $a0, $a0, 2
/* 03AE60 8005FA60 00862021 */ addu $a0, $a0, $a2
/* 03AE64 8005FA64 000420C0 */ sll $a0, $a0, 3
/* 03AE68 8005FA68 3C02800E */ lui $v0, 0x800e
/* 03AE6C 8005FA6C 2442AAD8 */ addiu $v0, $v0, -0x5528
/* 03AE70 8005FA70 00822021 */ addu $a0, $a0, $v0
/* 03AE74 8005FA74 0C019F80 */ jal osMotorAccess
/* 03AE78 8005FA78 0000282D */ daddu $a1, $zero, $zero
/* 03AE7C 8005FA7C 0040802D */ daddu $s0, $v0, $zero
/* 03AE80 8005FA80 24020001 */ addiu $v0, $zero, 1
/* 03AE84 8005FA84 A2420006 */ sb $v0, 6($s2)
/* 03AE88 8005FA88 A6530004 */ sh $s3, 4($s2)
.L8005FA8C:
/* 03AE8C 8005FA8C 96420002 */ lhu $v0, 2($s2)
/* 03AE90 8005FA90 2442FFFF */ addiu $v0, $v0, -1
/* 03AE94 8005FA94 08017EBC */ j .L8005FAF0
/* 03AE98 8005FA98 A6420002 */ sh $v0, 2($s2)
.L8005FA9C:
/* 03AE9C 8005FA9C 3C04800E */ lui $a0, 0x800e
/* 03AEA0 8005FAA0 2484AC78 */ addiu $a0, $a0, -0x5388
/* 03AEA4 8005FAA4 00061040 */ sll $v0, $a2, 1
/* 03AEA8 8005FAA8 00461021 */ addu $v0, $v0, $a2
/* 03AEAC 8005FAAC 00021080 */ sll $v0, $v0, 2
/* 03AEB0 8005FAB0 00461021 */ addu $v0, $v0, $a2
/* 03AEB4 8005FAB4 000210C0 */ sll $v0, $v0, 3
/* 03AEB8 8005FAB8 3C03800E */ lui $v1, 0x800e
/* 03AEBC 8005FABC 2463AAD8 */ addiu $v1, $v1, -0x5528
/* 03AEC0 8005FAC0 00438821 */ addu $s1, $v0, $v1
/* 03AEC4 8005FAC4 0C019FD1 */ jal osMotorInit
/* 03AEC8 8005FAC8 0220282D */ daddu $a1, $s1, $zero
/* 03AECC 8005FACC 0040802D */ daddu $s0, $v0, $zero
/* 03AED0 8005FAD0 16000005 */ bnez $s0, .L8005FAE8
/* 03AED4 8005FAD4 24020001 */ addiu $v0, $zero, 1
/* 03AED8 8005FAD8 0220202D */ daddu $a0, $s1, $zero
/* 03AEDC 8005FADC 0C019F80 */ jal osMotorAccess
/* 03AEE0 8005FAE0 0000282D */ daddu $a1, $zero, $zero
/* 03AEE4 8005FAE4 24020001 */ addiu $v0, $zero, 1
.L8005FAE8:
/* 03AEE8 8005FAE8 A2420006 */ sb $v0, 6($s2)
/* 03AEEC 8005FAEC A6530004 */ sh $s3, 4($s2)
.L8005FAF0:
/* 03AEF0 8005FAF0 0200102D */ daddu $v0, $s0, $zero
.L8005FAF4:
/* 03AEF4 8005FAF4 8FBF0020 */ lw $ra, 0x20($sp)
/* 03AEF8 8005FAF8 8FB3001C */ lw $s3, 0x1c($sp)
/* 03AEFC 8005FAFC 8FB20018 */ lw $s2, 0x18($sp)
/* 03AF00 8005FB00 8FB10014 */ lw $s1, 0x14($sp)
/* 03AF04 8005FB04 8FB00010 */ lw $s0, 0x10($sp)
/* 03AF08 8005FB08 03E00008 */ jr $ra
/* 03AF0C 8005FB0C 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -2,7 +2,7 @@
.set noreorder # don't insert nops after branches
glabel osMotorAccess
glabel __osMotorAccess
/* 043200 80067E00 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 043204 80067E04 AFB10014 */ sw $s1, 0x14($sp)
/* 043208 80067E08 00808821 */ addu $s1, $a0, $zero

View File

@ -52,19 +52,19 @@ SECTIONS
build/src/code_39210_len_aa0.o(.text);
build/src/os/code_39cb0_len_100.o(.text);
build/src/os/code_39db0_len_8a0.o(.text);
build/src/os/nuGfxFuncSet.o(.text);
build/src/os/nuGfxPreNMIFuncSet.o(.text);
build/src/os/nuGfxTaskAllEndWait.o(.text);
build/src/os/nuGfxSetCfb.o(.text);
build/src/os/nuGfxDisplayOff.o(.text);
build/src/os/nuGfxDisplayOn.o(.text);
build/src/os/nuPiInit.o(.text);
build/src/os/nuPiReadRom.o(.text);
build/src/os/nuGfxInit.o(.text);
build/src/os/nuContInit.o(.text);
build/src/os/nuContDataGet.o(.text);
build/src/os/nuContPakMgr.o(.text);
build/src/os/code_3a850_le_a40.o(.text);
build/src/os/nusys/nuGfxFuncSet.o(.text);
build/src/os/nusys/nuGfxPreNMIFuncSet.o(.text);
build/src/os/nusys/nuGfxTaskAllEndWait.o(.text);
build/src/os/nusys/nuGfxSetCfb.o(.text);
build/src/os/nusys/nuGfxDisplayOff.o(.text);
build/src/os/nusys/nuGfxDisplayOn.o(.text);
build/src/os/nusys/nuPiInit.o(.text);
build/src/os/nusys/nuPiReadRom.o(.text);
build/src/os/nusys/nuGfxInit.o(.text);
build/src/os/nusys/nuContInit.o(.text);
build/src/os/nusys/nuContDataGet.o(.text);
build/src/os/nusys/nuContPakMgr.o(.text);
build/src/os/nusys/nuContRmbMgr.o(.text);
build/src/os/code_3b290_len_100.o(.text);
build/src/os/code_3b390_len_110.o(.text);
build/src/os/code_3b4a0_len_270.o(.text);

View File

@ -1,14 +0,0 @@
#include "common.h"
#undef osMotorStop
s32 INCLUDE_ASM("os/code_3a850_le_a40", osMotorStop, OSPfs* unk);
INCLUDE_API_ASM("os/code_3a850_le_a40", contRmbControl);
INCLUDE_API_ASM("os/code_3a850_le_a40", nuContRmbMgrInit);
INCLUDE_API_ASM("os/code_3a850_le_a40", nuContRmbMgrRemove);
INCLUDE_API_ASM("os/code_3a850_le_a40", contRmbCheckMesg);
INCLUDE_API_ASM("os/code_3a850_le_a40", contRmbStartMesg);

View File

@ -1,6 +1,6 @@
#include "common.h"
INCLUDE_API_ASM("os/code_43200_len_7c0", osMotorAccess);
s32 INCLUDE_ASM("os/code_43200_len_7c0", __osMotorAccess, OSPfs* pfs, s32 unk);
s32 INCLUDE_ASM("os/code_43200_len_7c0", osMotorInit, OSMesgQueue* queue, OSPfs* pfs, int unk);

View File

@ -9,15 +9,12 @@ void nuContPakMgrRemove(void) {
nuSiCallBackRemove(&nuContCallBack);
}
// TODO: Determine what this is.
extern OSMesgQueue D_800DAC78;
static s32 contPakOpen(NUSiCommonMesg* mesg) {
s32 err;
NUContPakFile* file = (NUContPakFile*) mesg->dataPtr;
file->type = NU_CONT_PAK_TYPE_NONE;
err = osPfsInitPak(&D_800DAC78, file->pfs, file->pfs->channel);
err = osPfsInitPak(&nuSiMesgQ, file->pfs, file->pfs->channel);
if (err == 0) {
file->type = NU_CONT_PAK_TYPE_PAK;

162
src/os/nusys/nuContRmbMgr.c Normal file
View File

@ -0,0 +1,162 @@
#include "common.h"
#include "nu/nusys.h"
static s32 contRmbControl(NUContRmbCtl* rmbCtl, u32 contNo) {
s32 ret = 0;
u32 cnt;
switch (rmbCtl->state) {
case NU_CONT_RMB_STATE_STOPPED:
break;
case NU_CONT_RMB_STATE_STOPPING:
if (rmbCtl->counter != 0) {
ret = osMotorStop(&nuContPfs[contNo]);
} else {
rmbCtl->state = NU_CONT_RMB_STATE_STOPPED;
}
rmbCtl->counter--;
break;
case NU_CONT_RMB_STATE_RUN:
if (rmbCtl->frame > 0) {
rmbCtl->counter += rmbCtl->freq;
cnt = rmbCtl->counter >> 8;
rmbCtl->counter &= 0xFF;
if (cnt > 0) {
ret = osMotorStart(&nuContPfs[contNo]);
} else {
ret = osMotorStop(&nuContPfs[contNo]);
}
} else {
ret = osMotorStop(&nuContPfs[contNo]);
rmbCtl->state = NU_CONT_RMB_STATE_STOPPING;
rmbCtl->counter = 2;
}
rmbCtl->frame--;
break;
case NU_CONT_RMB_STATE_FORCESTOP:
ret = osMotorInit(&nuSiMesgQ, &nuContPfs[contNo], contNo);
if (ret == 0) {
osMotorStop(&nuContPfs[contNo]);
}
rmbCtl->state = NU_CONT_RMB_STATE_STOPPING;
rmbCtl->counter = 2;
}
return ret;
}
static s32 contRmbRetrace(NUSiCommonMesg* mesg) {
u32 i;
NUContRmbCtl* cont;
for (i = 0; i < NU_CONT_MAXCONTROLLERS; i++) {
cont = &nuContRmbCtl[i];
switch (cont->mode) {
case NU_CONT_RMB_MODE_DISABLE:
break;
case NU_CONT_RMB_MODE_ENABLE:
if (contRmbControl(cont, i)) {
cont->mode = NU_CONT_RMB_MODE_DISABLE;
}
break;
case NU_CONT_RMB_MODE_AUTORUN:
if (cont->autorun == NU_CONT_RMB_AUTO_SEARCH) {
if ((cont->counter % nuContRmbSearchTime) == 0) {
if (osMotorInit(&nuSiMesgQ, &nuContPfs[i], i) == 0) {
cont->autorun = NU_CONT_RMB_AUTO_FIND;
cont->type = NU_CONT_PAK_TYPE_RUMBLE;
}
}
cont->counter++;
} else {
if (contRmbControl(cont, i)) {
cont->counter = i;
cont->autorun = NU_CONT_RMB_AUTO_SEARCH;
cont->type = NU_CONT_PAK_TYPE_NONE;
}
}
break;
case (NU_CONT_RMB_MODE_ENABLE | NU_CONT_RMB_MODE_PAUSE):
case (NU_CONT_RMB_MODE_AUTORUN | NU_CONT_RMB_MODE_PAUSE):
if (cont->type == NU_CONT_PAK_TYPE_RUMBLE) {
contRmbControl(cont, i);
}
}
}
return 0;
}
#ifdef NON_MATCHING
// Will match when data is decompiled.
void nuContRmbMgrInit(void) {
u32 i;
for (i = 0; i < NU_CONT_MAXCONTROLLERS; i++) {
nuContRmbCtl[i].state = NU_CONT_RMB_STATE_STOPPED;
nuContRmbCtl[i].mode = NU_CONT_RMB_MODE_DISABLE;
nuContRmbCtl[i].counter = i;
}
nuSiCallBackAdd(&nuContRmbCallBack);
}
#else
void INCLUDE_ASM("os/nuContRmbMgr", nuContRmbMgrInit);
#endif
void nuContRmbMgrRemove(void) {
nuSiCallBackRemove(&nuContRmbCallBack);
}
static s32 contRmbCheckMesg(NUSiCommonMesg* mesg) {
NUContRmbMesg* rmbMesg = (NUContRmbMesg*) mesg->dataPtr;
return osMotorInit(&nuSiMesgQ, &nuContPfs[rmbMesg->contNo], rmbMesg->contNo);
}
static s32 contRmbStartMesg(NUSiCommonMesg* mesg) {
NUContRmbMesg* rmbMesg = (NUContRmbMesg*) mesg->dataPtr;
NUContRmbCtl* rmbCtl = (NUContRmbCtl*) rmbMesg->data;
nuContRmbCtl[rmbMesg->contNo].state = rmbCtl->state;
nuContRmbCtl[rmbMesg->contNo].frame = rmbCtl->frame;
nuContRmbCtl[rmbMesg->contNo].freq = rmbCtl->freq;
nuContRmbCtl[rmbMesg->contNo].counter = 0;
return 0;
}
static s32 contRmbStopMesg(NUSiCommonMesg* mesg) {
NUContRmbMesg* rmbMesg = (NUContRmbMesg*) mesg->dataPtr;
nuContRmbCtl[rmbMesg->contNo].frame = 0;
return 0;
}
static s32 contRmbForceStopMesg(NUSiCommonMesg* mesg) {
u32 i;
for (i = 0; i < NU_CONT_MAXCONTROLLERS; i++) {
nuContRmbCtl[i].state = NU_CONT_RMB_STATE_FORCESTOP;
nuContRmbCtl[i].mode |= NU_CONT_RMB_MODE_PAUSE;
}
return 0;
}
static s32 contRmbForceStopEndMesg(NUSiCommonMesg* mesg) {
u32 i;
for (i = 0; i < NU_CONT_MAXCONTROLLERS; i++) {
nuContRmbCtl[i].mode &= ~NU_CONT_RMB_MODE_PAUSE;
}
return 0;
}

View File

@ -23,6 +23,6 @@ void nuGfxInit(void) {
gDPFullSync(ptr++);
gSPEndDisplayList(ptr++);
nuGfxTaskStart(&gfx, (s32)(ptr - gfx) * sizeof(Gfx), NU_GFX_UCODE_F3DEX, NU_SC_NOSWAPBUFFER);
nuGfxTaskStart(gfx, (s32)(ptr - gfx) * sizeof(Gfx), NU_GFX_UCODE_F3DEX, NU_SC_NOSWAPBUFFER);
nuGfxTaskAllEndWait();
}

View File

@ -59,19 +59,19 @@ segments:
- [0x39210, "c", "code_39210_len_aa0"]
- [0x39cb0, "c", "os/code_39cb0_len_100"]
- [0x39db0, "c", "os/code_39db0_len_8a0"]
- [0x3a650, "c", "os/nuGfxFuncSet"]
- [0x3a690, "c", "os/nuGfxPreNMIFuncSet"]
- [0x3a6d0, "c", "os/nuGfxTaskAllEndWait"]
- [0x3a6f0, "c", "os/nuGfxSetCfb"]
- [0x3a800, "c", "os/nuGfxDisplayOff"]
- [0x3a830, "c", "os/nuGfxDisplayOn"]
- [0x3a850, "c", "os/nuPiInit"]
- [0x3a890, "c", "os/nuPiReadRom"]
- [0x3a960, "c", "os/nuGfxInit"]
- [0x3aa10, "c", "os/nuContInit"]
- [0x3aa50, "c", "os/nuContDataGet"]
- [0x3aab0, "c", "os/nuContPakMgr"]
- [0x3ad20, "c", "os/code_3a850_le_a40"]
- [0x3a650, "c", "os/nusys/nuGfxFuncSet"]
- [0x3a690, "c", "os/nusys/nuGfxPreNMIFuncSet"]
- [0x3a6d0, "c", "os/nusys/nuGfxTaskAllEndWait"]
- [0x3a6f0, "c", "os/nusys/nuGfxSetCfb"]
- [0x3a800, "c", "os/nusys/nuGfxDisplayOff"]
- [0x3a830, "c", "os/nusys/nuGfxDisplayOn"]
- [0x3a850, "c", "os/nusys/nuPiInit"]
- [0x3a890, "c", "os/nusys/nuPiReadRom"]
- [0x3a960, "c", "os/nusys/nuGfxInit"]
- [0x3aa10, "c", "os/nusys/nuContInit"]
- [0x3aa50, "c", "os/nusys/nuContDataGet"]
- [0x3aab0, "c", "os/nusys/nuContPakMgr"]
- [0x3af10, "c", "os/nusys/nuContRmbMgr"]
- [0x3b290, "c", "os/code_3b290_len_100"]
- [0x3b390, "c", "os/code_3b390_len_110"]
- [0x3b4a0, "c", "os/code_3b4a0_len_270"]

View File

@ -40,12 +40,15 @@ D_0010CC10 = 0x0010CC10;
D_0010CC10_end = 0x0010F1B0;
D_80074021 = 0x80074021;
gCurrentCameraID = 0x80077410;
D_80093BA0 = 0x80093BA0;
FrameBuf = 0x80093BA8;
rdpstateinit_dl = 0x80093BB8;
nuContPakCompanyCode = 0x80093CA0;
nuContPakGameCode = 0x80093CA4;
nuContCallBack = 0x80093CD0;
nuContRmbSearchTime = 0x80093CE0;
nuContRmbCallBack = 0x80093D00;
nuGfxFunc = 0x80093D10;
nuGfxPreNMIFunc = 0x80093D14;
@ -63,13 +66,16 @@ D_8009A650 = 0x8009A650;
D_800A0900 = 0x800A0900;
D_800AC5D0 = 0x800AC5D0;
D_800AC5E8 = 0x800AC5E8;
gCurrentEncounter = 0x800B0F10;
nuContRmbCtl = 0x800B1d40;
nuContData = 0x800B1D68;
gCameras = 0x800B1D80;
gCurrentCameraID = 0x80077410;
D_800DAC78 = 0x800DAC78;
nuContPfs = 0x800DAAD8;
nuSiMesgQ = 0x800DAC78;
D_800DC500 = 0x800DC500;
D_8010F6D0 = 0x8010F6D0;
gBackgroundImage = 0x80200000;
D_802C3000 = 0x802C3000;
D_802DBD40 = 0x802DBD40;