Match motor functions

This commit is contained in:
Ryan Myers
2021-09-30 20:51:39 -04:00
parent 2eacfbb79a
commit 2ea8ecc10e
6 changed files with 30 additions and 425 deletions
+2
View File
@@ -267,6 +267,7 @@ $(BUILD_DIR)/lib/src/al/%.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/os/%.o: OPT_FLAGS := -O1
$(BUILD_DIR)/lib/src/os/osViMgr.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/os/osCreatePiManager.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/os/osMotor.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/libc/xprintf.o : OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/al/unknown_0C9C90.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
#$(BUILD_DIR)/lib/src/libc/llcvt.o: OPT_FLAGS :=
@@ -274,6 +275,7 @@ $(BUILD_DIR)/lib/src/al/unknown_0C9C90.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
$(BUILD_DIR)/lib/%.o: MIPSISET := -mips2
$(BUILD_DIR)/lib/src/mips1/%.o: MIPSISET := -mips1
$(BUILD_DIR)/lib/src/os/osMotor.o: MIPSISET := -mips1
# asm-processor currently does not support -O3, so this is my workaround.
$(BUILD_DIR)/lib/src/al/global_asm/%.o: OPT_FLAGS := -O2
@@ -1,95 +0,0 @@
glabel _MakeMotorData
/* 072B80 80071F80 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 072B84 80071F84 AFB00018 */ sw $s0, 0x18($sp)
/* 072B88 80071F88 00808025 */ move $s0, $a0
/* 072B8C 80071F8C AFBF001C */ sw $ra, 0x1c($sp)
/* 072B90 80071F90 AFA5005C */ sw $a1, 0x5c($sp)
/* 072B94 80071F94 00E01825 */ move $v1, $a3
/* 072B98 80071F98 00004025 */ move $t0, $zero
/* 072B9C 80071F9C 00E01025 */ move $v0, $a3
.L80071FA0:
/* 072BA0 80071FA0 25080001 */ addiu $t0, $t0, 1
/* 072BA4 80071FA4 2901000F */ slti $at, $t0, 0xf
/* 072BA8 80071FA8 24420004 */ addiu $v0, $v0, 4
/* 072BAC 80071FAC 1420FFFC */ bnez $at, .L80071FA0
/* 072BB0 80071FB0 AC40FFFC */ sw $zero, -4($v0)
/* 072BB4 80071FB4 240E0001 */ li $t6, 1
/* 072BB8 80071FB8 ACEE003C */ sw $t6, 0x3c($a3)
/* 072BBC 80071FBC 240F00FF */ li $t7, 255
/* 072BC0 80071FC0 24180023 */ li $t8, 35
/* 072BC4 80071FC4 24190001 */ li $t9, 1
/* 072BC8 80071FC8 24090003 */ li $t1, 3
/* 072BCC 80071FCC 97A4005E */ lhu $a0, 0x5e($sp)
/* 072BD0 80071FD0 A3AF002C */ sb $t7, 0x2c($sp)
/* 072BD4 80071FD4 A3B8002D */ sb $t8, 0x2d($sp)
/* 072BD8 80071FD8 A3B9002E */ sb $t9, 0x2e($sp)
/* 072BDC 80071FDC A3A9002F */ sb $t1, 0x2f($sp)
/* 072BE0 80071FE0 AFA60060 */ sw $a2, 0x60($sp)
/* 072BE4 80071FE4 0C0335DC */ jal __osContAddressCrc
/* 072BE8 80071FE8 AFA30054 */ sw $v1, 0x54($sp)
/* 072BEC 80071FEC 97AA005E */ lhu $t2, 0x5e($sp)
/* 072BF0 80071FF0 240D00FF */ li $t5, 255
/* 072BF4 80071FF4 000A5940 */ sll $t3, $t2, 5
/* 072BF8 80071FF8 004B6025 */ or $t4, $v0, $t3
/* 072BFC 80071FFC 8FA30054 */ lw $v1, 0x54($sp)
/* 072C00 80072000 8FA60060 */ lw $a2, 0x60($sp)
/* 072C04 80072004 A7AC0030 */ sh $t4, 0x30($sp)
/* 072C08 80072008 A3AD0052 */ sb $t5, 0x52($sp)
/* 072C0C 8007200C 27A2004C */ addiu $v0, $sp, 0x4c
/* 072C10 80072010 27A4002C */ addiu $a0, $sp, 0x2c
.L80072014:
/* 072C14 80072014 90CE0000 */ lbu $t6, ($a2)
/* 072C18 80072018 24840001 */ addiu $a0, $a0, 1
/* 072C1C 8007201C 0082082B */ sltu $at, $a0, $v0
/* 072C20 80072020 24C60001 */ addiu $a2, $a2, 1
/* 072C24 80072024 1420FFFB */ bnez $at, .L80072014
/* 072C28 80072028 A08E0005 */ sb $t6, 5($a0)
/* 072C2C 8007202C 12000012 */ beqz $s0, .L80072078
/* 072C30 80072030 27AF002C */ addiu $t7, $sp, 0x2c
/* 072C34 80072034 1A000010 */ blez $s0, .L80072078
/* 072C38 80072038 00004025 */ move $t0, $zero
/* 072C3C 8007203C 32040003 */ andi $a0, $s0, 3
/* 072C40 80072040 10800006 */ beqz $a0, .L8007205C
/* 072C44 80072044 00801025 */ move $v0, $a0
.L80072048:
/* 072C48 80072048 25080001 */ addiu $t0, $t0, 1
/* 072C4C 8007204C A0600000 */ sb $zero, ($v1)
/* 072C50 80072050 1448FFFD */ bne $v0, $t0, .L80072048
/* 072C54 80072054 24630001 */ addiu $v1, $v1, 1
/* 072C58 80072058 11100007 */ beq $t0, $s0, .L80072078
.L8007205C:
/* 072C5C 8007205C 25080004 */ addiu $t0, $t0, 4
/* 072C60 80072060 A0600001 */ sb $zero, 1($v1)
/* 072C64 80072064 A0600002 */ sb $zero, 2($v1)
/* 072C68 80072068 A0600003 */ sb $zero, 3($v1)
/* 072C6C 8007206C 24630004 */ addiu $v1, $v1, 4
/* 072C70 80072070 1510FFFA */ bne $t0, $s0, .L8007205C
/* 072C74 80072074 A060FFFC */ sb $zero, -4($v1)
.L80072078:
/* 072C78 80072078 00604825 */ move $t1, $v1
/* 072C7C 8007207C 25F90024 */ addiu $t9, $t7, 0x24
.L80072080:
/* 072C80 80072080 8DE10000 */ lw $at, ($t7)
/* 072C84 80072084 25EF000C */ addiu $t7, $t7, 0xc
/* 072C88 80072088 A9210000 */ swl $at, ($t1)
/* 072C8C 8007208C B9210003 */ swr $at, 3($t1)
/* 072C90 80072090 8DE1FFF8 */ lw $at, -8($t7)
/* 072C94 80072094 2529000C */ addiu $t1, $t1, 0xc
/* 072C98 80072098 A921FFF8 */ swl $at, -8($t1)
/* 072C9C 8007209C B921FFFB */ swr $at, -5($t1)
/* 072CA0 800720A0 8DE1FFFC */ lw $at, -4($t7)
/* 072CA4 800720A4 00000000 */ nop
/* 072CA8 800720A8 A921FFFC */ swl $at, -4($t1)
/* 072CAC 800720AC 15F9FFF4 */ bne $t7, $t9, .L80072080
/* 072CB0 800720B0 B921FFFF */ swr $at, -1($t1)
/* 072CB4 800720B4 8DE10000 */ lw $at, ($t7)
/* 072CB8 800720B8 240A00FE */ li $t2, 254
/* 072CBC 800720BC A9210000 */ swl $at, ($t1)
/* 072CC0 800720C0 B9210003 */ swr $at, 3($t1)
/* 072CC4 800720C4 A06A0028 */ sb $t2, 0x28($v1)
/* 072CC8 800720C8 8FBF001C */ lw $ra, 0x1c($sp)
/* 072CCC 800720CC 8FB00018 */ lw $s0, 0x18($sp)
/* 072CD0 800720D0 24630028 */ addiu $v1, $v1, 0x28
/* 072CD4 800720D4 03E00008 */ jr $ra
/* 072CD8 800720D8 27BD0058 */ addiu $sp, $sp, 0x58
-104
View File
@@ -1,104 +0,0 @@
glabel osMotorInit
/* 072CDC 800720DC 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 072CE0 800720E0 AFB00020 */ sw $s0, 0x20($sp)
/* 072CE4 800720E4 AFBF0024 */ sw $ra, 0x24($sp)
/* 072CE8 800720E8 24070080 */ li $a3, 128
/* 072CEC 800720EC 00C08025 */ move $s0, $a2
/* 072CF0 800720F0 ACA40004 */ sw $a0, 4($a1)
/* 072CF4 800720F4 ACA60008 */ sw $a2, 8($a1)
/* 072CF8 800720F8 ACA00000 */ sw $zero, ($a1)
/* 072CFC 800720FC A0A70065 */ sb $a3, 0x65($a1)
/* 072D00 80072100 27A20030 */ addiu $v0, $sp, 0x30
/* 072D04 80072104 27A30050 */ addiu $v1, $sp, 0x50
.L80072108:
/* 072D08 80072108 24420001 */ addiu $v0, $v0, 1
/* 072D0C 8007210C 0043082B */ sltu $at, $v0, $v1
/* 072D10 80072110 1420FFFD */ bnez $at, .L80072108
/* 072D14 80072114 A047FFFF */ sb $a3, -1($v0)
/* 072D18 80072118 02002825 */ move $a1, $s0
/* 072D1C 8007211C 24060400 */ li $a2, 1024
/* 072D20 80072120 27A70030 */ addiu $a3, $sp, 0x30
/* 072D24 80072124 AFA00010 */ sw $zero, 0x10($sp)
/* 072D28 80072128 0C03363C */ jal __osContRamWrite
/* 072D2C 8007212C AFA40058 */ sw $a0, 0x58($sp)
/* 072D30 80072130 24010002 */ li $at, 2
/* 072D34 80072134 14410008 */ bne $v0, $at, .L80072158
/* 072D38 80072138 00401825 */ move $v1, $v0
/* 072D3C 8007213C 8FA40058 */ lw $a0, 0x58($sp)
/* 072D40 80072140 02002825 */ move $a1, $s0
/* 072D44 80072144 24060400 */ li $a2, 1024
/* 072D48 80072148 27A70030 */ addiu $a3, $sp, 0x30
/* 072D4C 8007214C 0C03363C */ jal __osContRamWrite
/* 072D50 80072150 AFA00010 */ sw $zero, 0x10($sp)
/* 072D54 80072154 00401825 */ move $v1, $v0
.L80072158:
/* 072D58 80072158 10400003 */ beqz $v0, .L80072168
/* 072D5C 8007215C 02002825 */ move $a1, $s0
/* 072D60 80072160 10000034 */ b .L80072234
/* 072D64 80072164 00601025 */ move $v0, $v1
.L80072168:
/* 072D68 80072168 8FA40058 */ lw $a0, 0x58($sp)
/* 072D6C 8007216C 24060400 */ li $a2, 1024
/* 072D70 80072170 0C033728 */ jal __osContRamRead
/* 072D74 80072174 27A70030 */ addiu $a3, $sp, 0x30
/* 072D78 80072178 10400004 */ beqz $v0, .L8007218C
/* 072D7C 8007217C 93AE004F */ lbu $t6, 0x4f($sp)
/* 072D80 80072180 1000002D */ b .L80072238
/* 072D84 80072184 8FBF0024 */ lw $ra, 0x24($sp)
/* 072D88 80072188 93AE004F */ lbu $t6, 0x4f($sp)
.L8007218C:
/* 072D8C 8007218C 24010080 */ li $at, 128
/* 072D90 80072190 11C10003 */ beq $t6, $at, .L800721A0
/* 072D94 80072194 3C048012 */ lui $a0, %hi(_motorstartbuf) # $a0, 0x8012
/* 072D98 80072198 10000026 */ b .L80072234
/* 072D9C 8007219C 2402000B */ li $v0, 11
.L800721A0:
/* 072DA0 800721A0 3C038012 */ lui $v1, %hi(_motorstopbuf) # $v1, 0x8012
/* 072DA4 800721A4 3C058012 */ lui $a1, %hi(_motorstartbuf) # $a1, 0x8012
/* 072DA8 800721A8 24A53FF0 */ addiu $a1, %lo(_motorstartbuf) # addiu $a1, $a1, 0x3ff0
/* 072DAC 800721AC 24633FD0 */ addiu $v1, %lo(_motorstopbuf) # addiu $v1, $v1, 0x3fd0
/* 072DB0 800721B0 24843FF0 */ addiu $a0, %lo(_motorstartbuf) # addiu $a0, $a0, 0x3ff0
/* 072DB4 800721B4 24020001 */ li $v0, 1
.L800721B8:
/* 072DB8 800721B8 24630004 */ addiu $v1, $v1, 4
/* 072DBC 800721BC A0820001 */ sb $v0, 1($a0)
/* 072DC0 800721C0 A060FFFD */ sb $zero, -3($v1)
/* 072DC4 800721C4 A0820002 */ sb $v0, 2($a0)
/* 072DC8 800721C8 A060FFFE */ sb $zero, -2($v1)
/* 072DCC 800721CC A0820003 */ sb $v0, 3($a0)
/* 072DD0 800721D0 A060FFFF */ sb $zero, -1($v1)
/* 072DD4 800721D4 24840004 */ addiu $a0, $a0, 4
/* 072DD8 800721D8 A082FFFC */ sb $v0, -4($a0)
/* 072DDC 800721DC 1465FFF6 */ bne $v1, $a1, .L800721B8
/* 072DE0 800721E0 A060FFFC */ sb $zero, -4($v1)
/* 072DE4 800721E4 3C0F8012 */ lui $t7, %hi(_MotorStartData) # $t7, 0x8012
/* 072DE8 800721E8 25EF3ED0 */ addiu $t7, %lo(_MotorStartData) # addiu $t7, $t7, 0x3ed0
/* 072DEC 800721EC 3C068012 */ lui $a2, %hi(_motorstartbuf) # $a2, 0x8012
/* 072DF0 800721F0 00101180 */ sll $v0, $s0, 6
/* 072DF4 800721F4 004F3821 */ addu $a3, $v0, $t7
/* 072DF8 800721F8 AFA2002C */ sw $v0, 0x2c($sp)
/* 072DFC 800721FC 24C63FF0 */ addiu $a2, %lo(_motorstartbuf) # addiu $a2, $a2, 0x3ff0
/* 072E00 80072200 02002025 */ move $a0, $s0
/* 072E04 80072204 0C01C7E0 */ jal _MakeMotorData
/* 072E08 80072208 24050600 */ li $a1, 1536
/* 072E0C 8007220C 8FA2002C */ lw $v0, 0x2c($sp)
/* 072E10 80072210 3C188012 */ lui $t8, %hi(_MotorStopData) # $t8, 0x8012
/* 072E14 80072214 27183DD0 */ addiu $t8, %lo(_MotorStopData) # addiu $t8, $t8, 0x3dd0
/* 072E18 80072218 3C068012 */ lui $a2, %hi(_motorstopbuf) # $a2, 0x8012
/* 072E1C 8007221C 24C63FD0 */ addiu $a2, %lo(_motorstopbuf) # addiu $a2, $a2, 0x3fd0
/* 072E20 80072220 02002025 */ move $a0, $s0
/* 072E24 80072224 24050600 */ li $a1, 1536
/* 072E28 80072228 0C01C7E0 */ jal _MakeMotorData
/* 072E2C 8007222C 00583821 */ addu $a3, $v0, $t8
/* 072E30 80072230 00001025 */ move $v0, $zero
.L80072234:
/* 072E34 80072234 8FBF0024 */ lw $ra, 0x24($sp)
.L80072238:
/* 072E38 80072238 8FB00020 */ lw $s0, 0x20($sp)
/* 072E3C 8007223C 03E00008 */ jr $ra
/* 072E40 80072240 27BD0058 */ addiu $sp, $sp, 0x58
/* 072E44 80072244 00000000 */ nop
/* 072E48 80072248 00000000 */ nop
/* 072E4C 8007224C 00000000 */ nop
@@ -1,80 +0,0 @@
glabel osMotorStart
/* 072A58 80071E58 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 072A5C 80071E5C AFBF0014 */ sw $ra, 0x14($sp)
/* 072A60 80071E60 0C033594 */ jal __osSiGetAccess
/* 072A64 80071E64 AFA40050 */ sw $a0, 0x50($sp)
/* 072A68 80071E68 8FAF0050 */ lw $t7, 0x50($sp)
/* 072A6C 80071E6C 240E0003 */ li $t6, 3
/* 072A70 80071E70 3C018013 */ lui $at, %hi(__osContLastCmd) # $at, 0x8013
/* 072A74 80071E74 A02ECD90 */ sb $t6, %lo(__osContLastCmd)($at)
/* 072A78 80071E78 8DF80008 */ lw $t8, 8($t7)
/* 072A7C 80071E7C 3C088012 */ lui $t0, %hi(_MotorStartData) # $t0, 0x8012
/* 072A80 80071E80 25083ED0 */ addiu $t0, %lo(_MotorStartData) # addiu $t0, $t0, 0x3ed0
/* 072A84 80071E84 0018C980 */ sll $t9, $t8, 6
/* 072A88 80071E88 03282821 */ addu $a1, $t9, $t0
/* 072A8C 80071E8C 0C0335B0 */ jal __osSiRawStartDma
/* 072A90 80071E90 24040001 */ li $a0, 1
/* 072A94 80071E94 8FA90050 */ lw $t1, 0x50($sp)
/* 072A98 80071E98 00002825 */ move $a1, $zero
/* 072A9C 80071E9C 8D240004 */ lw $a0, 4($t1)
/* 072AA0 80071EA0 0C0322EC */ jal osRecvMesg
/* 072AA4 80071EA4 24060001 */ li $a2, 1
/* 072AA8 80071EA8 3C058013 */ lui $a1, %hi(__osPfsPifRam) # $a1, 0x8013
/* 072AAC 80071EAC 24A5CDE0 */ addiu $a1, %lo(__osPfsPifRam) # addiu $a1, $a1, -0x3220
/* 072AB0 80071EB0 0C0335B0 */ jal __osSiRawStartDma
/* 072AB4 80071EB4 00002025 */ move $a0, $zero
/* 072AB8 80071EB8 8FAA0050 */ lw $t2, 0x50($sp)
/* 072ABC 80071EBC 00002825 */ move $a1, $zero
/* 072AC0 80071EC0 8D440004 */ lw $a0, 4($t2)
/* 072AC4 80071EC4 0C0322EC */ jal osRecvMesg
/* 072AC8 80071EC8 24060001 */ li $a2, 1
/* 072ACC 80071ECC 8FAB0050 */ lw $t3, 0x50($sp)
/* 072AD0 80071ED0 3C038013 */ lui $v1, %hi(__osPfsPifRam) # $v1, 0x8013
/* 072AD4 80071ED4 8D640008 */ lw $a0, 8($t3)
/* 072AD8 80071ED8 2463CDE0 */ addiu $v1, %lo(__osPfsPifRam) # addiu $v1, $v1, -0x3220
/* 072ADC 80071EDC 10800007 */ beqz $a0, .L80071EFC
/* 072AE0 80071EE0 27AC001C */ addiu $t4, $sp, 0x1c
/* 072AE4 80071EE4 18800005 */ blez $a0, .L80071EFC
/* 072AE8 80071EE8 00001025 */ move $v0, $zero
.L80071EEC:
/* 072AEC 80071EEC 24420001 */ addiu $v0, $v0, 1
/* 072AF0 80071EF0 0044082A */ slt $at, $v0, $a0
/* 072AF4 80071EF4 1420FFFD */ bnez $at, .L80071EEC
/* 072AF8 80071EF8 24630001 */ addiu $v1, $v1, 1
.L80071EFC:
/* 072AFC 80071EFC 00607825 */ move $t7, $v1
/* 072B00 80071F00 246E0024 */ addiu $t6, $v1, 0x24
.L80071F04:
/* 072B04 80071F04 89E10000 */ lwl $at, ($t7)
/* 072B08 80071F08 99E10003 */ lwr $at, 3($t7)
/* 072B0C 80071F0C 25EF000C */ addiu $t7, $t7, 0xc
/* 072B10 80071F10 AD810000 */ sw $at, ($t4)
/* 072B14 80071F14 89E1FFF8 */ lwl $at, -8($t7)
/* 072B18 80071F18 99E1FFFB */ lwr $at, -5($t7)
/* 072B1C 80071F1C 258C000C */ addiu $t4, $t4, 0xc
/* 072B20 80071F20 AD81FFF8 */ sw $at, -8($t4)
/* 072B24 80071F24 89E1FFFC */ lwl $at, -4($t7)
/* 072B28 80071F28 99E1FFFF */ lwr $at, -1($t7)
/* 072B2C 80071F2C 15EEFFF5 */ bne $t7, $t6, .L80071F04
/* 072B30 80071F30 AD81FFFC */ sw $at, -4($t4)
/* 072B34 80071F34 89E10000 */ lwl $at, ($t7)
/* 072B38 80071F38 99E10003 */ lwr $at, 3($t7)
/* 072B3C 80071F3C 00000000 */ nop
/* 072B40 80071F40 AD810000 */ sw $at, ($t4)
/* 072B44 80071F44 93A2001E */ lbu $v0, 0x1e($sp)
/* 072B48 80071F48 93A80042 */ lbu $t0, 0x42($sp)
/* 072B4C 80071F4C 305800C0 */ andi $t8, $v0, 0xc0
/* 072B50 80071F50 00182103 */ sra $a0, $t8, 4
/* 072B54 80071F54 14800004 */ bnez $a0, .L80071F68
/* 072B58 80071F58 240100EB */ li $at, 235
/* 072B5C 80071F5C 11010002 */ beq $t0, $at, .L80071F68
/* 072B60 80071F60 00000000 */ nop
/* 072B64 80071F64 24040004 */ li $a0, 4
.L80071F68:
/* 072B68 80071F68 0C0335A5 */ jal __osSiRelAccess
/* 072B6C 80071F6C AFA40048 */ sw $a0, 0x48($sp)
/* 072B70 80071F70 8FBF0014 */ lw $ra, 0x14($sp)
/* 072B74 80071F74 8FA20048 */ lw $v0, 0x48($sp)
/* 072B78 80071F78 03E00008 */ jr $ra
/* 072B7C 80071F7C 27BD0050 */ addiu $sp, $sp, 0x50
@@ -1,80 +0,0 @@
glabel osMotorStop
/* 072930 80071D30 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 072934 80071D34 AFBF0014 */ sw $ra, 0x14($sp)
/* 072938 80071D38 0C033594 */ jal __osSiGetAccess
/* 07293C 80071D3C AFA40050 */ sw $a0, 0x50($sp)
/* 072940 80071D40 8FAF0050 */ lw $t7, 0x50($sp)
/* 072944 80071D44 240E0003 */ li $t6, 3
/* 072948 80071D48 3C018013 */ lui $at, %hi(__osContLastCmd) # $at, 0x8013
/* 07294C 80071D4C A02ECD90 */ sb $t6, %lo(__osContLastCmd)($at)
/* 072950 80071D50 8DF80008 */ lw $t8, 8($t7)
/* 072954 80071D54 3C088012 */ lui $t0, %hi(_MotorStopData) # $t0, 0x8012
/* 072958 80071D58 25083DD0 */ addiu $t0, %lo(_MotorStopData) # addiu $t0, $t0, 0x3dd0
/* 07295C 80071D5C 0018C980 */ sll $t9, $t8, 6
/* 072960 80071D60 03282821 */ addu $a1, $t9, $t0
/* 072964 80071D64 0C0335B0 */ jal __osSiRawStartDma
/* 072968 80071D68 24040001 */ li $a0, 1
/* 07296C 80071D6C 8FA90050 */ lw $t1, 0x50($sp)
/* 072970 80071D70 00002825 */ move $a1, $zero
/* 072974 80071D74 8D240004 */ lw $a0, 4($t1)
/* 072978 80071D78 0C0322EC */ jal osRecvMesg
/* 07297C 80071D7C 24060001 */ li $a2, 1
/* 072980 80071D80 3C058013 */ lui $a1, %hi(__osPfsPifRam) # $a1, 0x8013
/* 072984 80071D84 24A5CDE0 */ addiu $a1, %lo(__osPfsPifRam) # addiu $a1, $a1, -0x3220
/* 072988 80071D88 0C0335B0 */ jal __osSiRawStartDma
/* 07298C 80071D8C 00002025 */ move $a0, $zero
/* 072990 80071D90 8FAA0050 */ lw $t2, 0x50($sp)
/* 072994 80071D94 00002825 */ move $a1, $zero
/* 072998 80071D98 8D440004 */ lw $a0, 4($t2)
/* 07299C 80071D9C 0C0322EC */ jal osRecvMesg
/* 0729A0 80071DA0 24060001 */ li $a2, 1
/* 0729A4 80071DA4 8FAB0050 */ lw $t3, 0x50($sp)
/* 0729A8 80071DA8 3C038013 */ lui $v1, %hi(__osPfsPifRam) # $v1, 0x8013
/* 0729AC 80071DAC 8D640008 */ lw $a0, 8($t3)
/* 0729B0 80071DB0 2463CDE0 */ addiu $v1, %lo(__osPfsPifRam) # addiu $v1, $v1, -0x3220
/* 0729B4 80071DB4 10800007 */ beqz $a0, .L80071DD4
/* 0729B8 80071DB8 27AC001C */ addiu $t4, $sp, 0x1c
/* 0729BC 80071DBC 18800005 */ blez $a0, .L80071DD4
/* 0729C0 80071DC0 00001025 */ move $v0, $zero
.L80071DC4:
/* 0729C4 80071DC4 24420001 */ addiu $v0, $v0, 1
/* 0729C8 80071DC8 0044082A */ slt $at, $v0, $a0
/* 0729CC 80071DCC 1420FFFD */ bnez $at, .L80071DC4
/* 0729D0 80071DD0 24630001 */ addiu $v1, $v1, 1
.L80071DD4:
/* 0729D4 80071DD4 00607825 */ move $t7, $v1
/* 0729D8 80071DD8 246E0024 */ addiu $t6, $v1, 0x24
.L80071DDC:
/* 0729DC 80071DDC 89E10000 */ lwl $at, ($t7)
/* 0729E0 80071DE0 99E10003 */ lwr $at, 3($t7)
/* 0729E4 80071DE4 25EF000C */ addiu $t7, $t7, 0xc
/* 0729E8 80071DE8 AD810000 */ sw $at, ($t4)
/* 0729EC 80071DEC 89E1FFF8 */ lwl $at, -8($t7)
/* 0729F0 80071DF0 99E1FFFB */ lwr $at, -5($t7)
/* 0729F4 80071DF4 258C000C */ addiu $t4, $t4, 0xc
/* 0729F8 80071DF8 AD81FFF8 */ sw $at, -8($t4)
/* 0729FC 80071DFC 89E1FFFC */ lwl $at, -4($t7)
/* 072A00 80071E00 99E1FFFF */ lwr $at, -1($t7)
/* 072A04 80071E04 15EEFFF5 */ bne $t7, $t6, .L80071DDC
/* 072A08 80071E08 AD81FFFC */ sw $at, -4($t4)
/* 072A0C 80071E0C 89E10000 */ lwl $at, ($t7)
/* 072A10 80071E10 99E10003 */ lwr $at, 3($t7)
/* 072A14 80071E14 00000000 */ nop
/* 072A18 80071E18 AD810000 */ sw $at, ($t4)
/* 072A1C 80071E1C 93A2001E */ lbu $v0, 0x1e($sp)
/* 072A20 80071E20 93A80042 */ lbu $t0, 0x42($sp)
/* 072A24 80071E24 305800C0 */ andi $t8, $v0, 0xc0
/* 072A28 80071E28 00182103 */ sra $a0, $t8, 4
/* 072A2C 80071E2C 14800004 */ bnez $a0, .L80071E40
/* 072A30 80071E30 00000000 */ nop
/* 072A34 80071E34 11000002 */ beqz $t0, .L80071E40
/* 072A38 80071E38 00000000 */ nop
/* 072A3C 80071E3C 24040004 */ li $a0, 4
.L80071E40:
/* 072A40 80071E40 0C0335A5 */ jal __osSiRelAccess
/* 072A44 80071E44 AFA40048 */ sw $a0, 0x48($sp)
/* 072A48 80071E48 8FBF0014 */ lw $ra, 0x14($sp)
/* 072A4C 80071E4C 8FA20048 */ lw $v0, 0x48($sp)
/* 072A50 80071E50 03E00008 */ jr $ra
/* 072A54 80071E54 27BD0050 */ addiu $sp, $sp, 0x50
+28 -66
View File
@@ -1,27 +1,17 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x80071D30 */
#include "types.h"
#include "macros.h"
#include "libultra_internal.h"
#include "controller.h"
#include "siint.h"
#if 1
GLOBAL_ASM("lib/asm/non_matchings/osMotor/osMotorStop.s")
GLOBAL_ASM("lib/asm/non_matchings/osMotor/osMotorStart.s")
GLOBAL_ASM("lib/asm/non_matchings/osMotor/_MakeMotorData.s")
GLOBAL_ASM("lib/asm/non_matchings/osMotor/osMotorInit.s")
#else
static void _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata);
//u32 __osMotorinitialized[MAXCONTROLLERS] = {0, 0, 0, 0};
//TODO: These should really be declared here instead of somewhere else
extern OSPifRam _MotorStopData[MAXCONTROLLERS];
extern OSPifRam _MotorStartData[MAXCONTROLLERS];
extern u8 _motorstopbuf[32];
extern u8 _motorstartbuf[32];
s32 osMotorStop(OSPfs *pfs)
{
s32 osMotorStop(OSPfs *pfs) {
int i;
s32 ret;
u8 *ptr;
@@ -32,7 +22,7 @@ s32 osMotorStop(OSPfs *pfs)
__osContLastCmd = CONT_CMD_WRITE_MEMPACK;
__osSiRawStartDma(OS_WRITE, &_MotorStopData[pfs->channel]);
osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);
ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);
__osSiRawStartDma(OS_READ, &__osPfsPifRam);
osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);
ptr = (u8 *)&__osPfsPifRam;
@@ -42,17 +32,13 @@ s32 osMotorStop(OSPfs *pfs)
ramreadformat = *(__OSContRamReadFormat *)ptr;
ret = CHNL_ERR(ramreadformat);
if (ret == 0 && ramreadformat.datacrc != __osContDataCrc((u8*)&_motorstopbuf))
{
if (ret == 0 && ramreadformat.datacrc != 0)
ret = PFS_ERR_CONTRFAIL;
}
__osSiRelAccess();
return ret;
}
s32 osMotorStart(OSPfs *pfs)
{
s32 osMotorStart(OSPfs *pfs) {
int i;
s32 ret;
u8 *ptr;
@@ -63,7 +49,7 @@ s32 osMotorStart(OSPfs *pfs)
__osContLastCmd = CONT_CMD_WRITE_MEMPACK;
__osSiRawStartDma(OS_WRITE, &_MotorStartData[pfs->channel]);
osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);
ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);
__osSiRawStartDma(OS_READ, &__osPfsPifRam);
osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);
ptr = (u8 *)&__osPfsPifRam;
@@ -73,16 +59,13 @@ s32 osMotorStart(OSPfs *pfs)
ramreadformat = *(__OSContRamReadFormat *)ptr;
ret = CHNL_ERR(ramreadformat);
if (ret == 0 && ramreadformat.datacrc != __osContDataCrc((u8*)&_motorstartbuf))
{
if (ret == 0 && ramreadformat.datacrc != 0xEB)
ret = PFS_ERR_CONTRFAIL;
}
__osSiRelAccess();
return ret;
}
static void _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata)
{
static void _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata) {
u8 *ptr;
__OSContRamReadFormat ramreadformat;
int i;
@@ -99,12 +82,10 @@ static void _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata
ramreadformat.address = (address << 0x5) | __osContAddressCrc(address);
ramreadformat.datacrc = CONT_CMD_NOP;
for (i = 0; i < ARRLEN(ramreadformat.data); i++)
ramreadformat.data[i] = *buffer++;
if (channel != 0)
{
for (i = 0; i < channel; i++)
{
if (channel != 0) {
for (i = 0; i < channel; i++) {
*ptr++ = 0;
}
}
@@ -113,8 +94,7 @@ static void _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata
ptr[0] = CONT_CMD_END;
}
s32 osMotorInit(OSMesgQueue *mq, OSPfs *pfs, int channel)
{
s32 osMotorInit(OSMesgQueue *mq, OSPfs *pfs, int channel) {
int i;
s32 ret;
u8 temp[32];
@@ -123,51 +103,33 @@ s32 osMotorInit(OSMesgQueue *mq, OSPfs *pfs, int channel)
pfs->status = 0;
pfs->activebank = 128;
for (i = 0; i < ARRLEN(temp); i++)
temp[i] = 254;
ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);
if (ret == 2) //TODO: remove magic constant
ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);
if (ret != 0)
return ret;
ret = __osContRamRead(mq, channel, 1024, temp);
if (ret == 2)
ret = PFS_ERR_CONTRFAIL; //is this right?
if (ret != 0)
return ret;
if (temp[31] == 254)
return PFS_ERR_DEVICE;
for (i = 0; i < ARRLEN(temp); i++)
temp[i] = 128;
ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);
if (ret == 2)
if (ret == PFS_ERR_NEW_PACK)
ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);
if (ret != 0)
return ret;
ret = __osContRamRead(mq, channel, 1024, temp);
if (ret == 2)
ret = PFS_ERR_CONTRFAIL;
if (ret != 0)
return ret;
if (temp[31] != 128)
return PFS_ERR_DEVICE;
//if (!__osMotorinitialized[channel])
//{
for (i = 0; i < ARRLEN(_motorstartbuf); i++)
{
_motorstartbuf[i] = 1;
_motorstopbuf[i] = 0;
}
_MakeMotorData(channel, 1536, _motorstartbuf, &_MotorStartData[channel]);
_MakeMotorData(channel, 1536, _motorstopbuf, &_MotorStopData[channel]);
//__osMotorinitialized[channel] = 1;
//}
if (temp[31] != 128) {
return PFS_ERR_DEVICE;
}
for (i = 0; i < ARRLEN(_motorstartbuf); i++) {
_motorstartbuf[i] = 1;
_motorstopbuf[i] = 0;
}
_MakeMotorData(channel, 1536, _motorstartbuf, &_MotorStartData[channel]);
_MakeMotorData(channel, 1536, _motorstopbuf, &_MotorStopData[channel]);
return 0;
}
#endif