aboutsummaryrefslogtreecommitdiff
path: root/Source/Exe
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-06-27 00:58:12 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2017-06-27 00:58:12 +0200
commitf9f9924566e82aae02817a2fbc7962764f5418c3 (patch)
tree8f015dab806edb736cce9ca596d3b9849c529231 /Source/Exe
parentd1f55e8b45df2dfd84bdde3e2566ef14c9ba40f1 (diff)
downloadairport-f9f9924566e82aae02817a2fbc7962764f5418c3.tar.gz
* Reduced tileset sprite size from 64x64 to 64x48.
* Modified rendering functions to keep up with this size reduction. * Sprites in TIM have been reordered inside VRAM. * Other minor changes.
Diffstat (limited to 'Source/Exe')
-rw-r--r--Source/Exe/AIRPORT.s52108
1 files changed, 0 insertions, 52108 deletions
diff --git a/Source/Exe/AIRPORT.s b/Source/Exe/AIRPORT.s
deleted file mode 100644
index bdff6c5..0000000
--- a/Source/Exe/AIRPORT.s
+++ /dev/null
@@ -1,52108 +0,0 @@
-
-AIRPORT.elf: file format elf32-littlemips
-
-
-Disassembly of section .text:
-
-80010000 <__text_start>:
-.extern get_cop0_epc
-#.global run_bios
-#.global is_load_delay_ok
-
-_start:
- li $29, 0x801fff00 # Load stack pointer
-80010000: 3c1d801f lui sp,0x801f
-80010004: 37bdff00 ori sp,sp,0xff00
- li $k1, 0x1f800000 # set to hardware base
-80010008: 3c1b1f80 lui k1,0x1f80
-
- addiu $sp, $sp, -24
-8001000c: 27bdffe8 addiu sp,sp,-24
- jal ResetEntryInt
-80010010: 0c00edad jal 8003b6b4 <ResetEntryInt>
-80010014: 00000000 nop
- nop
-80010018: 00000000 nop
-
- jal psxsdk_setup
-8001001c: 0c00d562 jal 80035588 <psxsdk_setup>
-80010020: 00000000 nop
- nop
-80010024: 00000000 nop
-
- jal main
-80010028: 0c009473 jal 800251cc <main>
-8001002c: 00000000 nop
- nop
-80010030: 00000000 nop
-
-80010034 <_real_exit>:
-
-_real_exit:
- la $a0, progtermfmt
-80010034: 3c048004 lui a0,0x8004
-80010038: 248413e1 addiu a0,a0,5089
- move $a1, $v0
-8001003c: 00402821 move a1,v0
-
- jal printf
-80010040: 0c00ed8f jal 8003b63c <printf>
-80010044: 00000000 nop
- nop
-80010048: 00000000 nop
-
- jal call_atexit_callbacks
-8001004c: 0c00d511 jal 80035444 <call_atexit_callbacks>
-80010050: 00000000 nop
- nop
-80010054: 00000000 nop
-
-80010058 <inf_loop>:
-
-inf_loop:
- j inf_loop
-80010058: 08004016 j 80010058 <inf_loop>
-8001005c: 00000000 nop
- nop
-80010060: 00000000 nop
-
-80010064 <vblank_handler>:
-
-# VBlank handler
-
-vblank_handler:
- addi $sp, -120
-80010064: 23bdff88 addi sp,sp,-120
-.set noat
- sw $at, 0($sp)
-80010068: afa10000 sw at,0(sp)
- mfhi $at
-8001006c: 00000810 mfhi at
- sw $at, 112($sp)
-80010070: afa10070 sw at,112(sp)
- mflo $at
-80010074: 00000812 mflo at
- sw $at, 116($sp)
-80010078: afa10074 sw at,116(sp)
-.set at
- sw $v0, 4($sp)
-8001007c: afa20004 sw v0,4(sp)
- sw $v1, 8($sp)
-80010080: afa30008 sw v1,8(sp)
- sw $a0, 12($sp)
-80010084: afa4000c sw a0,12(sp)
- sw $a1, 16($sp)
-80010088: afa50010 sw a1,16(sp)
- sw $a2, 20($sp)
-8001008c: afa60014 sw a2,20(sp)
- sw $a3, 24($sp)
-80010090: afa70018 sw a3,24(sp)
- sw $t0, 28($sp)
-80010094: afa8001c sw t0,28(sp)
- sw $t1, 32($sp)
-80010098: afa90020 sw t1,32(sp)
- sw $t2, 36($sp)
-8001009c: afaa0024 sw t2,36(sp)
- sw $t3, 40($sp)
-800100a0: afab0028 sw t3,40(sp)
- sw $t4, 44($sp)
-800100a4: afac002c sw t4,44(sp)
- sw $t5, 48($sp)
-800100a8: afad0030 sw t5,48(sp)
- sw $t6, 52($sp)
-800100ac: afae0034 sw t6,52(sp)
- sw $t7, 56($sp)
-800100b0: afaf0038 sw t7,56(sp)
- sw $s0, 60($sp)
-800100b4: afb0003c sw s0,60(sp)
- sw $s1, 64($sp)
-800100b8: afb10040 sw s1,64(sp)
- sw $s2, 68($sp)
-800100bc: afb20044 sw s2,68(sp)
- sw $s3, 72($sp)
-800100c0: afb30048 sw s3,72(sp)
- sw $s4, 76($sp)
-800100c4: afb4004c sw s4,76(sp)
- sw $s5, 80($sp)
-800100c8: afb50050 sw s5,80(sp)
- sw $s6, 84($sp)
-800100cc: afb60054 sw s6,84(sp)
- sw $s7, 88($sp)
-800100d0: afb70058 sw s7,88(sp)
- sw $t8, 92($sp)
-800100d4: afb8005c sw t8,92(sp)
- sw $t9, 96($sp)
-800100d8: afb90060 sw t9,96(sp)
- sw $gp, 100($sp)
-800100dc: afbc0064 sw gp,100(sp)
- sw $s8, 104($sp)
-800100e0: afbe0068 sw s8,104(sp)
- sw $ra, 108($sp)
-800100e4: afbf006c sw ra,108(sp)
-
-800100e8 <vblank_fire_user_handler>:
-
-vblank_fire_user_handler:
-
- la $t0, vblank_handler_callback
-800100e8: 3c088007 lui t0,0x8007
-800100ec: 25081d70 addiu t0,t0,7536
- lw $t1, 0($t0)
-800100f0: 8d090000 lw t1,0(t0)
-
- addiu $sp, $sp, -24
-800100f4: 27bdffe8 addiu sp,sp,-24
- jalr $t1
-800100f8: 0120f809 jalr t1
-800100fc: 00000000 nop
- nop
-80010100: 00000000 nop
- addiu $sp, $sp, 24
-80010104: 27bd0018 addiu sp,sp,24
-
-80010108 <vblank_acknowledge_irq>:
-
-vblank_acknowledge_irq:
- li $t0, 0x1f801070 # IPENDING
-80010108: 3c081f80 lui t0,0x1f80
-8001010c: 35081070 ori t0,t0,0x1070
-
- lw $t1, 0($t0)
-80010110: 8d090000 lw t1,0(t0)
- ...
- nop
- nop
- xori $t1, $t1, 1 # Acknowledge VBlank IRQ
-8001011c: 39290001 xori t1,t1,0x1
- sw $t1, 0($t0)
-80010120: ad090000 sw t1,0(t0)
-
-80010124 <vblank_handler_end>:
-
-vblank_handler_end:
-.set noat
- lw $at, 112($sp)
-80010124: 8fa10070 lw at,112(sp)
- nop
-80010128: 00000000 nop
- mthi $at
-8001012c: 00200011 mthi at
- lw $at, 116($sp)
-80010130: 8fa10074 lw at,116(sp)
- nop
-80010134: 00000000 nop
- mtlo $at
-80010138: 00200013 mtlo at
- lw $at, 0($sp)
-8001013c: 8fa10000 lw at,0(sp)
-.set at
- lw $v0, 4($sp)
-80010140: 8fa20004 lw v0,4(sp)
- lw $v1, 8($sp)
-80010144: 8fa30008 lw v1,8(sp)
- lw $a0, 12($sp)
-80010148: 8fa4000c lw a0,12(sp)
- lw $a1, 16($sp)
-8001014c: 8fa50010 lw a1,16(sp)
- lw $a2, 20($sp)
-80010150: 8fa60014 lw a2,20(sp)
- lw $a3, 24($sp)
-80010154: 8fa70018 lw a3,24(sp)
- lw $t0, 28($sp)
-80010158: 8fa8001c lw t0,28(sp)
- lw $t1, 32($sp)
-8001015c: 8fa90020 lw t1,32(sp)
- lw $t2, 36($sp)
-80010160: 8faa0024 lw t2,36(sp)
- lw $t3, 40($sp)
-80010164: 8fab0028 lw t3,40(sp)
- lw $t4, 44($sp)
-80010168: 8fac002c lw t4,44(sp)
- lw $t5, 48($sp)
-8001016c: 8fad0030 lw t5,48(sp)
- lw $t6, 52($sp)
-80010170: 8fae0034 lw t6,52(sp)
- lw $t7, 56($sp)
-80010174: 8faf0038 lw t7,56(sp)
- lw $s0, 60($sp)
-80010178: 8fb0003c lw s0,60(sp)
- lw $s1, 64($sp)
-8001017c: 8fb10040 lw s1,64(sp)
- lw $s2, 68($sp)
-80010180: 8fb20044 lw s2,68(sp)
- lw $s3, 72($sp)
-80010184: 8fb30048 lw s3,72(sp)
- lw $s4, 76($sp)
-80010188: 8fb4004c lw s4,76(sp)
- lw $s5, 80($sp)
-8001018c: 8fb50050 lw s5,80(sp)
- lw $s6, 84($sp)
-80010190: 8fb60054 lw s6,84(sp)
- lw $s7, 88($sp)
-80010194: 8fb70058 lw s7,88(sp)
- lw $t8, 92($sp)
-80010198: 8fb8005c lw t8,92(sp)
- lw $t9, 96($sp)
-8001019c: 8fb90060 lw t9,96(sp)
- lw $gp, 100($sp)
-800101a0: 8fbc0064 lw gp,100(sp)
- lw $s8, 104($sp)
-800101a4: 8fbe0068 lw s8,104(sp)
- lw $ra, 108($sp)
-800101a8: 8fbf006c lw ra,108(sp)
- addi $sp, 120
-800101ac: 23bd0078 addi sp,sp,120
- jr $ra
-800101b0: 03e00008 jr ra
-800101b4: 00000000 nop
- nop
-800101b8: 00000000 nop
-
-800101bc <rcnt_handler>:
-
-# Root counter handler
-
-rcnt_handler:
- addi $sp, -120
-800101bc: 23bdff88 addi sp,sp,-120
-.set noat
- sw $at, 0($sp)
-800101c0: afa10000 sw at,0(sp)
- mfhi $at
-800101c4: 00000810 mfhi at
- sw $at, 112($sp)
-800101c8: afa10070 sw at,112(sp)
- mflo $at
-800101cc: 00000812 mflo at
- sw $at, 116($sp)
-800101d0: afa10074 sw at,116(sp)
-.set at
- sw $v0, 4($sp)
-800101d4: afa20004 sw v0,4(sp)
- sw $v1, 8($sp)
-800101d8: afa30008 sw v1,8(sp)
- sw $a0, 12($sp)
-800101dc: afa4000c sw a0,12(sp)
- sw $a1, 16($sp)
-800101e0: afa50010 sw a1,16(sp)
- sw $a2, 20($sp)
-800101e4: afa60014 sw a2,20(sp)
- sw $a3, 24($sp)
-800101e8: afa70018 sw a3,24(sp)
- sw $t0, 28($sp)
-800101ec: afa8001c sw t0,28(sp)
- sw $t1, 32($sp)
-800101f0: afa90020 sw t1,32(sp)
- sw $t2, 36($sp)
-800101f4: afaa0024 sw t2,36(sp)
- sw $t3, 40($sp)
-800101f8: afab0028 sw t3,40(sp)
- sw $t4, 44($sp)
-800101fc: afac002c sw t4,44(sp)
- sw $t5, 48($sp)
-80010200: afad0030 sw t5,48(sp)
- sw $t6, 52($sp)
-80010204: afae0034 sw t6,52(sp)
- sw $t7, 56($sp)
-80010208: afaf0038 sw t7,56(sp)
- sw $s0, 60($sp)
-8001020c: afb0003c sw s0,60(sp)
- sw $s1, 64($sp)
-80010210: afb10040 sw s1,64(sp)
- sw $s2, 68($sp)
-80010214: afb20044 sw s2,68(sp)
- sw $s3, 72($sp)
-80010218: afb30048 sw s3,72(sp)
- sw $s4, 76($sp)
-8001021c: afb4004c sw s4,76(sp)
- sw $s5, 80($sp)
-80010220: afb50050 sw s5,80(sp)
- sw $s6, 84($sp)
-80010224: afb60054 sw s6,84(sp)
- sw $s7, 88($sp)
-80010228: afb70058 sw s7,88(sp)
- sw $t8, 92($sp)
-8001022c: afb8005c sw t8,92(sp)
- sw $t9, 96($sp)
-80010230: afb90060 sw t9,96(sp)
- sw $gp, 100($sp)
-80010234: afbc0064 sw gp,100(sp)
- sw $s8, 104($sp)
-80010238: afbe0068 sw s8,104(sp)
- sw $ra, 108($sp)
-8001023c: afbf006c sw ra,108(sp)
-
-80010240 <rcnt_fire_user_handler>:
-
-rcnt_fire_user_handler:
- la $t0, rcnt_handler_callback
-80010240: 3c088007 lui t0,0x8007
-80010244: 25081d6c addiu t0,t0,7532
- lw $t1, 0($t0)
-80010248: 8d090000 lw t1,0(t0)
-
- addiu $sp, $sp, -24
-8001024c: 27bdffe8 addiu sp,sp,-24
- jalr $t1
-80010250: 0120f809 jalr t1
-80010254: 00000000 nop
- nop
-80010258: 00000000 nop
- addiu $sp, $sp, 24
-8001025c: 27bd0018 addiu sp,sp,24
-
-80010260 <rcnt_acknowledge_irq>:
-
-rcnt_acknowledge_irq:
- li $t0, 0x1f801070 # IPENDING
-80010260: 3c081f80 lui t0,0x1f80
-80010264: 35081070 ori t0,t0,0x1070
- la $t2, rcnt_handler_evfield
-80010268: 3c0a8007 lui t2,0x8007
-8001026c: 254a1d68 addiu t2,t2,7528
-
- lw $t1, 0($t0)
-80010270: 8d090000 lw t1,0(t0)
- ...
- nop
- nop
- xor $t1, $t1, $t2 # Acknowledge Root Counter IRQ
-8001027c: 012a4826 xor t1,t1,t2
- sw $t1, 0($t0)
-80010280: ad090000 sw t1,0(t0)
-
-80010284 <rcnt_handler_end>:
-
-rcnt_handler_end:
-.set noat
- lw $at, 112($sp)
-80010284: 8fa10070 lw at,112(sp)
- nop
-80010288: 00000000 nop
- mthi $at
-8001028c: 00200011 mthi at
- lw $at, 116($sp)
-80010290: 8fa10074 lw at,116(sp)
- nop
-80010294: 00000000 nop
- mtlo $at
-80010298: 00200013 mtlo at
- lw $at, 0($sp)
-8001029c: 8fa10000 lw at,0(sp)
-.set at
- lw $v0, 4($sp)
-800102a0: 8fa20004 lw v0,4(sp)
- lw $v1, 8($sp)
-800102a4: 8fa30008 lw v1,8(sp)
- lw $a0, 12($sp)
-800102a8: 8fa4000c lw a0,12(sp)
- lw $a1, 16($sp)
-800102ac: 8fa50010 lw a1,16(sp)
- lw $a2, 20($sp)
-800102b0: 8fa60014 lw a2,20(sp)
- lw $a3, 24($sp)
-800102b4: 8fa70018 lw a3,24(sp)
- lw $t0, 28($sp)
-800102b8: 8fa8001c lw t0,28(sp)
- lw $t1, 32($sp)
-800102bc: 8fa90020 lw t1,32(sp)
- lw $t2, 36($sp)
-800102c0: 8faa0024 lw t2,36(sp)
- lw $t3, 40($sp)
-800102c4: 8fab0028 lw t3,40(sp)
- lw $t4, 44($sp)
-800102c8: 8fac002c lw t4,44(sp)
- lw $t5, 48($sp)
-800102cc: 8fad0030 lw t5,48(sp)
- lw $t6, 52($sp)
-800102d0: 8fae0034 lw t6,52(sp)
- lw $t7, 56($sp)
-800102d4: 8faf0038 lw t7,56(sp)
- lw $s0, 60($sp)
-800102d8: 8fb0003c lw s0,60(sp)
- lw $s1, 64($sp)
-800102dc: 8fb10040 lw s1,64(sp)
- lw $s2, 68($sp)
-800102e0: 8fb20044 lw s2,68(sp)
- lw $s3, 72($sp)
-800102e4: 8fb30048 lw s3,72(sp)
- lw $s4, 76($sp)
-800102e8: 8fb4004c lw s4,76(sp)
- lw $s5, 80($sp)
-800102ec: 8fb50050 lw s5,80(sp)
- lw $s6, 84($sp)
-800102f0: 8fb60054 lw s6,84(sp)
- lw $s7, 88($sp)
-800102f4: 8fb70058 lw s7,88(sp)
- lw $t8, 92($sp)
-800102f8: 8fb8005c lw t8,92(sp)
- lw $t9, 96($sp)
-800102fc: 8fb90060 lw t9,96(sp)
- lw $gp, 100($sp)
-80010300: 8fbc0064 lw gp,100(sp)
- lw $s8, 104($sp)
-80010304: 8fbe0068 lw s8,104(sp)
- lw $ra, 108($sp)
-80010308: 8fbf006c lw ra,108(sp)
- addi $sp, 120
-8001030c: 23bd0078 addi sp,sp,120
- jr $ra
-80010310: 03e00008 jr ra
-80010314: 00000000 nop
- nop
-80010318: 00000000 nop
-
-8001031c <get_cop0_status>:
-
-get_cop0_status:
- mfc0 $v0, $12
-8001031c: 40026000 mfc0 v0,c0_sr
- jr $ra
-80010320: 03e00008 jr ra
-80010324: 00000000 nop
- nop
-80010328: 00000000 nop
-
-8001032c <set_cop0_status>:
-
-set_cop0_status:
- mtc0 $a0, $12
-8001032c: 40846000 mtc0 a0,c0_sr
- jr $ra
-80010330: 03e00008 jr ra
-80010334: 00000000 nop
- nop
-80010338: 00000000 nop
-
-8001033c <get_cop0_epc>:
-
-get_cop0_epc:
- mfc0 $2, $14
-8001033c: 40027000 mfc0 v0,c0_epc
- jr $ra
-80010340: 03e00008 jr ra
-80010344: 00000000 nop
- nop
-80010348: 00000000 nop
-
-8001034c <run_bios>:
-
-run_bios:
- j 0xbfc00000
-8001034c: 0bf00000 j 8fc00000 <_EXC_dma_handler+0xfb8e26c>
-80010350: 00000000 nop
- nop
-80010354: 00000000 nop
-
-80010358 <is_load_delay_ok>:
-
-is_load_delay_ok:
- li $t2, 0
-80010358: 240a0000 li t2,0
- li $t0, 0x0adecade
-8001035c: 3c080ade lui t0,0xade
-80010360: 3508cade ori t0,t0,0xcade
- la $t1, isldo_data
-80010364: 3c098004 lui t1,0x8004
-80010368: 2529140c addiu t1,t1,5132
-8001036c: 8d2a0000 lw t2,0(t1)
- .word 0x8d2a0000 #lw t2,0(t1)
- beq $t0, $t2, load_delay_not_ok
-80010370: 110a0006 beq t0,t2,8001038c <load_delay_not_ok>
-80010374: 00000000 nop
- nop
-80010378: 00000000 nop
-
-8001037c <load_delay_ok>:
-load_delay_ok:
- li $v0, 1
-8001037c: 24020001 li v0,1
- jr $ra
-80010380: 03e00008 jr ra
-80010384: 00000000 nop
- nop
-80010388: 00000000 nop
-
-8001038c <load_delay_not_ok>:
-load_delay_not_ok:
- li $v0, 0
-8001038c: 24020000 li v0,0
- jr $ra
-80010390: 03e00008 jr ra
-80010394: 00000000 nop
- nop
-80010398: 00000000 nop
-
-8001039c <exit>:
-
-exit:
- move $s0, $a0
-8001039c: 00808021 move s0,a0
-
- la $a0, called_exit
-800103a0: 3c048004 lui a0,0x8004
-800103a4: 248413d0 addiu a0,a0,5072
- move $a1, $s0
-800103a8: 02002821 move a1,s0
-
- addiu $sp, $sp, -24
-800103ac: 27bdffe8 addiu sp,sp,-24
- jal printf
-800103b0: 0c00ed8f jal 8003b63c <printf>
-800103b4: 00000000 nop
- nop
-800103b8: 00000000 nop
- addiu $sp, $sp, 24
-800103bc: 27bd0018 addiu sp,sp,24
-
- move $v0, $s0
-800103c0: 02001021 move v0,s0
-
- j _real_exit
-800103c4: 0800400d j 80010034 <_real_exit>
-800103c8: 00000000 nop
- ...
-
-80020000 <deregister_tm_clones>:
-80020000: 3c048004 lui a0,0x8004
-80020004: 3c028004 lui v0,0x8004
-80020008: 24842568 addiu a0,a0,9576
-8002000c: 2442256b addiu v0,v0,9579
-80020010: 00441023 subu v0,v0,a0
-80020014: 2c420007 sltiu v0,v0,7
-80020018: 14400006 bnez v0,80020034 <deregister_tm_clones+0x34>
-8002001c: 3c190000 lui t9,0x0
-80020020: 27390000 addiu t9,t9,0
-80020024: 13200003 beqz t9,80020034 <deregister_tm_clones+0x34>
-80020028: 00000000 nop
-8002002c: 03200008 jr t9
-80020030: 00000000 nop
-80020034: 03e00008 jr ra
-80020038: 00000000 nop
-
-8002003c <register_tm_clones>:
-8002003c: 3c048004 lui a0,0x8004
-80020040: 3c028004 lui v0,0x8004
-80020044: 24842568 addiu a0,a0,9576
-80020048: 24422568 addiu v0,v0,9576
-8002004c: 00441023 subu v0,v0,a0
-80020050: 00021083 sra v0,v0,0x2
-80020054: 00022fc2 srl a1,v0,0x1f
-80020058: 00a22821 addu a1,a1,v0
-8002005c: 00052843 sra a1,a1,0x1
-80020060: 10a00006 beqz a1,8002007c <register_tm_clones+0x40>
-80020064: 3c190000 lui t9,0x0
-80020068: 27390000 addiu t9,t9,0
-8002006c: 13200003 beqz t9,8002007c <register_tm_clones+0x40>
-80020070: 00000000 nop
-80020074: 03200008 jr t9
-80020078: 00000000 nop
-8002007c: 03e00008 jr ra
-80020080: 00000000 nop
-
-80020084 <__do_global_dtors_aux>:
-80020084: 27bdffd8 addiu sp,sp,-40
-80020088: afb30020 sw s3,32(sp)
-8002008c: 3c138004 lui s3,0x8004
-80020090: 92622584 lbu v0,9604(s3)
-80020094: afbf0024 sw ra,36(sp)
-80020098: afb2001c sw s2,28(sp)
-8002009c: afb10018 sw s1,24(sp)
-800200a0: 14400025 bnez v0,80020138 <__do_global_dtors_aux+0xb4>
-800200a4: afb00014 sw s0,20(sp)
-800200a8: 3c118004 lui s1,0x8004
-800200ac: 3c028004 lui v0,0x8004
-800200b0: 24422580 addiu v0,v0,9600
-800200b4: 2631257c addiu s1,s1,9596
-800200b8: 00518823 subu s1,v0,s1
-800200bc: 3c108004 lui s0,0x8004
-800200c0: 8e022588 lw v0,9608(s0)
-800200c4: 00118883 sra s1,s1,0x2
-800200c8: 2631ffff addiu s1,s1,-1
-800200cc: 3c048004 lui a0,0x8004
-800200d0: 0051182b sltu v1,v0,s1
-800200d4: 2492257c addiu s2,a0,9596
-800200d8: 1060000c beqz v1,8002010c <__do_global_dtors_aux+0x88>
-800200dc: 24420001 addiu v0,v0,1
-800200e0: 00021880 sll v1,v0,0x2
-800200e4: 02431821 addu v1,s2,v1
-800200e8: 8c630000 lw v1,0(v1)
-800200ec: 00000000 nop
-800200f0: 0060f809 jalr v1
-800200f4: ae022588 sw v0,9608(s0)
-800200f8: 8e022588 lw v0,9608(s0)
-800200fc: 00000000 nop
-80020100: 0051182b sltu v1,v0,s1
-80020104: 1460fff6 bnez v1,800200e0 <__do_global_dtors_aux+0x5c>
-80020108: 24420001 addiu v0,v0,1
-8002010c: 0c008000 jal 80020000 <deregister_tm_clones>
-80020110: 00000000 nop
-80020114: 3c020000 lui v0,0x0
-80020118: 24420000 addiu v0,v0,0
-8002011c: 10400005 beqz v0,80020134 <__do_global_dtors_aux+0xb0>
-80020120: 24020001 li v0,1
-80020124: 3c048004 lui a0,0x8004
-80020128: 0c000000 jal 80000000 <__scratchpad+0x60800000>
-8002012c: 24840118 addiu a0,a0,280
-80020130: 24020001 li v0,1
-80020134: a2622584 sb v0,9604(s3)
-80020138: 8fbf0024 lw ra,36(sp)
-8002013c: 8fb30020 lw s3,32(sp)
-80020140: 8fb2001c lw s2,28(sp)
-80020144: 8fb10018 lw s1,24(sp)
-80020148: 8fb00014 lw s0,20(sp)
-8002014c: 03e00008 jr ra
-80020150: 27bd0028 addiu sp,sp,40
-
-80020154 <frame_dummy>:
-80020154: 3c020000 lui v0,0x0
-80020158: 27bdffe8 addiu sp,sp,-24
-8002015c: 24420000 addiu v0,v0,0
-80020160: 10400006 beqz v0,8002017c <frame_dummy+0x28>
-80020164: afbf0014 sw ra,20(sp)
-80020168: 3c058004 lui a1,0x8004
-8002016c: 3c048004 lui a0,0x8004
-80020170: 24a5258c addiu a1,a1,9612
-80020174: 0c000000 jal 80000000 <__scratchpad+0x60800000>
-80020178: 24840118 addiu a0,a0,280
-8002017c: 3c028004 lui v0,0x8004
-80020180: 24442564 addiu a0,v0,9572
-80020184: 8c820000 lw v0,0(a0)
-80020188: 00000000 nop
-8002018c: 14400004 bnez v0,800201a0 <frame_dummy+0x4c>
-80020190: 3c020000 lui v0,0x0
-80020194: 8fbf0014 lw ra,20(sp)
-80020198: 0800800f j 8002003c <register_tm_clones>
-8002019c: 27bd0018 addiu sp,sp,24
-800201a0: 24420000 addiu v0,v0,0
-800201a4: 1040fffb beqz v0,80020194 <frame_dummy+0x40>
-800201a8: 00000000 nop
-800201ac: 0040f809 jalr v0
-800201b0: 00000000 nop
-800201b4: 1000fff7 b 80020194 <frame_dummy+0x40>
-800201b8: 00000000 nop
-
-800201bc <fix16_to_int>:
-static inline int fix16_to_int(fix16_t a)
-{
-#ifdef FIXMATH_NO_ROUNDING
- return a >> 16;
-#else
- if (a >= 0)
-800201bc: 04800003 bltz a0,800201cc <fix16_to_int+0x10>
-800201c0: 24828000 addiu v0,a0,-32768
- return (a + fix16_one / 2) / fix16_one;
-800201c4: 34028000 li v0,0x8000
-800201c8: 00821021 addu v0,a0,v0
- else
- return (a - fix16_one / 2) / fix16_one;
-800201cc: 00021fc3 sra v1,v0,0x1f
-800201d0: 3063ffff andi v1,v1,0xffff
-800201d4: 00621021 addu v0,v1,v0
-#endif
-}
-800201d8: 03e00008 jr ra
-800201dc: 00021403 sra v0,v0,0x10
-
-800201e0 <AircraftInit>:
-static void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft);
-static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft);
-
-void AircraftInit(void)
-{
- bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA));
-800201e0: 3c048004 lui a0,0x8004
-static AIRCRAFT_LIVERY AircraftLiveryFromFlightNumber(char * strFlightNumber);
-static void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft);
-static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft);
-
-void AircraftInit(void)
-{
-800201e4: 27bdffe0 addiu sp,sp,-32
- bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA));
-800201e8: 24060d00 li a2,3328
-800201ec: 00002821 move a1,zero
-static AIRCRAFT_LIVERY AircraftLiveryFromFlightNumber(char * strFlightNumber);
-static void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft);
-static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft);
-
-void AircraftInit(void)
-{
-800201f0: afbf001c sw ra,28(sp)
- bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA));
-800201f4: 0c00d7ab jal 80035eac <memset>
-800201f8: 248425d0 addiu a0,a0,9680
- AircraftIndex = 0;
-800201fc: 3c028007 lui v0,0x8007
-
- AircraftSpr.x = 0;
-80020200: 3c048004 lui a0,0x8004
-static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft);
-
-void AircraftInit(void)
-{
- bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA));
- AircraftIndex = 0;
-80020204: a0401bfe sb zero,7166(v0)
-
- AircraftSpr.x = 0;
-80020208: a48025a4 sh zero,9636(a0)
- AircraftSpr.y = 0;
-
- AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP);
-8002020c: 24020001 li v0,1
-{
- bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA));
- AircraftIndex = 0;
-
- AircraftSpr.x = 0;
- AircraftSpr.y = 0;
-80020210: 248425a4 addiu a0,a0,9636
-
- AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP);
-80020214: ac820014 sw v0,20(a0)
-
- AircraftSpr.cx = PHX_LIVERY_CLUT_X;
-80020218: 24020180 li v0,384
-8002021c: a482000a sh v0,10(a0)
- AircraftSpr.cy = PHX_LIVERY_CLUT_Y;
-80020220: 240201f1 li v0,497
-80020224: a482000c sh v0,12(a0)
-
- /*AircraftSpr.tpage = 28;
- AircraftSpr.u = 64;
- AircraftSpr.v = 48;*/
-
- GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y);
-80020228: 24060130 li a2,304
- AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP);
-
- AircraftSpr.cx = PHX_LIVERY_CLUT_X;
- AircraftSpr.cy = PHX_LIVERY_CLUT_Y;
-
- AircraftSpr.w = AIRCRAFT_SPRITE_SIZE;
-8002022c: 24020018 li v0,24
-
- /*AircraftSpr.tpage = 28;
- AircraftSpr.u = 64;
- AircraftSpr.v = 48;*/
-
- GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y);
-80020230: 24050320 li a1,800
-{
- bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA));
- AircraftIndex = 0;
-
- AircraftSpr.x = 0;
- AircraftSpr.y = 0;
-80020234: a4800002 sh zero,2(a0)
- AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP);
-
- AircraftSpr.cx = PHX_LIVERY_CLUT_X;
- AircraftSpr.cy = PHX_LIVERY_CLUT_Y;
-
- AircraftSpr.w = AIRCRAFT_SPRITE_SIZE;
-80020238: a4820006 sh v0,6(a0)
-
- /*AircraftSpr.tpage = 28;
- AircraftSpr.u = 64;
- AircraftSpr.v = 48;*/
-
- GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y);
-8002023c: 0c009187 jal 8002461c <GfxTPageOffsetFromVRAMPosition>
-80020240: a4820008 sh v0,8(a0)
-
- AircraftCenterIsoPos.x = AIRCRAFT_SIZE >> 1;
-80020244: 24020008 li v0,8
-80020248: 3c058007 lui a1,0x8007
-8002024c: a4a21bf8 sh v0,7160(a1)
- AircraftCenterIsoPos.y = AIRCRAFT_SIZE >> 1;
- AircraftCenterIsoPos.z = 0;
-
- AircraftCenterPos = GfxIsometricToCartesian(&AircraftCenterIsoPos);
-80020250: 27a40010 addiu a0,sp,16
- AircraftSpr.v = 48;*/
-
- GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y);
-
- AircraftCenterIsoPos.x = AIRCRAFT_SIZE >> 1;
- AircraftCenterIsoPos.y = AIRCRAFT_SIZE >> 1;
-80020254: 24a51bf8 addiu a1,a1,7160
-80020258: a4a20002 sh v0,2(a1)
- AircraftCenterIsoPos.z = 0;
-
- AircraftCenterPos = GfxIsometricToCartesian(&AircraftCenterIsoPos);
-8002025c: 0c0091ac jal 800246b0 <GfxIsometricToCartesian>
-80020260: a4a00004 sh zero,4(a1)
-}
-80020264: 8fbf001c lw ra,28(sp)
-80020268: 00000000 nop
-8002026c: 03e00008 jr ra
-80020270: 27bd0020 addiu sp,sp,32
-
-80020274 <AircraftAddNew>:
-
-bool AircraftAddNew( TYPE_FLIGHT_DATA * ptrFlightData,
- uint8_t FlightDataIndex,
- uint16_t * targets )
-{
-80020274: 27bdffc0 addiu sp,sp,-64
-80020278: afb10020 sw s1,32(sp)
- TYPE_AIRCRAFT_DATA * ptrAircraft = &AircraftData[AircraftIndex];
-8002027c: 3c118007 lui s1,0x8007
-}
-
-bool AircraftAddNew( TYPE_FLIGHT_DATA * ptrFlightData,
- uint8_t FlightDataIndex,
- uint16_t * targets )
-{
-80020280: afb70038 sw s7,56(sp)
-80020284: afb50030 sw s5,48(sp)
-80020288: afb4002c sw s4,44(sp)
-8002028c: afb30028 sw s3,40(sp)
-80020290: afb20024 sw s2,36(sp)
-80020294: afbf003c sw ra,60(sp)
-80020298: afb60034 sw s6,52(sp)
-8002029c: afb0001c sw s0,28(sp)
-800202a0: 0080a021 move s4,a0
-800202a4: 00c0b821 move s7,a2
- TYPE_AIRCRAFT_DATA * ptrAircraft = &AircraftData[AircraftIndex];
-800202a8: 92321bfe lbu s2,7166(s1)
- uint8_t level_columns = GameGetLevelColumns();
-800202ac: 0c008c9a jal 80023268 <GameGetLevelColumns>
-800202b0: 30b500ff andi s5,a1,0xff
-800202b4: 00409821 move s3,v0
- uint8_t i;
-
- if(AircraftIndex >= GAME_MAX_AIRCRAFT)
-800202b8: 92221bfe lbu v0,7166(s1)
-800202bc: 00000000 nop
-800202c0: 2c420020 sltiu v0,v0,32
-800202c4: 14400006 bnez v0,800202e0 <AircraftAddNew+0x6c>
-800202c8: 24160068 li s6,104
- {
- dprintf("Exceeded maximum aircraft capacity!\n");
-800202cc: 3c048004 lui a0,0x8004
-800202d0: 0c00ed8f jal 8003b63c <printf>
-800202d4: 24840158 addiu a0,a0,344
- return false;
-800202d8: 1000007c b 800204cc <AircraftAddNew+0x258>
-800202dc: 00001021 move v0,zero
- }
-
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-800202e0: 02560018 mult s2,s6
-800202e4: 3c108004 lui s0,0x8004
-800202e8: 261025d0 addiu s0,s0,9680
-800202ec: 24060040 li a2,64
-800202f0: 02e02821 move a1,s7
-800202f4: 0000b012 mflo s6
-800202f8: 26c40010 addiu a0,s6,16
-800202fc: 02042021 addu a0,s0,a0
-80020300: 0c00d75e jal 80035d78 <memcpy>
-80020304: 02d0b021 addu s6,s6,s0
-
- ptrAircraft->TargetIdx = 0;
-80020308: a2c00050 sb zero,80(s6)
- ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]);
-8002030c: 26b60010 addiu s6,s5,16
-80020310: 0016b0c0 sll s6,s6,0x3
-AIRCRAFT_LIVERY AircraftLiveryFromFlightNumber(char * strFlightNumber)
-{
- int32_t liveryIndex;
- char strLivery[4];
-
- memset(strLivery, 0, 4 * sizeof(char) );
-80020314: 24060004 li a2,4
-80020318: 00002821 move a1,zero
-8002031c: 27a40010 addiu a0,sp,16
-80020320: 0c00d7ab jal 80035eac <memset>
-80020324: 0296b021 addu s6,s4,s6
-
- strncpy(strLivery, strFlightNumber, 3);
-80020328: 24060003 li a2,3
-8002032c: 02c02821 move a1,s6
-80020330: 0c00d860 jal 80036180 <strncpy>
-80020334: 27a40010 addiu a0,sp,16
-
- liveryIndex = SystemIndexOfStringArray(strLivery, AircraftLiveryNamesTable);
-80020338: 3c058004 lui a1,0x8004
-8002033c: 27a40010 addiu a0,sp,16
-80020340: 0c00a167 jal 8002859c <SystemIndexOfStringArray>
-80020344: 24a51410 addiu a1,a1,5136
-
- if(liveryIndex == -1)
-80020348: 2403ffff li v1,-1
-8002034c: 10430006 beq v0,v1,80020368 <AircraftAddNew+0xf4>
-80020350: 00002021 move a0,zero
- {
- return AIRCRAFT_LIVERY_UNKNOWN;
- }
-
- return AircraftLiveryTable[liveryIndex];
-80020354: 3c038004 lui v1,0x8004
-80020358: 00021080 sll v0,v0,0x2
-8002035c: 2463f77c addiu v1,v1,-2180
-80020360: 00431021 addu v0,v0,v1
-80020364: 8c440000 lw a0,0(v0)
- }
-
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-
- ptrAircraft->TargetIdx = 0;
- ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]);
-80020368: 24030068 li v1,104
-8002036c: 02430018 mult s2,v1
-
- ptrAircraft->FlightDataIdx = FlightDataIndex;
-
- if(ptrFlightData->FlightDirection[FlightDataIndex] == ARRIVAL)
-80020370: 24020002 li v0,2
- }
-
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-
- ptrAircraft->TargetIdx = 0;
- ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]);
-80020374: 00001812 mflo v1
-80020378: 02031821 addu v1,s0,v1
-
- ptrAircraft->FlightDataIdx = FlightDataIndex;
-8002037c: a0750051 sb s5,81(v1)
-80020380: 0015a880 sll s5,s5,0x2
- }
-
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-
- ptrAircraft->TargetIdx = 0;
- ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]);
-80020384: ac640000 sw a0,0(v1)
-80020388: 0295a021 addu s4,s4,s5
-
- ptrAircraft->FlightDataIdx = FlightDataIndex;
-
- if(ptrFlightData->FlightDirection[FlightDataIndex] == ARRIVAL)
-8002038c: 8e840000 lw a0,0(s4)
-80020390: 00000000 nop
-80020394: 14820016 bne a0,v0,800203f0 <AircraftAddNew+0x17c>
-80020398: 00000000 nop
- {
- ptrAircraft->IsoPos.x = 0;
-8002039c: ac600054 sw zero,84(v1)
-
- ptrAircraft->IsoPos.y = targets[0] / level_columns;
- ptrAircraft->IsoPos.y <<= TILE_SIZE_BIT_SHIFT;
- ptrAircraft->IsoPos.y += TILE_SIZE >> 1; // Adjust to tile center
- ptrAircraft->IsoPos.y = fix16_from_int(ptrAircraft->IsoPos.y);
-800203a0: 96e20000 lhu v0,0(s7)
-800203a4: 00000000 nop
-800203a8: 16600002 bnez s3,800203b4 <AircraftAddNew+0x140>
-800203ac: 0053001a div zero,v0,s3
-800203b0: 0007000d break 0x7
-800203b4: 00001012 mflo v0
-800203b8: 00021180 sll v0,v0,0x6
-800203bc: 24420020 addiu v0,v0,32
-800203c0: 00021400 sll v0,v0,0x10
-800203c4: ac620058 sw v0,88(v1)
-
- ptrAircraft->IsoPos.z = targets[0] % level_columns;
- ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 1;
- ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z);
-800203c8: 96e20000 lhu v0,0(s7)
-800203cc: 00000000 nop
-800203d0: 16600002 bnez s3,800203dc <AircraftAddNew+0x168>
-800203d4: 0053001a div zero,v0,s3
-800203d8: 0007000d break 0x7
-800203dc: 00001010 mfhi v0
-800203e0: 00029d40 sll s3,v0,0x15
-
- ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_APPROACH];
-800203e4: 3c020001 lui v0,0x1
- ptrAircraft->IsoPos.y += TILE_SIZE >> 1; // Adjust to tile center
- ptrAircraft->IsoPos.y = fix16_from_int(ptrAircraft->IsoPos.y);
-
- ptrAircraft->IsoPos.z = targets[0] % level_columns;
- ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 1;
- ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z);
-800203e8: ac73005c sw s3,92(v1)
-
- ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_APPROACH];
-800203ec: ac620060 sw v0,96(v1)
- }
-
- ptrAircraft->State = ptrFlightData->State[FlightDataIndex];
-800203f0: 8e830204 lw v1,516(s4)
-800203f4: 24140068 li s4,104
-800203f8: 02540018 mult s2,s4
-
- dprintf("\nAircraft Data:\n");
-800203fc: 3c048004 lui a0,0x8004
-80020400: 24840180 addiu a0,a0,384
- if(ptrAircraft->Target[i] == 0)
- {
- break;
- }
-
- dprintf(" %d", ptrAircraft->Target[i]);
-80020404: 3c158004 lui s5,0x8004
- }
-
- ptrAircraft->State = ptrFlightData->State[FlightDataIndex];
-
- dprintf("\nAircraft Data:\n");
- dprintf("\tTargets:");
-80020408: 00009821 move s3,zero
- if(ptrAircraft->Target[i] == 0)
- {
- break;
- }
-
- dprintf(" %d", ptrAircraft->Target[i]);
-8002040c: 26b501d4 addiu s5,s5,468
- ptrAircraft->State = ptrFlightData->State[FlightDataIndex];
-
- dprintf("\nAircraft Data:\n");
- dprintf("\tTargets:");
-
- for(i = 0; i < AIRCRAFT_MAX_TARGETS; i++)
-80020410: 24160040 li s6,64
- ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z);
-
- ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_APPROACH];
- }
-
- ptrAircraft->State = ptrFlightData->State[FlightDataIndex];
-80020414: 0000a012 mflo s4
-80020418: 02141021 addu v0,s0,s4
-
- dprintf("\nAircraft Data:\n");
-8002041c: 0c00ed8f jal 8003b63c <printf>
-80020420: ac43000c sw v1,12(v0)
- dprintf("\tTargets:");
-80020424: 3c048004 lui a0,0x8004
-80020428: 0c00ed8f jal 8003b63c <printf>
-8002042c: 24840194 addiu a0,a0,404
-
- for(i = 0; i < AIRCRAFT_MAX_TARGETS; i++)
- {
- if(ptrAircraft->Target[i] == 0)
-80020430: 02931021 addu v0,s4,s3
-80020434: 02021021 addu v0,s0,v0
-80020438: 94450010 lhu a1,16(v0)
-8002043c: 00000000 nop
-80020440: 14a0001b bnez a1,800204b0 <AircraftAddNew+0x23c>
-80020444: 24020068 li v0,104
- }
-
- dprintf(" %d", ptrAircraft->Target[i]);
- }
-
- dprintf("\nLivery: %d\n", ptrAircraft->Livery );
-80020448: 02420018 mult s2,v0
-8002044c: 3c048004 lui a0,0x8004
-80020450: 00009012 mflo s2
-80020454: 02128021 addu s0,s0,s2
-80020458: 8e050000 lw a1,0(s0)
-8002045c: 0c00ed8f jal 8003b63c <printf>
-80020460: 248401a0 addiu a0,a0,416
-
- dprintf("Aircraft position: {%d, %d, %d}\n",
-80020464: 8e040054 lw a0,84(s0)
-80020468: 0c00806f jal 800201bc <fix16_to_int>
-8002046c: 00000000 nop
-80020470: 8e040058 lw a0,88(s0)
-80020474: 0c00806f jal 800201bc <fix16_to_int>
-80020478: 00402821 move a1,v0
-8002047c: 8e04005c lw a0,92(s0)
-80020480: 0c00806f jal 800201bc <fix16_to_int>
-80020484: 00403021 move a2,v0
-80020488: 3c048004 lui a0,0x8004
-8002048c: 00403821 move a3,v0
-80020490: 0c00ed8f jal 8003b63c <printf>
-80020494: 248401b0 addiu a0,a0,432
- fix16_to_int(ptrAircraft->IsoPos.x),
- fix16_to_int(ptrAircraft->IsoPos.y),
- fix16_to_int(ptrAircraft->IsoPos.z) );
-
- AircraftIndex++;
-80020498: 92221bfe lbu v0,7166(s1)
-8002049c: 00000000 nop
-800204a0: 24420001 addiu v0,v0,1
-800204a4: a2221bfe sb v0,7166(s1)
-
- return true;
-800204a8: 10000008 b 800204cc <AircraftAddNew+0x258>
-800204ac: 24020001 li v0,1
- if(ptrAircraft->Target[i] == 0)
- {
- break;
- }
-
- dprintf(" %d", ptrAircraft->Target[i]);
-800204b0: 02a02021 move a0,s5
-800204b4: 0c00ed8f jal 8003b63c <printf>
-800204b8: 26730002 addiu s3,s3,2
- ptrAircraft->State = ptrFlightData->State[FlightDataIndex];
-
- dprintf("\nAircraft Data:\n");
- dprintf("\tTargets:");
-
- for(i = 0; i < AIRCRAFT_MAX_TARGETS; i++)
-800204bc: 1676ffdc bne s3,s6,80020430 <AircraftAddNew+0x1bc>
-800204c0: 24020068 li v0,104
- }
-
- dprintf(" %d", ptrAircraft->Target[i]);
- }
-
- dprintf("\nLivery: %d\n", ptrAircraft->Livery );
-800204c4: 1000ffe1 b 8002044c <AircraftAddNew+0x1d8>
-800204c8: 02420018 mult s2,v0
- fix16_to_int(ptrAircraft->IsoPos.z) );
-
- AircraftIndex++;
-
- return true;
-}
-800204cc: 8fbf003c lw ra,60(sp)
-800204d0: 8fb70038 lw s7,56(sp)
-800204d4: 8fb60034 lw s6,52(sp)
-800204d8: 8fb50030 lw s5,48(sp)
-800204dc: 8fb4002c lw s4,44(sp)
-800204e0: 8fb30028 lw s3,40(sp)
-800204e4: 8fb20024 lw s2,36(sp)
-800204e8: 8fb10020 lw s1,32(sp)
-800204ec: 8fb0001c lw s0,28(sp)
-800204f0: 03e00008 jr ra
-800204f4: 27bd0040 addiu sp,sp,64
-
-800204f8 <AircraftHandler>:
-
- return AircraftLiveryTable[liveryIndex];
-}
-
-void AircraftHandler(void)
-{
-800204f8: 27bdffc8 addiu sp,sp,-56
-800204fc: afb00010 sw s0,16(sp)
-80020500: 3c108004 lui s0,0x8004
-80020504: 261025d0 addiu s0,s0,9680
-80020508: afb20018 sw s2,24(sp)
- {
- ptrAircraft->TargetReached = true;
-
- if(ptrAircraft->Target[++ptrAircraft->TargetIdx] == 0)
- {
- dprintf("All targets reached!\n");
-8002050c: 3c128004 lui s2,0x8004
-
- return AircraftLiveryTable[liveryIndex];
-}
-
-void AircraftHandler(void)
-{
-80020510: afb60028 sw s6,40(sp)
-80020514: afb50024 sw s5,36(sp)
-80020518: afb40020 sw s4,32(sp)
-8002051c: afb3001c sw s3,28(sp)
-80020520: afb10014 sw s1,20(sp)
-80020524: afbf0034 sw ra,52(sp)
-80020528: afbe0030 sw s8,48(sp)
-8002052c: afb7002c sw s7,44(sp)
-80020530: 00008821 move s1,zero
-80020534: 0200a021 move s4,s0
-
-void AircraftDirection(TYPE_AIRCRAFT_DATA * ptrAircraft)
-{
- TYPE_ISOMETRIC_FIX16_POS targetPos;
-
- if(ptrAircraft->Target[ptrAircraft->TargetIdx] == 0)
-80020538: 24150034 li s5,52
-8002053c: 02009821 move s3,s0
- }
-}
-
-void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft)
-{
- if(ptrAircraft->State == STATE_FINAL)
-80020540: 24160005 li s6,5
- {
- ptrAircraft->TargetReached = true;
-
- if(ptrAircraft->Target[++ptrAircraft->TargetIdx] == 0)
- {
- dprintf("All targets reached!\n");
-80020544: 265201d8 addiu s2,s2,472
-
- for(i = 0; i < GAME_MAX_AIRCRAFT; i++)
- {
- ptrAircraft = &AircraftData[i];
-
- if(ptrAircraft->State == STATE_IDLE)
-80020548: 8e02000c lw v0,12(s0)
-8002054c: 00000000 nop
-80020550: 10400059 beqz v0,800206b8 <AircraftHandler+0x1c0>
-80020554: 02350018 mult s1,s5
-
-void AircraftDirection(TYPE_AIRCRAFT_DATA * ptrAircraft)
-{
- TYPE_ISOMETRIC_FIX16_POS targetPos;
-
- if(ptrAircraft->Target[ptrAircraft->TargetIdx] == 0)
-80020558: 92020050 lbu v0,80(s0)
-8002055c: 0000b812 mflo s7
-80020560: 02e21021 addu v0,s7,v0
-80020564: 24420008 addiu v0,v0,8
-80020568: 00021040 sll v0,v0,0x1
-8002056c: 02821021 addu v0,s4,v0
-80020570: 94440000 lhu a0,0(v0)
-80020574: 00000000 nop
-80020578: 10800046 beqz a0,80020694 <AircraftHandler+0x19c>
-8002057c: 00000000 nop
- {
- return;
- }
-
- targetPos.x = GameGetXFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]);
-80020580: 0c008c75 jal 800231d4 <GameGetXFromTile>
-80020584: 00000000 nop
-80020588: 0040f021 move s8,v0
- targetPos.y = GameGetYFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]);
-8002058c: 92020050 lbu v0,80(s0)
-80020590: 00000000 nop
-80020594: 02e21021 addu v0,s7,v0
-80020598: 24420008 addiu v0,v0,8
-8002059c: 00021040 sll v0,v0,0x1
-800205a0: 00531021 addu v0,v0,s3
-800205a4: 94440000 lhu a0,0(v0)
-800205a8: 0c008c81 jal 80023204 <GameGetYFromTile>
-800205ac: 00000000 nop
- targetPos.z = 0;
-
- ptrAircraft->TargetReached = false;
-
- if(targetPos.y == ptrAircraft->IsoPos.y)
-800205b0: 8e030058 lw v1,88(s0)
-
- targetPos.x = GameGetXFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]);
- targetPos.y = GameGetYFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]);
- targetPos.z = 0;
-
- ptrAircraft->TargetReached = false;
-800205b4: a2000066 sb zero,102(s0)
-800205b8: 8e040054 lw a0,84(s0)
-
- if(targetPos.y == ptrAircraft->IsoPos.y)
-800205bc: 14430012 bne v0,v1,80020608 <AircraftHandler+0x110>
-800205c0: 00000000 nop
- {
- if(targetPos.x > ptrAircraft->IsoPos.x)
-800205c4: 009e102a slt v0,a0,s8
-800205c8: 10400005 beqz v0,800205e0 <AircraftHandler+0xe8>
-800205cc: 24020002 li v0,2
- {
- ptrAircraft->Direction = AIRCRAFT_DIR_EAST;
-800205d0: ae020004 sw v0,4(s0)
- ptrAircraft->IsoPos.x += ptrAircraft->Speed;
-800205d4: 8e020060 lw v0,96(s0)
-800205d8: 10000009 b 80020600 <AircraftHandler+0x108>
-800205dc: 00442021 addu a0,v0,a0
- }
- else if(targetPos.x < ptrAircraft->IsoPos.x)
-800205e0: 03c4f02a slt s8,s8,a0
-800205e4: 13c00018 beqz s8,80020648 <AircraftHandler+0x150>
-800205e8: 24020001 li v0,1
- {
- ptrAircraft->Direction = AIRCRAFT_DIR_WEST;
-800205ec: 24020003 li v0,3
-800205f0: ae020004 sw v0,4(s0)
- ptrAircraft->IsoPos.x -= ptrAircraft->Speed;
-800205f4: 8e020060 lw v0,96(s0)
-800205f8: 00000000 nop
-800205fc: 00822023 subu a0,a0,v0
-80020600: 10000024 b 80020694 <AircraftHandler+0x19c>
-80020604: ae040054 sw a0,84(s0)
- dprintf("All targets reached!\n");
- GameTargetsReached(ptrAircraft->FlightDataIdx);
- }
- }
- }
- else if(targetPos.x == ptrAircraft->IsoPos.x)
-80020608: 17c40022 bne s8,a0,80020694 <AircraftHandler+0x19c>
-8002060c: 0062202a slt a0,v1,v0
- {
- if(targetPos.y > ptrAircraft->IsoPos.y)
-80020610: 10800006 beqz a0,8002062c <AircraftHandler+0x134>
-80020614: 0043102a slt v0,v0,v1
- {
- ptrAircraft->Direction = AIRCRAFT_DIR_SOUTH;
-80020618: 24020001 li v0,1
-8002061c: ae020004 sw v0,4(s0)
- ptrAircraft->IsoPos.y += ptrAircraft->Speed;
-80020620: 8e020060 lw v0,96(s0)
-80020624: 10000006 b 80020640 <AircraftHandler+0x148>
-80020628: 00431821 addu v1,v0,v1
- }
- else if(targetPos.y < ptrAircraft->IsoPos.y)
-8002062c: 10400006 beqz v0,80020648 <AircraftHandler+0x150>
-80020630: 24020001 li v0,1
- {
- ptrAircraft->Direction = AIRCRAFT_DIR_NORTH;
- ptrAircraft->IsoPos.y -= ptrAircraft->Speed;
-80020634: 8e020060 lw v0,96(s0)
- ptrAircraft->Direction = AIRCRAFT_DIR_SOUTH;
- ptrAircraft->IsoPos.y += ptrAircraft->Speed;
- }
- else if(targetPos.y < ptrAircraft->IsoPos.y)
- {
- ptrAircraft->Direction = AIRCRAFT_DIR_NORTH;
-80020638: ae000004 sw zero,4(s0)
- ptrAircraft->IsoPos.y -= ptrAircraft->Speed;
-8002063c: 00621823 subu v1,v1,v0
-80020640: 10000014 b 80020694 <AircraftHandler+0x19c>
-80020644: ae030058 sw v1,88(s0)
- }
- else
- {
- ptrAircraft->TargetReached = true;
-80020648: a2020066 sb v0,102(s0)
-
- if(ptrAircraft->Target[++ptrAircraft->TargetIdx] == 0)
-8002064c: 92020050 lbu v0,80(s0)
-80020650: 00000000 nop
-80020654: 24420001 addiu v0,v0,1
-80020658: 304200ff andi v0,v0,0xff
-8002065c: a2020050 sb v0,80(s0)
-80020660: 02e21021 addu v0,s7,v0
-80020664: 24420008 addiu v0,v0,8
-80020668: 00021040 sll v0,v0,0x1
-8002066c: 00531021 addu v0,v0,s3
-80020670: 94420000 lhu v0,0(v0)
-80020674: 00000000 nop
-80020678: 14400006 bnez v0,80020694 <AircraftHandler+0x19c>
-8002067c: 00000000 nop
- {
- dprintf("All targets reached!\n");
-80020680: 0c00ed8f jal 8003b63c <printf>
-80020684: 02402021 move a0,s2
- GameTargetsReached(ptrAircraft->FlightDataIdx);
-80020688: 92040051 lbu a0,81(s0)
-8002068c: 0c008c8c jal 80023230 <GameTargetsReached>
-80020690: 00000000 nop
- }
-}
-
-void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft)
-{
- if(ptrAircraft->State == STATE_FINAL)
-80020694: 8e02000c lw v0,12(s0)
-80020698: 00000000 nop
-8002069c: 14560006 bne v0,s6,800206b8 <AircraftHandler+0x1c0>
-800206a0: 00000000 nop
- {
- if(ptrAircraft->IsoPos.z > 0)
-800206a4: 8e02005c lw v0,92(s0)
-800206a8: 00000000 nop
-800206ac: 18400002 blez v0,800206b8 <AircraftHandler+0x1c0>
-800206b0: 24428000 addiu v0,v0,-32768
- {
- ptrAircraft->IsoPos.z -= AircraftSpeedsTable[AIRCRAFT_SPEED_DESCENT];
-800206b4: ae02005c sw v0,92(s0)
-800206b8: 26310001 addiu s1,s1,1
-void AircraftHandler(void)
-{
- TYPE_AIRCRAFT_DATA * ptrAircraft;
- uint8_t i;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT; i++)
-800206bc: 24020020 li v0,32
-800206c0: 1622ffa1 bne s1,v0,80020548 <AircraftHandler+0x50>
-800206c4: 26100068 addiu s0,s0,104
- }
-
- AircraftDirection(ptrAircraft);
- AircraftAttitude(ptrAircraft);
- }
-}
-800206c8: 8fbf0034 lw ra,52(sp)
-800206cc: 8fbe0030 lw s8,48(sp)
-800206d0: 8fb7002c lw s7,44(sp)
-800206d4: 8fb60028 lw s6,40(sp)
-800206d8: 8fb50024 lw s5,36(sp)
-800206dc: 8fb40020 lw s4,32(sp)
-800206e0: 8fb3001c lw s3,28(sp)
-800206e4: 8fb20018 lw s2,24(sp)
-800206e8: 8fb10014 lw s1,20(sp)
-800206ec: 8fb00010 lw s0,16(sp)
-800206f0: 03e00008 jr ra
-800206f4: 27bd0038 addiu sp,sp,56
-
-800206f8 <AircraftRender>:
-
-void AircraftRender(TYPE_PLAYER * ptrPlayer)
-{
-800206f8: 27bdffc0 addiu sp,sp,-64
-800206fc: afb50030 sw s5,48(sp)
- }
-
- cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos);
-
- // Aircraft position is referred to aircraft center
- AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1);
-80020700: 3c158004 lui s5,0x8004
- AircraftAttitude(ptrAircraft);
- }
-}
-
-void AircraftRender(TYPE_PLAYER * ptrPlayer)
-{
-80020704: afb4002c sw s4,44(sp)
-80020708: afb30028 sw s3,40(sp)
-8002070c: afb20024 sw s2,36(sp)
-80020710: afb10020 sw s1,32(sp)
-80020714: 3c138004 lui s3,0x8004
-80020718: 3c118004 lui s1,0x8004
- }
-
- cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos);
-
- // Aircraft position is referred to aircraft center
- AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1);
-8002071c: 26b225a4 addiu s2,s5,9636
- break;
-
- case AIRCRAFT_LIVERY_UNKNOWN:
- // Fall through
- default:
- dprintf("Unknown livery %d!\n", ptrAircraft->Livery);
-80020720: 3c148004 lui s4,0x8004
- AircraftAttitude(ptrAircraft);
- }
-}
-
-void AircraftRender(TYPE_PLAYER * ptrPlayer)
-{
-80020724: afb60034 sw s6,52(sp)
-80020728: afb0001c sw s0,28(sp)
-8002072c: afbf003c sw ra,60(sp)
-80020730: afb70038 sw s7,56(sp)
-80020734: 0080b021 move s6,a0
-80020738: 263125d0 addiu s1,s1,9680
-8002073c: 267332d0 addiu s3,s3,13008
-80020740: 02408021 move s0,s2
- break;
-
- case AIRCRAFT_LIVERY_UNKNOWN:
- // Fall through
- default:
- dprintf("Unknown livery %d!\n", ptrAircraft->Livery);
-80020744: 269401f0 addiu s4,s4,496
-
- for(i = 0; i < GAME_MAX_AIRCRAFT; i++)
- {
- ptrAircraft = &AircraftData[i];
-
- if(ptrAircraft->State == STATE_IDLE)
-80020748: 8e22000c lw v0,12(s1)
-8002074c: 00000000 nop
-80020750: 10400044 beqz v0,80020864 <AircraftRender+0x16c>
-80020754: 26250054 addiu a1,s1,84
- {
- continue;
- }
-
- cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos);
-80020758: 0c0091bb jal 800246ec <GfxIsometricFix16ToCartesian>
-8002075c: 27a40010 addiu a0,sp,16
-
- // Aircraft position is referred to aircraft center
- AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1);
-80020760: 86420006 lh v0,6(s2)
- }
-}
-
-void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft)
-{
- switch(ptrAircraft->Livery)
-80020764: 8e250000 lw a1,0(s1)
- }
-
- cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos);
-
- // Aircraft position is referred to aircraft center
- AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1);
-80020768: 00021843 sra v1,v0,0x1
-8002076c: 97a20010 lhu v0,16(sp)
-80020770: 00000000 nop
-80020774: 00431023 subu v0,v0,v1
-80020778: a6a225a4 sh v0,9636(s5)
- AircraftSpr.y = cartPos.y - (AircraftSpr.h >> 1);
-8002077c: 86420008 lh v0,8(s2)
-80020780: 00000000 nop
-80020784: 00021843 sra v1,v0,0x1
-80020788: 97a20012 lhu v0,18(sp)
-8002078c: 00000000 nop
-80020790: 00431023 subu v0,v0,v1
-80020794: a6420002 sh v0,2(s2)
- }
-}
-
-void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft)
-{
- switch(ptrAircraft->Livery)
-80020798: 24020001 li v0,1
-8002079c: 14a20006 bne a1,v0,800207b8 <AircraftRender+0xc0>
-800207a0: 3c178004 lui s7,0x8004
- {
- case AIRCRAFT_LIVERY_0:
- AircraftSpr.cx = PHX_LIVERY_CLUT_X;
-800207a4: 24020180 li v0,384
-800207a8: a642000a sh v0,10(s2)
- AircraftSpr.cy = PHX_LIVERY_CLUT_Y;
-800207ac: 240201f1 li v0,497
-800207b0: 10000003 b 800207c0 <AircraftRender+0xc8>
-800207b4: a642000c sh v0,12(s2)
- break;
-
- case AIRCRAFT_LIVERY_UNKNOWN:
- // Fall through
- default:
- dprintf("Unknown livery %d!\n", ptrAircraft->Livery);
-800207b8: 0c00ed8f jal 8003b63c <printf>
-800207bc: 02802021 move a0,s4
- break;
- }
-
- // Reset TPAGE and {U, V} offset first.
- GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y);
-800207c0: 24060130 li a2,304
-800207c4: 24050320 li a1,800
-800207c8: 0c009187 jal 8002461c <GfxTPageOffsetFromVRAMPosition>
-800207cc: 26e425a4 addiu a0,s7,9636
-
- switch(ptrAircraft->Direction)
-800207d0: 8e220004 lw v0,4(s1)
-800207d4: 24030001 li v1,1
-800207d8: 10430012 beq v0,v1,80020824 <AircraftRender+0x12c>
-800207dc: 00000000 nop
-800207e0: 1040000b beqz v0,80020810 <AircraftRender+0x118>
-800207e4: 24030002 li v1,2
-800207e8: 10430011 beq v0,v1,80020830 <AircraftRender+0x138>
-800207ec: 24030003 li v1,3
-800207f0: 14430014 bne v0,v1,80020844 <AircraftRender+0x14c>
-800207f4: 02c02021 move a0,s6
- case AIRCRAFT_DIR_EAST:
- AircraftSpr.v += 0;
- AircraftSpr.attribute &= ~(H_FLIP);
- break;
- case AIRCRAFT_DIR_WEST:
- AircraftSpr.v += AircraftSpr.w;
-800207f8: 92020005 lbu v0,5(s0)
-800207fc: 92030006 lbu v1,6(s0)
-80020800: 00000000 nop
-80020804: 00431021 addu v0,v0,v1
-80020808: 10000009 b 80020830 <AircraftRender+0x138>
-8002080c: a2020005 sb v0,5(s0)
- GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y);
-
- switch(ptrAircraft->Direction)
- {
- case AIRCRAFT_DIR_NORTH:
- AircraftSpr.v += AircraftSpr.w;
-80020810: 92020005 lbu v0,5(s0)
-80020814: 92030006 lbu v1,6(s0)
-80020818: 00000000 nop
-8002081c: 00431021 addu v0,v0,v1
-80020820: a2020005 sb v0,5(s0)
- AircraftSpr.attribute |= H_FLIP;
- break;
- case AIRCRAFT_DIR_SOUTH:
- AircraftSpr.v += 0;
- AircraftSpr.attribute |= H_FLIP;
-80020824: 8e020014 lw v0,20(s0)
-80020828: 10000004 b 8002083c <AircraftRender+0x144>
-8002082c: 34420020 ori v0,v0,0x20
- AircraftSpr.v += 0;
- AircraftSpr.attribute &= ~(H_FLIP);
- break;
- case AIRCRAFT_DIR_WEST:
- AircraftSpr.v += AircraftSpr.w;
- AircraftSpr.attribute &= ~(H_FLIP);
-80020830: 8e020014 lw v0,20(s0)
-80020834: 2403ffdf li v1,-33
-80020838: 00431024 and v0,v0,v1
-8002083c: ae020014 sw v0,20(s0)
- AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1);
- AircraftSpr.y = cartPos.y - (AircraftSpr.h >> 1);
-
- AircraftUpdateSpriteFromData(ptrAircraft);
-
- CameraApplyCoordinatesToSprite(ptrPlayer, &AircraftSpr);
-80020840: 02c02021 move a0,s6
-80020844: 0c00825d jal 80020974 <CameraApplyCoordinatesToSprite>
-80020848: 26e525a4 addiu a1,s7,9636
-
- AircraftSpr.r = NORMAL_LUMINANCE;
-8002084c: 2402ff80 li v0,-128
- AircraftSpr.g = NORMAL_LUMINANCE;
- AircraftSpr.b = NORMAL_LUMINANCE;
-
- GfxSortSprite(&AircraftSpr);
-80020850: 02002021 move a0,s0
-
- AircraftUpdateSpriteFromData(ptrAircraft);
-
- CameraApplyCoordinatesToSprite(ptrPlayer, &AircraftSpr);
-
- AircraftSpr.r = NORMAL_LUMINANCE;
-80020854: a202000e sb v0,14(s0)
- AircraftSpr.g = NORMAL_LUMINANCE;
-80020858: a202000f sb v0,15(s0)
- AircraftSpr.b = NORMAL_LUMINANCE;
-
- GfxSortSprite(&AircraftSpr);
-8002085c: 0c0090d2 jal 80024348 <GfxSortSprite>
-80020860: a2020010 sb v0,16(s0)
-80020864: 26310068 addiu s1,s1,104
- TYPE_AIRCRAFT_DATA * ptrAircraft;
- TYPE_CARTESIAN_POS cartPos;
-
- uint8_t i;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT; i++)
-80020868: 1633ffb7 bne s1,s3,80020748 <AircraftRender+0x50>
-8002086c: 00000000 nop
- AircraftSpr.g = NORMAL_LUMINANCE;
- AircraftSpr.b = NORMAL_LUMINANCE;
-
- GfxSortSprite(&AircraftSpr);
- }
-}
-80020870: 8fbf003c lw ra,60(sp)
-80020874: 8fb70038 lw s7,56(sp)
-80020878: 8fb60034 lw s6,52(sp)
-8002087c: 8fb50030 lw s5,48(sp)
-80020880: 8fb4002c lw s4,44(sp)
-80020884: 8fb30028 lw s3,40(sp)
-80020888: 8fb20024 lw s2,36(sp)
-8002088c: 8fb10020 lw s1,32(sp)
-80020890: 8fb0001c lw s0,28(sp)
-80020894: 03e00008 jr ra
-80020898: 27bd0040 addiu sp,sp,64
-
-8002089c <AircraftGetIsoPos>:
- }
- }
-}
-
-TYPE_ISOMETRIC_POS AircraftGetIsoPos(uint8_t FlightDataIdx)
-{
-8002089c: 30a500ff andi a1,a1,0xff
- // Aircraft position data is stored in fix16_t data type instead of "short" data type.
- // So we must perform a conversion first for convenience.
- TYPE_ISOMETRIC_POS retIsoPos;
- TYPE_ISOMETRIC_FIX16_POS fix16IsoPos = AircraftData[FlightDataIdx].IsoPos;
-800208a0: 24020068 li v0,104
-800208a4: 00a20018 mult a1,v0
-800208a8: 3c028004 lui v0,0x8004
-800208ac: 244225d0 addiu v0,v0,9680
- }
- }
-}
-
-TYPE_ISOMETRIC_POS AircraftGetIsoPos(uint8_t FlightDataIdx)
-{
-800208b0: 00803021 move a2,a0
-800208b4: 27bdffe8 addiu sp,sp,-24
-800208b8: afbf0014 sw ra,20(sp)
- // Aircraft position data is stored in fix16_t data type instead of "short" data type.
- // So we must perform a conversion first for convenience.
- TYPE_ISOMETRIC_POS retIsoPos;
- TYPE_ISOMETRIC_FIX16_POS fix16IsoPos = AircraftData[FlightDataIdx].IsoPos;
-800208bc: 00002812 mflo a1
-800208c0: 24a50050 addiu a1,a1,80
-800208c4: 00452821 addu a1,v0,a1
-
- retIsoPos.x = (short)fix16_to_int(fix16IsoPos.x);
-800208c8: 8ca40004 lw a0,4(a1)
-800208cc: 0c00806f jal 800201bc <fix16_to_int>
-800208d0: 24a70004 addiu a3,a1,4
- retIsoPos.y = (short)fix16_to_int(fix16IsoPos.y);
-800208d4: 8ca40008 lw a0,8(a1)
-800208d8: 0c00806f jal 800201bc <fix16_to_int>
-800208dc: 00404021 move t0,v0
- retIsoPos.z = (short)fix16_to_int(fix16IsoPos.z);
-800208e0: 8ce40008 lw a0,8(a3)
-800208e4: 0c00806f jal 800201bc <fix16_to_int>
-800208e8: 00402821 move a1,v0
-
- return retIsoPos;
-}
-800208ec: 8fbf0014 lw ra,20(sp)
-
- retIsoPos.x = (short)fix16_to_int(fix16IsoPos.x);
- retIsoPos.y = (short)fix16_to_int(fix16IsoPos.y);
- retIsoPos.z = (short)fix16_to_int(fix16IsoPos.z);
-
- return retIsoPos;
-800208f0: a4c20004 sh v0,4(a2)
-}
-800208f4: 00c01021 move v0,a2
-
- retIsoPos.x = (short)fix16_to_int(fix16IsoPos.x);
- retIsoPos.y = (short)fix16_to_int(fix16IsoPos.y);
- retIsoPos.z = (short)fix16_to_int(fix16IsoPos.z);
-
- return retIsoPos;
-800208f8: a4c80000 sh t0,0(a2)
-800208fc: a4c50002 sh a1,2(a2)
-}
-80020900: 03e00008 jr ra
-80020904: 27bd0018 addiu sp,sp,24
-
-80020908 <AircraftAddTargets>:
-
-void AircraftAddTargets(TYPE_AIRCRAFT_DATA * ptrAircraft, uint16_t * targets)
-{
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-80020908: 24060040 li a2,64
-8002090c: 0800d75e j 80035d78 <memcpy>
-80020910: 24840010 addiu a0,a0,16
-
-80020914 <AircraftFromFlightDataIndex>:
-}
-
-TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index)
-{
-80020914: 308400ff andi a0,a0,0xff
- return &AircraftData[index];
-80020918: 24020068 li v0,104
-8002091c: 00820018 mult a0,v0
-}
-80020920: 3c028004 lui v0,0x8004
-80020924: 244225d0 addiu v0,v0,9680
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-}
-
-TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index)
-{
- return &AircraftData[index];
-80020928: 00002012 mflo a0
-}
-8002092c: 03e00008 jr ra
-80020930: 00441021 addu v0,v0,a0
-
-80020934 <AircraftFromFlightDataIndexAddTargets>:
-
-void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t * targets)
-{
-80020934: 308400ff andi a0,a0,0xff
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-}
-
-TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index)
-{
- return &AircraftData[index];
-80020938: 24020068 li v0,104
-8002093c: 00820018 mult a0,v0
-}
-
-void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t * targets)
-{
- AircraftAddTargets(AircraftFromFlightDataIndex(index), targets);
-80020940: 3c028004 lui v0,0x8004
-80020944: 244225d0 addiu v0,v0,9680
- memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-}
-
-TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index)
-{
- return &AircraftData[index];
-80020948: 00002012 mflo a0
-}
-
-void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t * targets)
-{
- AircraftAddTargets(AircraftFromFlightDataIndex(index), targets);
-8002094c: 08008242 j 80020908 <AircraftAddTargets>
-80020950: 00442021 addu a0,v0,a0
-
-80020954 <CameraInit>:
-static bool CameraSpecialConditions(TYPE_PLAYER * ptrPlayer);
-
-void CameraInit(TYPE_PLAYER * ptrPlayer)
-{
- // Center camera on screen
- ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET;
-80020954: 240200c0 li v0,192
-80020958: ac820084 sw v0,132(a0)
- ptrPlayer->Camera.Y_Offset = 0;
- ptrPlayer->Camera.X_Speed = 0;
- ptrPlayer->Camera.Y_Speed = 0;
- ptrPlayer->Camera.Speed_Timer = SPEED_CALCULATION_TIME;
-8002095c: 24020003 li v0,3
-
-void CameraInit(TYPE_PLAYER * ptrPlayer)
-{
- // Center camera on screen
- ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET;
- ptrPlayer->Camera.Y_Offset = 0;
-80020960: ac800088 sw zero,136(a0)
- ptrPlayer->Camera.X_Speed = 0;
-80020964: a080008c sb zero,140(a0)
- ptrPlayer->Camera.Y_Speed = 0;
-80020968: a080008d sb zero,141(a0)
- ptrPlayer->Camera.Speed_Timer = SPEED_CALCULATION_TIME;
-8002096c: 03e00008 jr ra
-80020970: a082008e sb v0,142(a0)
-
-80020974 <CameraApplyCoordinatesToSprite>:
-}
-
-void CameraApplyCoordinatesToSprite(TYPE_PLAYER * ptrPlayer, GsSprite * spr)
-{
- spr->x += (short)ptrPlayer->Camera.X_Offset;
-80020974: 8c820084 lw v0,132(a0)
-80020978: 94a30000 lhu v1,0(a1)
-8002097c: 00000000 nop
-80020980: 00431021 addu v0,v0,v1
-80020984: a4a20000 sh v0,0(a1)
- spr->y += (short)ptrPlayer->Camera.Y_Offset;
-80020988: 94a30002 lhu v1,2(a1)
-8002098c: 8c820088 lw v0,136(a0)
-80020990: 00000000 nop
-80020994: 00431021 addu v0,v0,v1
-80020998: 03e00008 jr ra
-8002099c: a4a20002 sh v0,2(a1)
-
-800209a0 <CameraApplyCoordinatesToRectangle>:
-}
-
-void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect)
-{
-800209a0: 27bdffe0 addiu sp,sp,-32
- dprintf("Rectangle {%d, %d}\n",
-800209a4: 84a60002 lh a2,2(a1)
- spr->x += (short)ptrPlayer->Camera.X_Offset;
- spr->y += (short)ptrPlayer->Camera.Y_Offset;
-}
-
-void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect)
-{
-800209a8: afb10018 sw s1,24(sp)
-800209ac: afb00014 sw s0,20(sp)
-800209b0: 00808821 move s1,a0
-800209b4: 00a08021 move s0,a1
- dprintf("Rectangle {%d, %d}\n",
-800209b8: 3c048004 lui a0,0x8004
-800209bc: 84a50000 lh a1,0(a1)
- spr->x += (short)ptrPlayer->Camera.X_Offset;
- spr->y += (short)ptrPlayer->Camera.Y_Offset;
-}
-
-void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect)
-{
-800209c0: afbf001c sw ra,28(sp)
- dprintf("Rectangle {%d, %d}\n",
-800209c4: 0c00ed8f jal 8003b63c <printf>
-800209c8: 24840208 addiu a0,a0,520
- rect->x,
- rect->y );
-
- rect->x += (short)ptrPlayer->Camera.X_Offset;
-800209cc: 8e220084 lw v0,132(s1)
-800209d0: 96030000 lhu v1,0(s0)
- rect->y += (short)ptrPlayer->Camera.Y_Offset;
-}
-800209d4: 8fbf001c lw ra,28(sp)
-{
- dprintf("Rectangle {%d, %d}\n",
- rect->x,
- rect->y );
-
- rect->x += (short)ptrPlayer->Camera.X_Offset;
-800209d8: 00431021 addu v0,v0,v1
-800209dc: a6020000 sh v0,0(s0)
- rect->y += (short)ptrPlayer->Camera.Y_Offset;
-800209e0: 96030002 lhu v1,2(s0)
-800209e4: 8e220088 lw v0,136(s1)
-}
-800209e8: 8fb10018 lw s1,24(sp)
- dprintf("Rectangle {%d, %d}\n",
- rect->x,
- rect->y );
-
- rect->x += (short)ptrPlayer->Camera.X_Offset;
- rect->y += (short)ptrPlayer->Camera.Y_Offset;
-800209ec: 00431021 addu v0,v0,v1
-800209f0: a6020002 sh v0,2(s0)
-}
-800209f4: 8fb00014 lw s0,20(sp)
-800209f8: 03e00008 jr ra
-800209fc: 27bd0020 addiu sp,sp,32
-
-80020a00 <CameraHandler>:
- ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed;
-}
-
-bool CameraSpecialConditions(TYPE_PLAYER * ptrPlayer)
-{
- if( (ptrPlayer->ShowAircraftData == true)
-80020a00: 90820001 lbu v0,1(a0)
-80020a04: 00000000 nop
-80020a08: 14400089 bnez v0,80020c30 <CameraHandler+0x230>
-80020a0c: 00000000 nop
- ||
-80020a10: 90820002 lbu v0,2(a0)
-80020a14: 00000000 nop
-80020a18: 14400085 bnez v0,80020c30 <CameraHandler+0x230>
-80020a1c: 00000000 nop
- }
- }
-}
-
-void CameraHandler(TYPE_PLAYER * ptrPlayer)
-{
-80020a20: 27bdffe8 addiu sp,sp,-24
-80020a24: afb00010 sw s0,16(sp)
-80020a28: afbf0014 sw ra,20(sp)
- ptrPlayer->Camera.X_Speed = 0;
- ptrPlayer->Camera.Y_Speed = 0;
- return;
- }
-
- if(ptrPlayer->Camera.Speed_Timer < SPEED_CALCULATION_TIME)
-80020a2c: 9082008e lbu v0,142(a0)
-80020a30: 00000000 nop
-80020a34: 2c430003 sltiu v1,v0,3
-80020a38: 10600004 beqz v1,80020a4c <CameraHandler+0x4c>
-80020a3c: 00808021 move s0,a0
- {
- ptrPlayer->Camera.Speed_Timer++;
-80020a40: 24420001 addiu v0,v0,1
-80020a44: 1000006d b 80020bfc <CameraHandler+0x1fc>
-80020a48: a202008e sb v0,142(s0)
- rect->y += (short)ptrPlayer->Camera.Y_Offset;
-}
-
-void CameraUpdateSpeed(TYPE_PLAYER * ptrPlayer)
-{
- if(ptrPlayer->PadDirectionKeyPressed_Callback() == true)
-80020a4c: 8e020080 lw v0,128(s0)
-80020a50: 00000000 nop
-80020a54: 0040f809 jalr v0
-80020a58: a200008e sb zero,142(s0)
-80020a5c: 1040003d beqz v0,80020b54 <CameraHandler+0x154>
-80020a60: 00000000 nop
- {
- if(ptrPlayer->PadKeyPressed_Callback(PAD_LEFT) == true)
-80020a64: 8e020078 lw v0,120(s0)
-80020a68: 00000000 nop
-80020a6c: 0040f809 jalr v0
-80020a70: 34048000 li a0,0x8000
-80020a74: 1040000a beqz v0,80020aa0 <CameraHandler+0xa0>
-80020a78: 00000000 nop
- {
- if(ptrPlayer->Camera.X_Speed < 0)
-80020a7c: 8202008c lb v0,140(s0)
-80020a80: 00000000 nop
-80020a84: 04410003 bgez v0,80020a94 <CameraHandler+0x94>
-80020a88: 28430005 slti v1,v0,5
- {
- ptrPlayer->Camera.X_Speed += 2;
-80020a8c: 10000003 b 80020a9c <CameraHandler+0x9c>
-80020a90: 24420002 addiu v0,v0,2
- }
- else if(ptrPlayer->Camera.X_Speed < MAX_CAMERA_SPEED)
-80020a94: 10600002 beqz v1,80020aa0 <CameraHandler+0xa0>
-80020a98: 24420001 addiu v0,v0,1
- {
- ptrPlayer->Camera.X_Speed++;
-80020a9c: a202008c sb v0,140(s0)
- }
- }
-
- if(ptrPlayer->PadKeyPressed_Callback(PAD_UP) == true)
-80020aa0: 8e020078 lw v0,120(s0)
-80020aa4: 00000000 nop
-80020aa8: 0040f809 jalr v0
-80020aac: 24041000 li a0,4096
-80020ab0: 1040000a beqz v0,80020adc <CameraHandler+0xdc>
-80020ab4: 00000000 nop
- {
- if(ptrPlayer->Camera.Y_Speed < 0)
-80020ab8: 8202008d lb v0,141(s0)
-80020abc: 00000000 nop
-80020ac0: 04410003 bgez v0,80020ad0 <CameraHandler+0xd0>
-80020ac4: 28430005 slti v1,v0,5
- {
- ptrPlayer->Camera.Y_Speed += 2;
-80020ac8: 10000003 b 80020ad8 <CameraHandler+0xd8>
-80020acc: 24420002 addiu v0,v0,2
- }
- else if(ptrPlayer->Camera.Y_Speed < MAX_CAMERA_SPEED)
-80020ad0: 10600002 beqz v1,80020adc <CameraHandler+0xdc>
-80020ad4: 24420001 addiu v0,v0,1
- {
- ptrPlayer->Camera.Y_Speed++;
-80020ad8: a202008d sb v0,141(s0)
- }
- }
-
- if(ptrPlayer->PadKeyPressed_Callback(PAD_DOWN) == true)
-80020adc: 8e020078 lw v0,120(s0)
-80020ae0: 00000000 nop
-80020ae4: 0040f809 jalr v0
-80020ae8: 24044000 li a0,16384
-80020aec: 1040000a beqz v0,80020b18 <CameraHandler+0x118>
-80020af0: 00000000 nop
- {
- if(ptrPlayer->Camera.Y_Speed > 0)
-80020af4: 8202008d lb v0,141(s0)
-80020af8: 00000000 nop
-80020afc: 18400003 blez v0,80020b0c <CameraHandler+0x10c>
-80020b00: 2843fffc slti v1,v0,-4
- {
- ptrPlayer->Camera.Y_Speed -= 2;
-80020b04: 10000003 b 80020b14 <CameraHandler+0x114>
-80020b08: 2442fffe addiu v0,v0,-2
- }
- else if(ptrPlayer->Camera.Y_Speed > -MAX_CAMERA_SPEED)
-80020b0c: 14600002 bnez v1,80020b18 <CameraHandler+0x118>
-80020b10: 2442ffff addiu v0,v0,-1
- {
- ptrPlayer->Camera.Y_Speed--;
-80020b14: a202008d sb v0,141(s0)
- }
- }
-
- if(ptrPlayer->PadKeyPressed_Callback(PAD_RIGHT) == true)
-80020b18: 8e020078 lw v0,120(s0)
-80020b1c: 00000000 nop
-80020b20: 0040f809 jalr v0
-80020b24: 24042000 li a0,8192
-80020b28: 1040000a beqz v0,80020b54 <CameraHandler+0x154>
-80020b2c: 00000000 nop
- {
- if(ptrPlayer->Camera.X_Speed > 0)
-80020b30: 8202008c lb v0,140(s0)
-80020b34: 00000000 nop
-80020b38: 18400003 blez v0,80020b48 <CameraHandler+0x148>
-80020b3c: 2843fffc slti v1,v0,-4
- {
- ptrPlayer->Camera.X_Speed -= 2;
-80020b40: 10000003 b 80020b50 <CameraHandler+0x150>
-80020b44: 2442fffe addiu v0,v0,-2
- }
- else if(ptrPlayer->Camera.X_Speed > -MAX_CAMERA_SPEED)
-80020b48: 14600002 bnez v1,80020b54 <CameraHandler+0x154>
-80020b4c: 2442ffff addiu v0,v0,-1
- {
- ptrPlayer->Camera.X_Speed--;
-80020b50: a202008c sb v0,140(s0)
- }
- }
- }
-
- if( (ptrPlayer->PadKeyPressed_Callback(PAD_LEFT) == false)
-80020b54: 8e020078 lw v0,120(s0)
-80020b58: 00000000 nop
-80020b5c: 0040f809 jalr v0
-80020b60: 34048000 li a0,0x8000
-80020b64: 14400010 bnez v0,80020ba8 <CameraHandler+0x1a8>
-80020b68: 00000000 nop
- &&
- (ptrPlayer->PadKeyPressed_Callback(PAD_RIGHT) == false) )
-80020b6c: 8e020078 lw v0,120(s0)
-80020b70: 00000000 nop
-80020b74: 0040f809 jalr v0
-80020b78: 24042000 li a0,8192
- }
- }
- }
-
- if( (ptrPlayer->PadKeyPressed_Callback(PAD_LEFT) == false)
- &&
-80020b7c: 1440000a bnez v0,80020ba8 <CameraHandler+0x1a8>
-80020b80: 00000000 nop
- (ptrPlayer->PadKeyPressed_Callback(PAD_RIGHT) == false) )
- {
- if(ptrPlayer->Camera.X_Speed > 0)
-80020b84: 8202008c lb v0,140(s0)
-80020b88: 00000000 nop
-80020b8c: 18400003 blez v0,80020b9c <CameraHandler+0x19c>
-80020b90: 00000000 nop
- {
- ptrPlayer->Camera.X_Speed--;
-80020b94: 10000003 b 80020ba4 <CameraHandler+0x1a4>
-80020b98: 2442ffff addiu v0,v0,-1
- }
- else if(ptrPlayer->Camera.X_Speed < 0)
-80020b9c: 10400002 beqz v0,80020ba8 <CameraHandler+0x1a8>
-80020ba0: 24420001 addiu v0,v0,1
- {
- ptrPlayer->Camera.X_Speed++;
-80020ba4: a202008c sb v0,140(s0)
- }
- }
-
- if( (ptrPlayer->PadKeyPressed_Callback(PAD_UP) == false)
-80020ba8: 8e020078 lw v0,120(s0)
-80020bac: 00000000 nop
-80020bb0: 0040f809 jalr v0
-80020bb4: 24041000 li a0,4096
-80020bb8: 14400010 bnez v0,80020bfc <CameraHandler+0x1fc>
-80020bbc: 00000000 nop
- &&
- (ptrPlayer->PadKeyPressed_Callback(PAD_DOWN) == false) )
-80020bc0: 8e020078 lw v0,120(s0)
-80020bc4: 00000000 nop
-80020bc8: 0040f809 jalr v0
-80020bcc: 24044000 li a0,16384
- ptrPlayer->Camera.X_Speed++;
- }
- }
-
- if( (ptrPlayer->PadKeyPressed_Callback(PAD_UP) == false)
- &&
-80020bd0: 1440000a bnez v0,80020bfc <CameraHandler+0x1fc>
-80020bd4: 00000000 nop
- (ptrPlayer->PadKeyPressed_Callback(PAD_DOWN) == false) )
- {
- if(ptrPlayer->Camera.Y_Speed > 0)
-80020bd8: 8202008d lb v0,141(s0)
-80020bdc: 00000000 nop
-80020be0: 18400003 blez v0,80020bf0 <CameraHandler+0x1f0>
-80020be4: 00000000 nop
- {
- ptrPlayer->Camera.Y_Speed--;
-80020be8: 10000003 b 80020bf8 <CameraHandler+0x1f8>
-80020bec: 2442ffff addiu v0,v0,-1
- }
- else if(ptrPlayer->Camera.Y_Speed < 0)
-80020bf0: 10400002 beqz v0,80020bfc <CameraHandler+0x1fc>
-80020bf4: 24420001 addiu v0,v0,1
- {
- ptrPlayer->Camera.Y_Speed++;
-80020bf8: a202008d sb v0,141(s0)
- {
- ptrPlayer->Camera.Speed_Timer = 0;
- CameraUpdateSpeed(ptrPlayer);
- }
-
- ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed;
-80020bfc: 8203008c lb v1,140(s0)
-80020c00: 8e020084 lw v0,132(s0)
- ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed;
-}
-80020c04: 8fbf0014 lw ra,20(sp)
- {
- ptrPlayer->Camera.Speed_Timer = 0;
- CameraUpdateSpeed(ptrPlayer);
- }
-
- ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed;
-80020c08: 00431021 addu v0,v0,v1
-80020c0c: ae020084 sw v0,132(s0)
- ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed;
-80020c10: 8203008d lb v1,141(s0)
-80020c14: 8e020088 lw v0,136(s0)
-80020c18: 00000000 nop
-80020c1c: 00431021 addu v0,v0,v1
-80020c20: ae020088 sw v0,136(s0)
-}
-80020c24: 8fb00010 lw s0,16(sp)
-80020c28: 03e00008 jr ra
-80020c2c: 27bd0018 addiu sp,sp,24
-
-void CameraHandler(TYPE_PLAYER * ptrPlayer)
-{
- if(CameraSpecialConditions(ptrPlayer) == true)
- {
- ptrPlayer->Camera.X_Speed = 0;
-80020c30: a080008c sb zero,140(a0)
- ptrPlayer->Camera.Y_Speed = 0;
- return;
-80020c34: 03e00008 jr ra
-80020c38: a080008d sb zero,141(a0)
-
-80020c3c <CameraGetIsoPos>:
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
-{
- TYPE_ISOMETRIC_POS IsoPos;
- TYPE_CARTESIAN_POS CartPos;
-
- CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset;
-80020c3c: 8ca30084 lw v1,132(a1)
-80020c40: 240200c0 li v0,192
-
- return false;
-}
-
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
-{
-80020c44: 27bdffd8 addiu sp,sp,-40
- TYPE_ISOMETRIC_POS IsoPos;
- TYPE_CARTESIAN_POS CartPos;
-
- CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset;
-80020c48: 00431023 subu v0,v0,v1
- CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset;
-80020c4c: 8ca30088 lw v1,136(a1)
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
-{
- TYPE_ISOMETRIC_POS IsoPos;
- TYPE_CARTESIAN_POS CartPos;
-
- CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset;
-80020c50: a7a20018 sh v0,24(sp)
- CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset;
-80020c54: 24020078 li v0,120
-
- return false;
-}
-
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
-{
-80020c58: afb00020 sw s0,32(sp)
- TYPE_ISOMETRIC_POS IsoPos;
- TYPE_CARTESIAN_POS CartPos;
-
- CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset;
- CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset;
-80020c5c: 00431023 subu v0,v0,v1
-
- return false;
-}
-
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
-{
-80020c60: 00808021 move s0,a0
- CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset;
- CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset;
-
- /*dprintf("CartPos = {%d, %d}\n", CartPos.x, CartPos.y);*/
-
- IsoPos = GfxCartesianToIsometric(&CartPos);
-80020c64: 27a50018 addiu a1,sp,24
-80020c68: 27a40010 addiu a0,sp,16
-
- return false;
-}
-
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
-{
-80020c6c: afbf0024 sw ra,36(sp)
- CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset;
- CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset;
-
- /*dprintf("CartPos = {%d, %d}\n", CartPos.x, CartPos.y);*/
-
- IsoPos = GfxCartesianToIsometric(&CartPos);
-80020c70: 0c0091e8 jal 800247a0 <GfxCartesianToIsometric>
-80020c74: a7a2001a sh v0,26(sp)
-
- return IsoPos;
-80020c78: 97a20010 lhu v0,16(sp)
-}
-80020c7c: 8fbf0024 lw ra,36(sp)
-
- /*dprintf("CartPos = {%d, %d}\n", CartPos.x, CartPos.y);*/
-
- IsoPos = GfxCartesianToIsometric(&CartPos);
-
- return IsoPos;
-80020c80: a6020000 sh v0,0(s0)
-80020c84: 97a20012 lhu v0,18(sp)
-80020c88: 00000000 nop
-80020c8c: a6020002 sh v0,2(s0)
-80020c90: 97a20014 lhu v0,20(sp)
-80020c94: 00000000 nop
-80020c98: a6020004 sh v0,4(s0)
-}
-80020c9c: 02001021 move v0,s0
-80020ca0: 8fb00020 lw s0,32(sp)
-80020ca4: 03e00008 jr ra
-80020ca8: 27bd0028 addiu sp,sp,40
-
-80020cac <CameraMoveToIsoPos>:
-
-void CameraMoveToIsoPos(TYPE_PLAYER * ptrPlayer, TYPE_ISOMETRIC_POS IsoPos)
-{
-80020cac: 27bdffe0 addiu sp,sp,-32
-80020cb0: afb00018 sw s0,24(sp)
-80020cb4: afa50024 sw a1,36(sp)
-80020cb8: 00808021 move s0,a0
- TYPE_CARTESIAN_POS CartPos = GfxIsometricToCartesian(&IsoPos);
-80020cbc: 27a50024 addiu a1,sp,36
-80020cc0: 27a40010 addiu a0,sp,16
-
- return IsoPos;
-}
-
-void CameraMoveToIsoPos(TYPE_PLAYER * ptrPlayer, TYPE_ISOMETRIC_POS IsoPos)
-{
-80020cc4: afbf001c sw ra,28(sp)
- TYPE_CARTESIAN_POS CartPos = GfxIsometricToCartesian(&IsoPos);
-80020cc8: 0c0091ac jal 800246b0 <GfxIsometricToCartesian>
-80020ccc: afa60028 sw a2,40(sp)
- IsoPos.y,
- IsoPos.z,
- CartPos.x,
- CartPos.y );*/
-
- ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET - CartPos.x;
-80020cd0: 87a30010 lh v1,16(sp)
-80020cd4: 240200c0 li v0,192
-80020cd8: 00431023 subu v0,v0,v1
- ptrPlayer->Camera.Y_Offset = (Y_SCREEN_RESOLUTION >> 1) - CartPos.y;
-80020cdc: 87a30012 lh v1,18(sp)
- IsoPos.y,
- IsoPos.z,
- CartPos.x,
- CartPos.y );*/
-
- ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET - CartPos.x;
-80020ce0: ae020084 sw v0,132(s0)
- ptrPlayer->Camera.Y_Offset = (Y_SCREEN_RESOLUTION >> 1) - CartPos.y;
-
- /*dprintf("Moving camera to {%d, %d}\n",
- ptrPlayer->Camera.X_Offset,
- ptrPlayer->Camera.Y_Offset );*/
-}
-80020ce4: 8fbf001c lw ra,28(sp)
- IsoPos.z,
- CartPos.x,
- CartPos.y );*/
-
- ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET - CartPos.x;
- ptrPlayer->Camera.Y_Offset = (Y_SCREEN_RESOLUTION >> 1) - CartPos.y;
-80020ce8: 24020078 li v0,120
-80020cec: 00431023 subu v0,v0,v1
-80020cf0: ae020088 sw v0,136(s0)
-
- /*dprintf("Moving camera to {%d, %d}\n",
- ptrPlayer->Camera.X_Offset,
- ptrPlayer->Camera.Y_Offset );*/
-}
-80020cf4: 8fb00018 lw s0,24(sp)
-80020cf8: 03e00008 jr ra
-80020cfc: 27bd0020 addiu sp,sp,32
-
-80020d00 <EndAnimationFadeOut>:
- SfxStopMusic();
- }
-}
-
-void EndAnimationFadeOut(void)
-{
-80020d00: 27bdffe8 addiu sp,sp,-24
-80020d04: afb00010 sw s0,16(sp)
- {
- if( GfxGetGlobalLuminance() > 0)
- {
- GfxSetGlobalLuminance(GfxGetGlobalLuminance() - END_ANIMATION_FADEOUT_STEP);
-
- GfxSortSprite(&EndAnimationDisplay);;
-80020d08: 3c108004 lui s0,0x8004
- SfxStopMusic();
- }
-}
-
-void EndAnimationFadeOut(void)
-{
-80020d0c: afbf0014 sw ra,20(sp)
- {
- if( GfxGetGlobalLuminance() > 0)
- {
- GfxSetGlobalLuminance(GfxGetGlobalLuminance() - END_ANIMATION_FADEOUT_STEP);
-
- GfxSortSprite(&EndAnimationDisplay);;
-80020d10: 261032d0 addiu s0,s0,13008
-{
- uint8_t i;
-
- while(1)
- {
- if( GfxGetGlobalLuminance() > 0)
-80020d14: 0c009007 jal 8002401c <GfxGetGlobalLuminance>
-80020d18: 00000000 nop
-80020d1c: 1040000c beqz v0,80020d50 <EndAnimationFadeOut+0x50>
-80020d20: 00003021 move a2,zero
- {
- GfxSetGlobalLuminance(GfxGetGlobalLuminance() - END_ANIMATION_FADEOUT_STEP);
-80020d24: 0c009007 jal 8002401c <GfxGetGlobalLuminance>
-80020d28: 00000000 nop
-80020d2c: 2442fff8 addiu v0,v0,-8
-80020d30: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-80020d34: 304400ff andi a0,v0,0xff
-
- GfxSortSprite(&EndAnimationDisplay);;
-80020d38: 0c0090d2 jal 80024348 <GfxSortSprite>
-80020d3c: 02002021 move a0,s0
- GfxDrawScene_Slow();
-80020d40: 0c009030 jal 800240c0 <GfxDrawScene_Slow>
-80020d44: 00000000 nop
- GfxDrawScene_Slow();
- }
-
- break;
- }
- }
-80020d48: 1000fff2 b 80020d14 <EndAnimationFadeOut+0x14>
-80020d4c: 00000000 nop
- GfxSortSprite(&EndAnimationDisplay);;
- GfxDrawScene_Slow();
- }
- else
- {
- GsSortCls(0,0,0);
-80020d50: 00002821 move a1,zero
-80020d54: 0c00c4e8 jal 800313a0 <GsSortCls>
-80020d58: 00002021 move a0,zero
-
- for(i = 0 ; i < 2 ; i++)
- {
- // Draw two frames to ensure black display
- GfxDrawScene_Slow();
-80020d5c: 0c009030 jal 800240c0 <GfxDrawScene_Slow>
-80020d60: 00000000 nop
- }
-
- break;
- }
- }
-}
-80020d64: 8fbf0014 lw ra,20(sp)
-80020d68: 8fb00010 lw s0,16(sp)
- GsSortCls(0,0,0);
-
- for(i = 0 ; i < 2 ; i++)
- {
- // Draw two frames to ensure black display
- GfxDrawScene_Slow();
-80020d6c: 08009030 j 800240c0 <GfxDrawScene_Slow>
-80020d70: 27bd0018 addiu sp,sp,24
-
-80020d74 <EndAnimation>:
-
-static GsRectangle EndAnimationRect;
-static GsSprite EndAnimationDisplay;
-
-void EndAnimation(void)
-{
-80020d74: 27bdff60 addiu sp,sp,-160
-80020d78: afb1007c sw s1,124(sp)
- uint8_t randIndex = 0;
-
- GfxSaveDisplayData(&EndAnimationDisplay);
-80020d7c: 3c118004 lui s1,0x8004
-80020d80: 262432d0 addiu a0,s1,13008
-
-static GsRectangle EndAnimationRect;
-static GsSprite EndAnimationDisplay;
-
-void EndAnimation(void)
-{
-80020d84: afbf009c sw ra,156(sp)
-80020d88: afbe0098 sw s8,152(sp)
-80020d8c: afb70094 sw s7,148(sp)
-80020d90: afb60090 sw s6,144(sp)
-80020d94: afb5008c sw s5,140(sp)
-80020d98: afb40088 sw s4,136(sp)
-80020d9c: afb30084 sw s3,132(sp)
-80020da0: afb20080 sw s2,128(sp)
- uint8_t randIndex = 0;
-
- GfxSaveDisplayData(&EndAnimationDisplay);
-80020da4: 0c009090 jal 80024240 <GfxSaveDisplayData>
-80020da8: afb00078 sw s0,120(sp)
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-80020dac: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-80020db0: 24040080 li a0,128
-
- if(SystemIsRandSeedSet() == false)
-80020db4: 0c009f87 jal 80027e1c <SystemIsRandSeedSet>
-80020db8: 00000000 nop
-80020dbc: 14400005 bnez v0,80020dd4 <EndAnimation+0x60>
-80020dc0: 00000000 nop
- {
- // Set default end animation
- EndAnimationFadeOut();
-80020dc4: 0c008340 jal 80020d00 <EndAnimationFadeOut>
-80020dc8: 00000000 nop
-80020dcc: 10000091 b 80021014 <EndAnimation+0x2a0>
-80020dd0: 00000000 nop
- }
- else
- {
- randIndex = rand() % (END_ANIMATION_MAX_RAND_VALUE + 1);
-80020dd4: 0c00d5a9 jal 800356a4 <rand>
-80020dd8: 00000000 nop
-
- switch(randIndex)
-80020ddc: 24030003 li v1,3
-80020de0: 14600002 bnez v1,80020dec <EndAnimation+0x78>
-80020de4: 0043001a div zero,v0,v1
-80020de8: 0007000d break 0x7
-80020dec: 24030001 li v1,1
-80020df0: 00001010 mfhi v0
-80020df4: 304200ff andi v0,v0,0xff
-80020df8: 10430063 beq v0,v1,80020f88 <EndAnimation+0x214>
-80020dfc: 24030002 li v1,2
-80020e00: 10430065 beq v0,v1,80020f98 <EndAnimation+0x224>
-80020e04: 3c148004 lui s4,0x8004
-80020e08: 14400080 bnez v0,8002100c <EndAnimation+0x298>
-80020e0c: 3c158004 lui s5,0x8004
- uint16_t randInd = 0;
- bool sqPos[END_ANIMATION_SQUARES_TOTAL];
- uint16_t sqCounter = END_ANIMATION_SQUARES_TOTAL;
- uint16_t maxIndex = END_ANIMATION_SQUARES_TOTAL_MAX_INDEX;
-
- EndAnimationRect.w = END_ANIMATION_SQUARES_SIZE;
-80020e10: 26b032fc addiu s0,s5,13052
-80020e14: 24020020 li v0,32
-
- EndAnimationRect.r = 0;
- EndAnimationRect.g = 0;
- EndAnimationRect.b = 0;
-
- memset(sqPos, false , END_ANIMATION_SQUARES_TOTAL);
-80020e18: 24060060 li a2,96
-80020e1c: 00002821 move a1,zero
-80020e20: 27a40010 addiu a0,sp,16
- uint16_t randInd = 0;
- bool sqPos[END_ANIMATION_SQUARES_TOTAL];
- uint16_t sqCounter = END_ANIMATION_SQUARES_TOTAL;
- uint16_t maxIndex = END_ANIMATION_SQUARES_TOTAL_MAX_INDEX;
-
- EndAnimationRect.w = END_ANIMATION_SQUARES_SIZE;
-80020e24: a6020004 sh v0,4(s0)
- EndAnimationRect.h = END_ANIMATION_SQUARES_SIZE;
-80020e28: a6020006 sh v0,6(s0)
-
- EndAnimationRect.r = 0;
-80020e2c: a2000008 sb zero,8(s0)
- EndAnimationRect.g = 0;
-80020e30: a2000009 sb zero,9(s0)
- EndAnimationRect.b = 0;
-80020e34: a200000a sb zero,10(s0)
-
- memset(sqPos, false , END_ANIMATION_SQUARES_TOTAL);
-80020e38: 0c00d7ab jal 80035eac <memset>
-80020e3c: 24140060 li s4,96
-void EndAnimationSquares(void)
-{
- uint16_t i, j, k;
- uint16_t randInd = 0;
- bool sqPos[END_ANIMATION_SQUARES_TOTAL];
- uint16_t sqCounter = END_ANIMATION_SQUARES_TOTAL;
-80020e40: 24120060 li s2,96
- uint16_t maxIndex = END_ANIMATION_SQUARES_TOTAL_MAX_INDEX;
-80020e44: 2413005f li s3,95
- /*dprintf("randInd = %d\t",randInd);
- dprintf("sqPos[randInd] = %d\n", sqPos[randInd]);*/
-
- if(sqPos[randInd] == false)
- {
- sqPos[randInd] = true;
-80020e48: 24170001 li s7,1
- }
- }
-
- }while(1);
-
- GfxSortSprite(&EndAnimationDisplay);
-80020e4c: 263132d0 addiu s1,s1,13008
- {
- for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++)
- {
- if(sqPos[j] == true)
- {
- EndAnimationRect.x = ((j) << END_ANIMATION_SQUARES_SIZE_BITSHIFT) -
-80020e50: 2416000c li s6,12
-
- GfxSortSprite(&EndAnimationDisplay);
-
- if(sqCounter != 0)
- {
- for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++)
-80020e54: 241e0060 li s8,96
- for(i = 0; i < END_ANIMATION_SQUARES_TOTAL ; i++)
- {
-
- do
- {
- randInd = SystemRand(0,maxIndex);
-80020e58: 02602821 move a1,s3
-80020e5c: 0c00a03d jal 800280f4 <SystemRand>
-80020e60: 00002021 move a0,zero
-
- /*dprintf("randInd = %d\t",randInd);
- dprintf("sqPos[randInd] = %d\n", sqPos[randInd]);*/
-
- if(sqPos[randInd] == false)
-80020e64: 3042ffff andi v0,v0,0xffff
-80020e68: 27a30010 addiu v1,sp,16
-80020e6c: 00621021 addu v0,v1,v0
-80020e70: 90430000 lbu v1,0(v0)
-80020e74: 00000000 nop
-80020e78: 1460000d bnez v1,80020eb0 <EndAnimation+0x13c>
-80020e7c: 00000000 nop
- {
- sqPos[randInd] = true;
- sqCounter--;
-80020e80: 2652ffff addiu s2,s2,-1
- /*dprintf("randInd = %d\t",randInd);
- dprintf("sqPos[randInd] = %d\n", sqPos[randInd]);*/
-
- if(sqPos[randInd] == false)
- {
- sqPos[randInd] = true;
-80020e84: a0570000 sb s7,0(v0)
- sqCounter--;
-80020e88: 3252ffff andi s2,s2,0xffff
-
- while(sqPos[maxIndex] == true)
-80020e8c: 27a20010 addiu v0,sp,16
-80020e90: 00531021 addu v0,v0,s3
-80020e94: 90420000 lbu v0,0(v0)
-80020e98: 00000000 nop
-80020e9c: 10400006 beqz v0,80020eb8 <EndAnimation+0x144>
-80020ea0: 00000000 nop
- {
- // Lower maximum value for rand() so that it's
- // easier to spot new empty index on next iteration.
- maxIndex--;
-80020ea4: 2673ffff addiu s3,s3,-1
-80020ea8: 1000fff8 b 80020e8c <EndAnimation+0x118>
-80020eac: 3273ffff andi s3,s3,0xffff
-
- break;
- }
- else
- {
- if(sqCounter == 0)
-80020eb0: 1640ffea bnez s2,80020e5c <EndAnimation+0xe8>
-80020eb4: 02602821 move a1,s3
- }
- }
-
- }while(1);
-
- GfxSortSprite(&EndAnimationDisplay);
-80020eb8: 0c0090d2 jal 80024348 <GfxSortSprite>
-80020ebc: 02202021 move a0,s1
-
- if(sqCounter != 0)
-80020ec0: 1640000f bnez s2,80020f00 <EndAnimation+0x18c>
-80020ec4: 00001821 move v1,zero
- {
- // Quick fix: draw a full black rectangle instead of multiple squares
- for(k = 0 ; k < 2 ; k++)
- {
- // Draw two frames to ensure black display
- GsSortCls(0,0,0);
-80020ec8: 00003021 move a2,zero
-80020ecc: 00002821 move a1,zero
-80020ed0: 0c00c4e8 jal 800313a0 <GsSortCls>
-80020ed4: 00002021 move a0,zero
- GfxDrawScene_Slow();
-80020ed8: 0c009030 jal 800240c0 <GfxDrawScene_Slow>
-80020edc: 2694ffff addiu s4,s4,-1
- {
- // Quick fix: draw a full black rectangle instead of multiple squares
- for(k = 0 ; k < 2 ; k++)
- {
- // Draw two frames to ensure black display
- GsSortCls(0,0,0);
-80020ee0: 00003021 move a2,zero
-80020ee4: 00002821 move a1,zero
-80020ee8: 0c00c4e8 jal 800313a0 <GsSortCls>
-80020eec: 00002021 move a0,zero
- GfxDrawScene_Slow();
-80020ef0: 0c009030 jal 800240c0 <GfxDrawScene_Slow>
-80020ef4: 3294ffff andi s4,s4,0xffff
-80020ef8: 1000001d b 80020f70 <EndAnimation+0x1fc>
-80020efc: 00000000 nop
-
- if(sqCounter != 0)
- {
- for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++)
- {
- if(sqPos[j] == true)
-80020f00: 27a40010 addiu a0,sp,16
-80020f04: 00832021 addu a0,a0,v1
-80020f08: 90840000 lbu a0,0(a0)
-80020f0c: 00000000 nop
-80020f10: 10800012 beqz a0,80020f5c <EndAnimation+0x1e8>
-80020f14: 3062ffff andi v0,v1,0xffff
- {
- EndAnimationRect.x = ((j) << END_ANIMATION_SQUARES_SIZE_BITSHIFT) -
-80020f18: 16c00002 bnez s6,80020f24 <EndAnimation+0x1b0>
-80020f1c: 0056001b divu zero,v0,s6
-80020f20: 0007000d break 0x7
-80020f24: 00021140 sll v0,v0,0x5
-80020f28: afa30070 sw v1,112(sp)
-80020f2c: 00002012 mflo a0
-80020f30: 000431c0 sll a2,a0,0x7
-80020f34: 00042a40 sll a1,a0,0x9
-80020f38: 00a62823 subu a1,a1,a2
- (short)( (j / END_ANIMATION_SQUARES_PER_ROW) *
- X_SCREEN_RESOLUTION);
-
- EndAnimationRect.y = (short) (j/ END_ANIMATION_SQUARES_PER_ROW) <<
-80020f3c: 00042140 sll a0,a0,0x5
- {
- for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++)
- {
- if(sqPos[j] == true)
- {
- EndAnimationRect.x = ((j) << END_ANIMATION_SQUARES_SIZE_BITSHIFT) -
-80020f40: 00451023 subu v0,v0,a1
- (short)( (j / END_ANIMATION_SQUARES_PER_ROW) *
- X_SCREEN_RESOLUTION);
-
- EndAnimationRect.y = (short) (j/ END_ANIMATION_SQUARES_PER_ROW) <<
-80020f44: a6040002 sh a0,2(s0)
- END_ANIMATION_SQUARES_SIZE_BITSHIFT;
-
- GsSortRectangle(&EndAnimationRect);
-80020f48: 02002021 move a0,s0
-80020f4c: 0c00b762 jal 8002dd88 <GsSortRectangle>
-80020f50: a6a232fc sh v0,13052(s5)
-80020f54: 8fa30070 lw v1,112(sp)
-80020f58: 00000000 nop
-80020f5c: 24630001 addiu v1,v1,1
-
- GfxSortSprite(&EndAnimationDisplay);
-
- if(sqCounter != 0)
- {
- for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++)
-80020f60: 147effe8 bne v1,s8,80020f04 <EndAnimation+0x190>
-80020f64: 27a40010 addiu a0,sp,16
-80020f68: 2694ffff addiu s4,s4,-1
-80020f6c: 3294ffff andi s4,s4,0xffff
- GsSortCls(0,0,0);
- GfxDrawScene_Slow();
- }
- }
-
- GfxDrawScene_Slow();
-80020f70: 0c009030 jal 800240c0 <GfxDrawScene_Slow>
-80020f74: 00000000 nop
- EndAnimationRect.g = 0;
- EndAnimationRect.b = 0;
-
- memset(sqPos, false , END_ANIMATION_SQUARES_TOTAL);
-
- for(i = 0; i < END_ANIMATION_SQUARES_TOTAL ; i++)
-80020f78: 1680ffb8 bnez s4,80020e5c <EndAnimation+0xe8>
-80020f7c: 02602821 move a1,s3
-80020f80: 10000022 b 8002100c <EndAnimation+0x298>
-80020f84: 00000000 nop
- case END_ANIMATION_SQUARES:
- EndAnimationSquares();
- break;
-
- case END_ANIMATION_FADEOUT:
- EndAnimationFadeOut();
-80020f88: 0c008340 jal 80020d00 <EndAnimationFadeOut>
-80020f8c: 00000000 nop
- break;
-80020f90: 1000001e b 8002100c <EndAnimation+0x298>
-80020f94: 00000000 nop
- }
- else
- {
- randIndex = rand() % (END_ANIMATION_MAX_RAND_VALUE + 1);
-
- switch(randIndex)
-80020f98: 00009821 move s3,zero
-{
- short rectIndex = 0;
-
- do
- {
- GfxSortSprite(&EndAnimationDisplay);
-80020f9c: 263232d0 addiu s2,s1,13008
-
- // Draw upper half rectangle
-
- EndAnimationRect.x = 0;
- EndAnimationRect.y = 0;
-80020fa0: 269032fc addiu s0,s4,13052
-
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
-80020fa4: 24150180 li s5,384
- EndAnimationRect.h = rectIndex;
-
- GsSortRectangle(&EndAnimationRect);
-
- EndAnimationRect.x = 0;
- EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex;
-80020fa8: 241600f0 li s6,240
-{
- short rectIndex = 0;
-
- do
- {
- GfxSortSprite(&EndAnimationDisplay);
-80020fac: 0c0090d2 jal 80024348 <GfxSortSprite>
-80020fb0: 02402021 move a0,s2
-80020fb4: 3271ffff andi s1,s3,0xffff
- EndAnimationRect.y = 0;
-
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
- EndAnimationRect.h = rectIndex;
-
- GsSortRectangle(&EndAnimationRect);
-80020fb8: 02002021 move a0,s0
-
- EndAnimationRect.x = 0;
- EndAnimationRect.y = 0;
-
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
- EndAnimationRect.h = rectIndex;
-80020fbc: a6130006 sh s3,6(s0)
- {
- GfxSortSprite(&EndAnimationDisplay);
-
- // Draw upper half rectangle
-
- EndAnimationRect.x = 0;
-80020fc0: a68032fc sh zero,13052(s4)
- EndAnimationRect.y = 0;
-80020fc4: a6000002 sh zero,2(s0)
-
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
- EndAnimationRect.h = rectIndex;
-
- GsSortRectangle(&EndAnimationRect);
-80020fc8: 0c00b762 jal 8002dd88 <GsSortRectangle>
-80020fcc: a6150004 sh s5,4(s0)
-
- EndAnimationRect.x = 0;
- EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex;
-80020fd0: 02d11023 subu v0,s6,s1
-80020fd4: 26310002 addiu s1,s1,2
-
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
- EndAnimationRect.h = rectIndex;
-
- GsSortRectangle(&EndAnimationRect);
-80020fd8: 02002021 move a0,s0
-80020fdc: 3231ffff andi s1,s1,0xffff
- EndAnimationRect.h = rectIndex;
-
- GsSortRectangle(&EndAnimationRect);
-
- EndAnimationRect.x = 0;
- EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex;
-80020fe0: a6020002 sh v0,2(s0)
-
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
- EndAnimationRect.h = rectIndex;
-80020fe4: a6130006 sh s3,6(s0)
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
- EndAnimationRect.h = rectIndex;
-
- GsSortRectangle(&EndAnimationRect);
-
- EndAnimationRect.x = 0;
-80020fe8: a68032fc sh zero,13052(s4)
- EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex;
-
- EndAnimationRect.w = X_SCREEN_RESOLUTION;
-80020fec: a6150004 sh s5,4(s0)
- EndAnimationRect.h = rectIndex;
-
- GsSortRectangle(&EndAnimationRect);
-80020ff0: 0c00b762 jal 8002dd88 <GsSortRectangle>
-80020ff4: 00119c00 sll s3,s1,0x10
-
- GfxDrawScene_Slow();
-80020ff8: 0c009030 jal 800240c0 <GfxDrawScene_Slow>
-80020ffc: 00139c03 sra s3,s3,0x10
-
- rectIndex += END_ANIMATION_LINE_STEP;
-
- }while(rectIndex <= (X_SCREEN_RESOLUTION >> 1) );
-80021000: 240200c2 li v0,194
-80021004: 1622ffe9 bne s1,v0,80020fac <EndAnimation+0x238>
-80021008: 00000000 nop
-
- default:
- break;
- }
-
- SfxStopMusic();
-8002100c: 0c009f28 jal 80027ca0 <SfxStopMusic>
-80021010: 00000000 nop
- }
-}
-80021014: 8fbf009c lw ra,156(sp)
-80021018: 8fbe0098 lw s8,152(sp)
-8002101c: 8fb70094 lw s7,148(sp)
-80021020: 8fb60090 lw s6,144(sp)
-80021024: 8fb5008c lw s5,140(sp)
-80021028: 8fb40088 lw s4,136(sp)
-8002102c: 8fb30084 lw s3,132(sp)
-80021030: 8fb20080 lw s2,128(sp)
-80021034: 8fb1007c lw s1,124(sp)
-80021038: 8fb00078 lw s0,120(sp)
-8002103c: 03e00008 jr ra
-80021040: 27bd00a0 addiu sp,sp,160
-
-80021044 <FontLoadImage>:
- * *************************************/
-
-char _internal_text[FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE];
-
-bool FontLoadImage(char * strPath, TYPE_FONT * ptrFont)
-{
-80021044: 27bdffe0 addiu sp,sp,-32
-80021048: afb10018 sw s1,24(sp)
-8002104c: afb00014 sw s0,20(sp)
-80021050: afbf001c sw ra,28(sp)
- if(GfxSpriteFromFile(strPath, &ptrFont->spr) == false)
-80021054: 0c00903c jal 800240f0 <GfxSpriteFromFile>
-80021058: 00a08021 move s0,a1
-8002105c: 10400021 beqz v0,800210e4 <FontLoadImage+0xa0>
-80021060: 00408821 move s1,v0
- {
- return false;
- }
-
- ptrFont->spr_w = ptrFont->spr.w;
- ptrFont->spr_h = ptrFont->spr.h;
-80021064: 96020008 lhu v0,8(s0)
- if(GfxSpriteFromFile(strPath, &ptrFont->spr) == false)
- {
- return false;
- }
-
- ptrFont->spr_w = ptrFont->spr.w;
-80021068: 86040006 lh a0,6(s0)
- ptrFont->spr_h = ptrFont->spr.h;
-8002106c: a602003a sh v0,58(s0)
- ptrFont->spr_u = ptrFont->spr.u;
-80021070: 92020004 lbu v0,4(s0)
- ptrFont->spr_v = ptrFont->spr.v;
-
- //Now set default values to font
-
- ptrFont->char_w = FONT_DEFAULT_CHAR_SIZE;
-80021074: 24030010 li v1,16
- return false;
- }
-
- ptrFont->spr_w = ptrFont->spr.w;
- ptrFont->spr_h = ptrFont->spr.h;
- ptrFont->spr_u = ptrFont->spr.u;
-80021078: a602003c sh v0,60(s0)
- ptrFont->spr_v = ptrFont->spr.v;
-8002107c: 92020005 lbu v0,5(s0)
- if(GfxSpriteFromFile(strPath, &ptrFont->spr) == false)
- {
- return false;
- }
-
- ptrFont->spr_w = ptrFont->spr.w;
-80021080: a6040038 sh a0,56(s0)
- ptrFont->spr_h = ptrFont->spr.h;
- ptrFont->spr_u = ptrFont->spr.u;
- ptrFont->spr_v = ptrFont->spr.v;
-80021084: a602003e sh v0,62(s0)
- ptrFont->char_w = FONT_DEFAULT_CHAR_SIZE;
- ptrFont->char_h = FONT_DEFAULT_CHAR_SIZE;
-
- ptrFont->spr.attribute |= COLORMODE(COLORMODE_4BPP);
- ptrFont->spr.attribute &= COLORMODE(~(COLORMODE_8BPP | COLORMODE_16BPP | COLORMODE_24BPP));
- ptrFont->spr.r = NORMAL_LUMINANCE;
-80021088: 2402ff80 li v0,-128
-8002108c: a202000e sb v0,14(s0)
- ptrFont->spr.g = NORMAL_LUMINANCE;
-80021090: a202000f sb v0,15(s0)
- ptrFont->spr.b = NORMAL_LUMINANCE;
-80021094: a2020010 sb v0,16(s0)
-
- //At this point, spr.w and spr.h = real w/h
- ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w);
-80021098: 000417c3 sra v0,a0,0x1f
-8002109c: 3042000f andi v0,v0,0xf
-800210a0: 00441021 addu v0,v0,a0
-800210a4: 00021103 sra v0,v0,0x4
-800210a8: a2020031 sb v0,49(s0)
-
- ptrFont->flags = FONT_NOFLAGS;
-
- ptrFont->init_ch = FONT_DEFAULT_INIT_CHAR;
-
- dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy);
-800210ac: 3c048004 lui a0,0x8004
- ptrFont->spr.w = ptrFont->char_w;
- ptrFont->spr.h = ptrFont->char_h;
-
- ptrFont->flags = FONT_NOFLAGS;
-
- ptrFont->init_ch = FONT_DEFAULT_INIT_CHAR;
-800210b0: 24020021 li v0,33
-
- dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy);
-800210b4: 8606000c lh a2,12(s0)
-800210b8: 8605000a lh a1,10(s0)
- ptrFont->spr_u = ptrFont->spr.u;
- ptrFont->spr_v = ptrFont->spr.v;
-
- //Now set default values to font
-
- ptrFont->char_w = FONT_DEFAULT_CHAR_SIZE;
-800210bc: a603002c sh v1,44(s0)
- ptrFont->char_h = FONT_DEFAULT_CHAR_SIZE;
-800210c0: a603002e sh v1,46(s0)
-
- ptrFont->spr.attribute |= COLORMODE(COLORMODE_4BPP);
- ptrFont->spr.attribute &= COLORMODE(~(COLORMODE_8BPP | COLORMODE_16BPP | COLORMODE_24BPP));
-800210c4: ae000014 sw zero,20(s0)
- ptrFont->spr.g = NORMAL_LUMINANCE;
- ptrFont->spr.b = NORMAL_LUMINANCE;
-
- //At this point, spr.w and spr.h = real w/h
- ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w);
- ptrFont->max_ch_wrap = 0;
-800210c8: a2000032 sb zero,50(s0)
-
- ptrFont->spr.w = ptrFont->char_w;
-800210cc: a6030006 sh v1,6(s0)
- ptrFont->spr.h = ptrFont->char_h;
-800210d0: a6030008 sh v1,8(s0)
-
- ptrFont->flags = FONT_NOFLAGS;
-800210d4: ae000034 sw zero,52(s0)
-
- ptrFont->init_ch = FONT_DEFAULT_INIT_CHAR;
-800210d8: a2020030 sb v0,48(s0)
-
- dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy);
-800210dc: 0c00ed8f jal 8003b63c <printf>
-800210e0: 2484021c addiu a0,a0,540
-
- return true;
-}
-800210e4: 8fbf001c lw ra,28(sp)
-800210e8: 02201021 move v0,s1
-800210ec: 8fb00014 lw s0,20(sp)
-800210f0: 8fb10018 lw s1,24(sp)
-800210f4: 03e00008 jr ra
-800210f8: 27bd0020 addiu sp,sp,32
-
-800210fc <FontSetInitChar>:
-
-void FontSetInitChar(TYPE_FONT * ptrFont, char c)
-{
- ptrFont->init_ch = c;
-800210fc: 03e00008 jr ra
-80021100: a0850030 sb a1,48(a0)
-
-80021104 <FontSetFlags>:
-}
-
-void FontSetFlags(TYPE_FONT * ptrFont, FONT_FLAGS flags)
-{
- ptrFont->flags = flags;
-80021104: 03e00008 jr ra
-80021108: ac850034 sw a1,52(a0)
-
-8002110c <FontSetSize>:
-{
- ptrFont->char_w = size;
- ptrFont->char_h = size;
-
- //At this point, spr.w and spr.h = real w/h
- ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w);
-8002110c: 84820038 lh v0,56(a0)
-{
- ptrFont->flags = flags;
-}
-
-void FontSetSize(TYPE_FONT * ptrFont, short size)
-{
-80021110: 00052c00 sll a1,a1,0x10
-80021114: 00052c03 sra a1,a1,0x10
- ptrFont->char_w = size;
- ptrFont->char_h = size;
-
- //At this point, spr.w and spr.h = real w/h
- ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w);
-80021118: 14a00002 bnez a1,80021124 <FontSetSize+0x18>
-8002111c: 0045001a div zero,v0,a1
-80021120: 0007000d break 0x7
- ptrFont->flags = flags;
-}
-
-void FontSetSize(TYPE_FONT * ptrFont, short size)
-{
- ptrFont->char_w = size;
-80021124: a485002c sh a1,44(a0)
- ptrFont->char_h = size;
-80021128: a485002e sh a1,46(a0)
-
- //At this point, spr.w and spr.h = real w/h
- ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w);
- ptrFont->max_ch_wrap = 0;
-8002112c: a0800032 sb zero,50(a0)
-
- ptrFont->spr.w = ptrFont->char_w;
-80021130: a4850006 sh a1,6(a0)
- ptrFont->spr.h = ptrFont->char_h;
-80021134: a4850008 sh a1,8(a0)
-{
- ptrFont->char_w = size;
- ptrFont->char_h = size;
-
- //At this point, spr.w and spr.h = real w/h
- ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w);
-80021138: 00001012 mflo v0
- ptrFont->max_ch_wrap = 0;
-
- ptrFont->spr.w = ptrFont->char_w;
- ptrFont->spr.h = ptrFont->char_h;
-8002113c: 03e00008 jr ra
-80021140: a0820031 sb v0,49(a0)
-
-80021144 <FontPrintText>:
- int result;
- short orig_x = x;
-
- va_list ap;
-
- if(ptrFont->flags & FONT_1HZ_FLASH)
-80021144: 8c820034 lw v0,52(a0)
- ptrFont->spr.w = ptrFont->char_w;
- ptrFont->spr.h = ptrFont->char_h;
-}
-
-void FontPrintText(TYPE_FONT * ptrFont, short x, short y, char * str, ...)
-{
-80021148: 27bdffb8 addiu sp,sp,-72
- int result;
- short orig_x = x;
-
- va_list ap;
-
- if(ptrFont->flags & FONT_1HZ_FLASH)
-8002114c: 30430008 andi v1,v0,0x8
- ptrFont->spr.w = ptrFont->char_w;
- ptrFont->spr.h = ptrFont->char_h;
-}
-
-void FontPrintText(TYPE_FONT * ptrFont, short x, short y, char * str, ...)
-{
-80021150: afb20028 sw s2,40(sp)
-80021154: afb10024 sw s1,36(sp)
-80021158: 00059400 sll s2,a1,0x10
-8002115c: 00068c00 sll s1,a2,0x10
-80021160: afb3002c sw s3,44(sp)
-80021164: afb00020 sw s0,32(sp)
-80021168: afbf0044 sw ra,68(sp)
-8002116c: afbe0040 sw s8,64(sp)
-80021170: afb7003c sw s7,60(sp)
-80021174: afb60038 sw s6,56(sp)
-80021178: afb50034 sw s5,52(sp)
-8002117c: afb40030 sw s4,48(sp)
-80021180: 00808021 move s0,a0
-80021184: 00e09821 move s3,a3
-80021188: 00129403 sra s2,s2,0x10
- int result;
- short orig_x = x;
-
- va_list ap;
-
- if(ptrFont->flags & FONT_1HZ_FLASH)
-8002118c: 10600014 beqz v1,800211e0 <FontPrintText+0x9c>
-80021190: 00118c03 sra s1,s1,0x10
- {
- if(Gfx1HzFlash() == false)
-80021194: 0c0090b6 jal 800242d8 <Gfx1HzFlash>
-80021198: 00000000 nop
-8002119c: 1040007c beqz v0,80021390 <FontPrintText+0x24c>
-800211a0: 3c168007 lui s6,0x8007
- }
- }
-
- va_start(ap, str);
-
- result = vsnprintf( _internal_text,
-800211a4: 02603021 move a2,s3
- {
- return;
- }
- }
-
- va_start(ap, str);
-800211a8: 27a70058 addiu a3,sp,88
-
- result = vsnprintf( _internal_text,
-800211ac: 26c48db8 addiu a0,s6,-29256
-800211b0: 240500c8 li a1,200
-800211b4: 0c00ec5d jal 8003b174 <vsnprintf>
-800211b8: afa70010 sw a3,16(sp)
-800211bc: 0040f021 move s8,v0
- FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE,
- str,
- ap );
-
- for(i = 0; i < result ; i++)
-800211c0: 02409821 move s3,s2
-}
-
-void FontPrintText(TYPE_FONT * ptrFont, short x, short y, char * str, ...)
-{
- uint16_t i;
- uint16_t line_count = 0;
-800211c4: 0000a821 move s5,zero
- result = vsnprintf( _internal_text,
- FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE,
- str,
- ap );
-
- for(i = 0; i < result ; i++)
-800211c8: 0000a021 move s4,zero
- {
- char _ch = _internal_text[i];
-800211cc: 26d68db8 addiu s6,s6,-29256
- {
- // End of string
- break;
- }
-
- switch(_ch)
-800211d0: 2402000a li v0,10
-800211d4: 24060020 li a2,32
- result = vsnprintf( _internal_text,
- FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE,
- str,
- ap );
-
- for(i = 0; i < result ; i++)
-800211d8: 10000017 b 80021238 <FontPrintText+0xf4>
-800211dc: 2417ff80 li s7,-128
- if(Gfx1HzFlash() == false)
- {
- return;
- }
- }
- else if(ptrFont->flags & FONT_2HZ_FLASH)
-800211e0: 30420010 andi v0,v0,0x10
-800211e4: 1040ffef beqz v0,800211a4 <FontPrintText+0x60>
-800211e8: 3c168007 lui s6,0x8007
- {
- if(Gfx2HzFlash() == false)
-800211ec: 0c0090c4 jal 80024310 <Gfx2HzFlash>
-800211f0: 00000000 nop
-800211f4: 1000ffe9 b 8002119c <FontPrintText+0x58>
-800211f8: 00000000 nop
- str,
- ap );
-
- for(i = 0; i < result ; i++)
- {
- char _ch = _internal_text[i];
-800211fc: 80630000 lb v1,0(v1)
-80021200: 00000000 nop
-
- if(_ch == '\0')
-80021204: 10600062 beqz v1,80021390 <FontPrintText+0x24c>
-80021208: 00000000 nop
- {
- // End of string
- break;
- }
-
- switch(_ch)
-8002120c: 1062000f beq v1,v0,8002124c <FontPrintText+0x108>
-80021210: 00000000 nop
-80021214: 14660013 bne v1,a2,80021264 <FontPrintText+0x120>
-80021218: 00000000 nop
- {
- case ' ':
- x += ptrFont->char_w;
-8002121c: 9603002c lhu v1,44(s0)
-80021220: 00000000 nop
-80021224: 02639821 addu s3,s3,v1
-80021228: 00139c00 sll s3,s3,0x10
-8002122c: 00139c03 sra s3,s3,0x10
- result = vsnprintf( _internal_text,
- FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE,
- str,
- ap );
-
- for(i = 0; i < result ; i++)
-80021230: 26940001 addiu s4,s4,1
-80021234: 3294ffff andi s4,s4,0xffff
-80021238: 029e182a slt v1,s4,s8
-8002123c: 1460ffef bnez v1,800211fc <FontPrintText+0xb8>
-80021240: 02961821 addu v1,s4,s6
-80021244: 10000052 b 80021390 <FontPrintText+0x24c>
-80021248: 00000000 nop
- case ' ':
- x += ptrFont->char_w;
- continue;
- case '\n':
- x = orig_x;
- y += ptrFont->char_h;
-8002124c: 9603002e lhu v1,46(s0)
- {
- case ' ':
- x += ptrFont->char_w;
- continue;
- case '\n':
- x = orig_x;
-80021250: 02409821 move s3,s2
- y += ptrFont->char_h;
-80021254: 02238821 addu s1,s1,v1
-80021258: 00118c00 sll s1,s1,0x10
- break;
-8002125c: 1000fff4 b 80021230 <FontPrintText+0xec>
-80021260: 00118c03 sra s1,s1,0x10
- default:
- if( (ptrFont->flags & FONT_WRAP_LINE) && (ptrFont->max_ch_wrap != 0) )
-80021264: 8e050034 lw a1,52(s0)
-80021268: 00000000 nop
-8002126c: 30a40002 andi a0,a1,0x2
-80021270: 10800010 beqz a0,800212b4 <FontPrintText+0x170>
-80021274: 00000000 nop
-80021278: 92040032 lbu a0,50(s0)
-8002127c: 00000000 nop
-80021280: 1080000c beqz a0,800212b4 <FontPrintText+0x170>
-80021284: 00000000 nop
- {
- if(++line_count >= ptrFont->max_ch_wrap)
-80021288: 26b50001 addiu s5,s5,1
-8002128c: 32b5ffff andi s5,s5,0xffff
-80021290: 02a4202b sltu a0,s5,a0
-80021294: 14800007 bnez a0,800212b4 <FontPrintText+0x170>
-80021298: 00000000 nop
- {
- line_count = 0;
- x = orig_x;
- y += ptrFont->char_h;
-8002129c: 9604002e lhu a0,46(s0)
- if( (ptrFont->flags & FONT_WRAP_LINE) && (ptrFont->max_ch_wrap != 0) )
- {
- if(++line_count >= ptrFont->max_ch_wrap)
- {
- line_count = 0;
- x = orig_x;
-800212a0: 02409821 move s3,s2
- y += ptrFont->char_h;
-800212a4: 02248821 addu s1,s1,a0
-800212a8: 00118c00 sll s1,s1,0x10
-800212ac: 00118c03 sra s1,s1,0x10
- default:
- if( (ptrFont->flags & FONT_WRAP_LINE) && (ptrFont->max_ch_wrap != 0) )
- {
- if(++line_count >= ptrFont->max_ch_wrap)
- {
- line_count = 0;
-800212b0: 0000a821 move s5,zero
-
- ptrFont->spr.x = x;
- ptrFont->spr.y = y;
- ptrFont->spr.w = ptrFont->char_w;
- ptrFont->spr.h = ptrFont->char_h;
- ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w;
-800212b4: 82040030 lb a0,48(s0)
- }
- }
-
- ptrFont->spr.x = x;
- ptrFont->spr.y = y;
- ptrFont->spr.w = ptrFont->char_w;
-800212b8: 8608002c lh t0,44(s0)
- ptrFont->spr.h = ptrFont->char_h;
- ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w;
-800212bc: 00641823 subu v1,v1,a0
-800212c0: 92040031 lbu a0,49(s0)
- }
-
- ptrFont->spr.x = x;
- ptrFont->spr.y = y;
- ptrFont->spr.w = ptrFont->char_w;
- ptrFont->spr.h = ptrFont->char_h;
-800212c4: 8607002e lh a3,46(s0)
- ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w;
- ptrFont->spr.u += ptrFont->spr_u; // Add original offset for image
-800212c8: 14800002 bnez a0,800212d4 <FontPrintText+0x190>
-800212cc: 0064001a div zero,v1,a0
-800212d0: 0007000d break 0x7
- }
- }
-
- ptrFont->spr.x = x;
- ptrFont->spr.y = y;
- ptrFont->spr.w = ptrFont->char_w;
-800212d4: a6080006 sh t0,6(s0)
- ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w;
- ptrFont->spr.u += ptrFont->spr_u; // Add original offset for image
- ptrFont->spr.v = (short)( (_ch - ptrFont->init_ch) / ptrFont->char_per_row) * ptrFont->char_h;
- ptrFont->spr.v += ptrFont->spr_v; // Add original offset for image
-
- if(ptrFont->flags & FONT_BLEND_EFFECT)
-800212d8: 30a50004 andi a1,a1,0x4
- x = orig_x;
- y += ptrFont->char_h;
- }
- }
-
- ptrFont->spr.x = x;
-800212dc: a6130000 sh s3,0(s0)
- ptrFont->spr.y = y;
-800212e0: a6110002 sh s1,2(s0)
- ptrFont->spr.w = ptrFont->char_w;
- ptrFont->spr.h = ptrFont->char_h;
-800212e4: a6070008 sh a3,8(s0)
- ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w;
- ptrFont->spr.u += ptrFont->spr_u; // Add original offset for image
-800212e8: 00002010 mfhi a0
-800212ec: 00001812 mflo v1
- ...
-800212f8: 00880018 mult a0,t0
-800212fc: 9208003c lbu t0,60(s0)
-80021300: 00002012 mflo a0
-80021304: 00882021 addu a0,a0,t0
-80021308: a2040004 sb a0,4(s0)
- ptrFont->spr.v = (short)( (_ch - ptrFont->init_ch) / ptrFont->char_per_row) * ptrFont->char_h;
- ptrFont->spr.v += ptrFont->spr_v; // Add original offset for image
-8002130c: 00670018 mult v1,a3
-80021310: 9204003e lbu a0,62(s0)
-80021314: 00001812 mflo v1
-80021318: 00641821 addu v1,v1,a0
-
- if(ptrFont->flags & FONT_BLEND_EFFECT)
-8002131c: 10a0000e beqz a1,80021358 <FontPrintText+0x214>
-80021320: a2030005 sb v1,5(s0)
- {
- ptrFont->spr.r += 8;
-80021324: 9203000e lbu v1,14(s0)
-80021328: 00000000 nop
-8002132c: 24630008 addiu v1,v1,8
-80021330: a203000e sb v1,14(s0)
- ptrFont->spr.g += 8;
-80021334: 9203000f lbu v1,15(s0)
-80021338: 00000000 nop
-8002133c: 24630008 addiu v1,v1,8
-80021340: a203000f sb v1,15(s0)
- ptrFont->spr.b += 8;
-80021344: 92030010 lbu v1,16(s0)
-80021348: 00000000 nop
-8002134c: 24630008 addiu v1,v1,8
-80021350: 10000004 b 80021364 <FontPrintText+0x220>
-80021354: a2030010 sb v1,16(s0)
- }
- else
- {
- ptrFont->spr.r = NORMAL_LUMINANCE;
-80021358: a217000e sb s7,14(s0)
- ptrFont->spr.g = NORMAL_LUMINANCE;
-8002135c: a217000f sb s7,15(s0)
- ptrFont->spr.b = NORMAL_LUMINANCE;
-80021360: a2170010 sb s7,16(s0)
- ptrFont->init_ch);
- dprintf("Char: %c, spr.u = %d, spr.v = %d\n",str[i],ptrFont->spr.u, ptrFont->spr.v);
- dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy);*/
- //dprintf("Sprite rgb={%d,%d,%d}\n",ptrFont->spr.r, ptrFont->spr.g, ptrFont->spr.b);
-
- GfxSortSprite(&ptrFont->spr);
-80021364: 02002021 move a0,s0
-80021368: afa6001c sw a2,28(sp)
-8002136c: 0c0090d2 jal 80024348 <GfxSortSprite>
-80021370: afa20018 sw v0,24(sp)
- x += ptrFont->char_w;
-80021374: 9603002c lhu v1,44(s0)
-80021378: 8fa6001c lw a2,28(sp)
-8002137c: 02639821 addu s3,s3,v1
-80021380: 00139c00 sll s3,s3,0x10
-80021384: 8fa20018 lw v0,24(sp)
- break;
-80021388: 1000ffa9 b 80021230 <FontPrintText+0xec>
-8002138c: 00139c03 sra s3,s3,0x10
- }
- }
-
- va_end(ap);
-}
-80021390: 8fbf0044 lw ra,68(sp)
-80021394: 8fbe0040 lw s8,64(sp)
-80021398: 8fb7003c lw s7,60(sp)
-8002139c: 8fb60038 lw s6,56(sp)
-800213a0: 8fb50034 lw s5,52(sp)
-800213a4: 8fb40030 lw s4,48(sp)
-800213a8: 8fb3002c lw s3,44(sp)
-800213ac: 8fb20028 lw s2,40(sp)
-800213b0: 8fb10024 lw s1,36(sp)
-800213b4: 8fb00020 lw s0,32(sp)
-800213b8: 03e00008 jr ra
-800213bc: 27bd0048 addiu sp,sp,72
-
-800213c0 <GameGetTileFromIsoPosition>:
-
-uint16_t GameGetTileFromIsoPosition(TYPE_ISOMETRIC_POS * IsoPos)
-{
- uint16_t tile;
-
- if( (IsoPos->x < 0) || (IsoPos->y < 0) )
-800213c0: 84830000 lh v1,0(a0)
-800213c4: 00000000 nop
-800213c8: 0460000d bltz v1,80021400 <GameGetTileFromIsoPosition+0x40>
-800213cc: 3402ffff li v0,0xffff
-800213d0: 84840002 lh a0,2(a0)
-800213d4: 00000000 nop
-800213d8: 04800009 bltz a0,80021400 <GameGetTileFromIsoPosition+0x40>
-800213dc: 00042183 sra a0,a0,0x6
- {
- return GAME_INVALID_TILE_SELECTION; // Invalid XYZ position
- }
-
- tile = IsoPos->x >> TILE_SIZE_BIT_SHIFT;
- tile += (IsoPos->y >> TILE_SIZE_BIT_SHIFT) * GameLevelColumns;
-800213e0: 3c028007 lui v0,0x8007
-800213e4: 90421c12 lbu v0,7186(v0)
-800213e8: 00000000 nop
-800213ec: 00820018 mult a0,v0
- if( (IsoPos->x < 0) || (IsoPos->y < 0) )
- {
- return GAME_INVALID_TILE_SELECTION; // Invalid XYZ position
- }
-
- tile = IsoPos->x >> TILE_SIZE_BIT_SHIFT;
-800213f0: 00031983 sra v1,v1,0x6
- tile += (IsoPos->y >> TILE_SIZE_BIT_SHIFT) * GameLevelColumns;
-800213f4: 00002012 mflo a0
-800213f8: 00641021 addu v0,v1,a0
-800213fc: 3042ffff andi v0,v0,0xffff
- IsoPos->x,
- IsoPos->y,
- IsoPos->z );*/
-
- return tile;
-}
-80021400: 03e00008 jr ra
-80021404: 00000000 nop
-
-80021408 <GameGetSelectedRunwayArray>:
- }
- }
-}
-
-void GameGetSelectedRunwayArray(uint16_t rwyHeader)
-{
-80021408: 27bdffd8 addiu sp,sp,-40
-8002140c: afb00010 sw s0,16(sp)
-80021410: 3c108004 lui s0,0x8004
-80021414: afb40020 sw s4,32(sp)
-80021418: afb20018 sw s2,24(sp)
-8002141c: afb10014 sw s1,20(sp)
-80021420: afbf0024 sw ra,36(sp)
-80021424: afb3001c sw s3,28(sp)
-80021428: 3c128004 lui s2,0x8004
-8002142c: 3c118007 lui s1,0x8007
-80021430: 3c148007 lui s4,0x8007
-
- static uint16_t last_tile = 0;
- static uint8_t i = 0;
- static RWY_DIR dir;
-
- if(rwyHeader != 0)
-80021434: 1080002a beqz a0,800214e0 <GameGetSelectedRunwayArray+0xd8>
-80021438: 26103324 addiu s0,s0,13092
-8002143c: 00809821 move s3,a0
- {
- // This function is called recursively.
- // Since 0 is not a valid value (it's not allowed to place
- // a runway header on first tile), it is used to determine
- // when to start creating the array.
- memset(GameRwyArray, 0, GAME_MAX_RWY_LENGTH * sizeof(uint16_t));
-80021440: 24060020 li a2,32
-80021444: 00002821 move a1,zero
-80021448: 26443744 addiu a0,s2,14148
-8002144c: 0c00d7ab jal 80035eac <memset>
-80021450: 02138021 addu s0,s0,s3
- last_tile = rwyHeader;
- i = 0;
-
- switch(GameLevelBuffer[rwyHeader])
-80021454: 92020000 lbu v0,0(s0)
-80021458: 2403000a li v1,10
- // This function is called recursively.
- // Since 0 is not a valid value (it's not allowed to place
- // a runway header on first tile), it is used to determine
- // when to start creating the array.
- memset(GameRwyArray, 0, GAME_MAX_RWY_LENGTH * sizeof(uint16_t));
- last_tile = rwyHeader;
-8002145c: a6331c0a sh s3,7178(s1)
- i = 0;
-
- switch(GameLevelBuffer[rwyHeader])
-80021460: 10430010 beq v0,v1,800214a4 <GameGetSelectedRunwayArray+0x9c>
-80021464: a2801c08 sb zero,7176(s4)
-80021468: 2c43000b sltiu v1,v0,11
-8002146c: 10600006 beqz v1,80021488 <GameGetSelectedRunwayArray+0x80>
-80021470: 24030001 li v1,1
-80021474: 24030009 li v1,9
-80021478: 1443000e bne v0,v1,800214b4 <GameGetSelectedRunwayArray+0xac>
-8002147c: 3c028007 lui v0,0x8007
- {
- case TILE_RWY_START_1:
- dir = RWY_DIR_EAST;
- break;
-80021480: 10000030 b 80021544 <GameGetSelectedRunwayArray+0x13c>
-80021484: ac401c04 sw zero,7172(v0)
- // when to start creating the array.
- memset(GameRwyArray, 0, GAME_MAX_RWY_LENGTH * sizeof(uint16_t));
- last_tile = rwyHeader;
- i = 0;
-
- switch(GameLevelBuffer[rwyHeader])
-80021488: 2442ff77 addiu v0,v0,-137
-8002148c: 0062102b sltu v0,v1,v0
-80021490: 14400008 bnez v0,800214b4 <GameGetSelectedRunwayArray+0xac>
-80021494: 24030002 li v1,2
- dir = RWY_DIR_WEST;
- break;
- case TILE_RWY_START_1 | TILE_MIRROR_FLAG:
- dir = RWY_DIR_SOUTH;
- case TILE_RWY_START_2 | TILE_MIRROR_FLAG:
- dir = RWY_DIR_NORTH;
-80021498: 3c028007 lui v0,0x8007
-8002149c: 10000005 b 800214b4 <GameGetSelectedRunwayArray+0xac>
-800214a0: ac431c04 sw v1,7172(v0)
- {
- case TILE_RWY_START_1:
- dir = RWY_DIR_EAST;
- break;
- case TILE_RWY_START_2:
- dir = RWY_DIR_WEST;
-800214a4: 24030001 li v1,1
-800214a8: 3c028007 lui v0,0x8007
- break;
-800214ac: 10000025 b 80021544 <GameGetSelectedRunwayArray+0x13c>
-800214b0: ac431c04 sw v1,7172(v0)
- case RWY_DIR_SOUTH:
- last_tile += GameLevelColumns;
- }
-
- GameGetSelectedRunwayArray(0);
-}
-800214b4: 8fbf0024 lw ra,36(sp)
-800214b8: 8fb40020 lw s4,32(sp)
-800214bc: 8fb20018 lw s2,24(sp)
-800214c0: 8fb10014 lw s1,20(sp)
-800214c4: 8fb00010 lw s0,16(sp)
- case TILE_RWY_START_1 | TILE_MIRROR_FLAG:
- dir = RWY_DIR_SOUTH;
- case TILE_RWY_START_2 | TILE_MIRROR_FLAG:
- dir = RWY_DIR_NORTH;
- default:
- dprintf("Unknown direction for tile %d\n",rwyHeader);
-800214c8: 02602821 move a1,s3
-800214cc: 3c048004 lui a0,0x8004
- case RWY_DIR_SOUTH:
- last_tile += GameLevelColumns;
- }
-
- GameGetSelectedRunwayArray(0);
-}
-800214d0: 8fb3001c lw s3,28(sp)
- case TILE_RWY_START_1 | TILE_MIRROR_FLAG:
- dir = RWY_DIR_SOUTH;
- case TILE_RWY_START_2 | TILE_MIRROR_FLAG:
- dir = RWY_DIR_NORTH;
- default:
- dprintf("Unknown direction for tile %d\n",rwyHeader);
-800214d4: 2484023c addiu a0,a0,572
-800214d8: 0800ed8f j 8003b63c <printf>
-800214dc: 27bd0028 addiu sp,sp,40
- break;
- }
- }
- else
- {
- if( (GameLevelBuffer[last_tile] == TILE_RWY_START_1)
-800214e0: 96231c0a lhu v1,7178(s1)
-800214e4: 00000000 nop
-800214e8: 02038021 addu s0,s0,v1
-800214ec: 92020000 lbu v0,0(s0)
-800214f0: 00000000 nop
-800214f4: 3042007f andi v0,v0,0x7f
-800214f8: 2442fff7 addiu v0,v0,-9
-800214fc: 2c420002 sltiu v0,v0,2
-80021500: 10400010 beqz v0,80021544 <GameGetSelectedRunwayArray+0x13c>
-80021504: 00000000 nop
- (GameLevelBuffer[last_tile] == (TILE_RWY_START_1 | TILE_MIRROR_FLAG) )
- ||
- (GameLevelBuffer[last_tile] == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) )
- {
- // Runway end found
- GameRwyArray[i++] = last_tile;
-80021508: 92821c08 lbu v0,7176(s4)
-8002150c: 26523744 addiu s2,s2,14148
-80021510: 24440001 addiu a0,v0,1
- case RWY_DIR_SOUTH:
- last_tile += GameLevelColumns;
- }
-
- GameGetSelectedRunwayArray(0);
-}
-80021514: 8fbf0024 lw ra,36(sp)
- (GameLevelBuffer[last_tile] == (TILE_RWY_START_1 | TILE_MIRROR_FLAG) )
- ||
- (GameLevelBuffer[last_tile] == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) )
- {
- // Runway end found
- GameRwyArray[i++] = last_tile;
-80021518: 00021040 sll v0,v0,0x1
-8002151c: 00521021 addu v0,v0,s2
- case RWY_DIR_SOUTH:
- last_tile += GameLevelColumns;
- }
-
- GameGetSelectedRunwayArray(0);
-}
-80021520: 8fb3001c lw s3,28(sp)
-80021524: 8fb20018 lw s2,24(sp)
-80021528: 8fb10014 lw s1,20(sp)
-8002152c: 8fb00010 lw s0,16(sp)
- (GameLevelBuffer[last_tile] == (TILE_RWY_START_1 | TILE_MIRROR_FLAG) )
- ||
- (GameLevelBuffer[last_tile] == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) )
- {
- // Runway end found
- GameRwyArray[i++] = last_tile;
-80021530: a2841c08 sb a0,7176(s4)
-80021534: a4430000 sh v1,0(v0)
- case RWY_DIR_SOUTH:
- last_tile += GameLevelColumns;
- }
-
- GameGetSelectedRunwayArray(0);
-}
-80021538: 8fb40020 lw s4,32(sp)
-8002153c: 03e00008 jr ra
-80021540: 27bd0028 addiu sp,sp,40
- GameRwyArray[i++] = last_tile;
- return;
- }
- }
-
- GameRwyArray[i++] = last_tile;
-80021544: 92831c08 lbu v1,7176(s4)
-80021548: 26523744 addiu s2,s2,14148
-8002154c: 24620001 addiu v0,v1,1
-80021550: a2821c08 sb v0,7176(s4)
-80021554: 00031840 sll v1,v1,0x1
-80021558: 96221c0a lhu v0,7178(s1)
-8002155c: 00721821 addu v1,v1,s2
-80021560: a4620000 sh v0,0(v1)
-
- switch(dir)
-80021564: 3c038007 lui v1,0x8007
-80021568: 8c631c04 lw v1,7172(v1)
-8002156c: 24050001 li a1,1
-80021570: 1065000c beq v1,a1,800215a4 <GameGetSelectedRunwayArray+0x19c>
-80021574: 3c048007 lui a0,0x8007
-80021578: 10600008 beqz v1,8002159c <GameGetSelectedRunwayArray+0x194>
-8002157c: 24420001 addiu v0,v0,1
-80021580: 24020002 li v0,2
-80021584: 10620009 beq v1,v0,800215ac <GameGetSelectedRunwayArray+0x1a4>
-80021588: 24020003 li v0,3
-8002158c: 1062000e beq v1,v0,800215c8 <GameGetSelectedRunwayArray+0x1c0>
-80021590: 3c028007 lui v0,0x8007
-80021594: 10000011 b 800215dc <GameGetSelectedRunwayArray+0x1d4>
-80021598: 00000000 nop
- {
- case RWY_DIR_EAST:
- last_tile++;
- break;
-8002159c: 1000000f b 800215dc <GameGetSelectedRunwayArray+0x1d4>
-800215a0: a4821c0a sh v0,7178(a0)
- case RWY_DIR_WEST:
- last_tile--;
-800215a4: 2442ffff addiu v0,v0,-1
-800215a8: a4821c0a sh v0,7178(a0)
- case RWY_DIR_NORTH:
- last_tile -= GameLevelColumns;
-800215ac: 3c028007 lui v0,0x8007
-800215b0: 90431c12 lbu v1,7186(v0)
-800215b4: 96221c0a lhu v0,7178(s1)
-800215b8: 00000000 nop
-800215bc: 00431023 subu v0,v0,v1
-800215c0: a6221c0a sh v0,7178(s1)
- case RWY_DIR_SOUTH:
- last_tile += GameLevelColumns;
-800215c4: 3c028007 lui v0,0x8007
-800215c8: 96231c0a lhu v1,7178(s1)
-800215cc: 90421c12 lbu v0,7186(v0)
-800215d0: 00000000 nop
-800215d4: 00431021 addu v0,v0,v1
-800215d8: a6221c0a sh v0,7178(s1)
- }
-
- GameGetSelectedRunwayArray(0);
-}
-800215dc: 8fbf0024 lw ra,36(sp)
-800215e0: 8fb40020 lw s4,32(sp)
-800215e4: 8fb3001c lw s3,28(sp)
-800215e8: 8fb20018 lw s2,24(sp)
-800215ec: 8fb10014 lw s1,20(sp)
-800215f0: 8fb00010 lw s0,16(sp)
- last_tile -= GameLevelColumns;
- case RWY_DIR_SOUTH:
- last_tile += GameLevelColumns;
- }
-
- GameGetSelectedRunwayArray(0);
-800215f4: 00002021 move a0,zero
-800215f8: 08008502 j 80021408 <GameGetSelectedRunwayArray>
-800215fc: 27bd0028 addiu sp,sp,40
-
-80021600 <GamePlayerAddWaypoint_Ex>:
-void GamePlayerAddWaypoint_Ex(TYPE_PLAYER * ptrPlayer, uint16_t tile)
-{
- // "_Ex" function allow selecting a certain tile, whereas the other one
- // is a particulare case of "_Ex" for tile = ptrPlayer->SelectedTIle.
-
- if(ptrPlayer->WaypointIdx >= PLAYER_MAX_WAYPOINTS)
-80021600: 90820074 lbu v0,116(a0)
-80021604: 00000000 nop
-80021608: 2c430020 sltiu v1,v0,32
-8002160c: 14600004 bnez v1,80021620 <GamePlayerAddWaypoint_Ex+0x20>
-80021610: 24430001 addiu v1,v0,1
- {
- dprintf("No available waypoints for this player!\n");
-80021614: 3c048004 lui a0,0x8004
-80021618: 0800ed8f j 8003b63c <printf>
-8002161c: 2484025c addiu a0,a0,604
-
- /*dprintf("Added tile %d to ptrPlayer->Waypoints[%d]\n",
- tile,
- ptrPlayer->WaypointIdx);*/
-
- ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile;
-80021620: 24420018 addiu v0,v0,24
-80021624: 00021040 sll v0,v0,0x1
-80021628: 00821021 addu v0,a0,v0
-8002162c: a0830074 sb v1,116(a0)
-80021630: 03e00008 jr ra
-80021634: a4450004 sh a1,4(v0)
-
-80021638 <GameSelectAircraft>:
-
- return true;
-}
-
-void GameSelectAircraft(TYPE_PLAYER * ptrPlayer)
-{
-80021638: 27bdffe0 addiu sp,sp,-32
-8002163c: afbf001c sw ra,28(sp)
-80021640: afb00018 sw s0,24(sp)
- TYPE_ISOMETRIC_POS IsoPos = AircraftGetIsoPos(ptrPlayer->SelectedAircraft);
-80021644: 9085002e lbu a1,46(a0)
-
- return true;
-}
-
-void GameSelectAircraft(TYPE_PLAYER * ptrPlayer)
-{
-80021648: 00808021 move s0,a0
- TYPE_ISOMETRIC_POS IsoPos = AircraftGetIsoPos(ptrPlayer->SelectedAircraft);
-8002164c: 0c008227 jal 8002089c <AircraftGetIsoPos>
-80021650: 27a40010 addiu a0,sp,16
-
- CameraMoveToIsoPos(ptrPlayer, IsoPos);
-80021654: 8fa50010 lw a1,16(sp)
-80021658: 8fa60014 lw a2,20(sp)
-8002165c: 0c00832b jal 80020cac <CameraMoveToIsoPos>
-80021660: 02002021 move a0,s0
-
- ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos);
-80021664: 0c0084f0 jal 800213c0 <GameGetTileFromIsoPosition>
-80021668: 27a40010 addiu a0,sp,16
-8002166c: a6020032 sh v0,50(s0)
- return GameLevelColumns;
-}
-
-void GamePlayerAddWaypoint(TYPE_PLAYER * ptrPlayer)
-{
- GamePlayerAddWaypoint_Ex(ptrPlayer, ptrPlayer->SelectedTile);
-80021670: 02002021 move a0,s0
-80021674: 0c008580 jal 80021600 <GamePlayerAddWaypoint_Ex>
-80021678: 00402821 move a1,v0
- CameraMoveToIsoPos(ptrPlayer, IsoPos);
-
- ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos);
-
- GamePlayerAddWaypoint(ptrPlayer);
-}
-8002167c: 8fbf001c lw ra,28(sp)
-80021680: 8fb00018 lw s0,24(sp)
-80021684: 03e00008 jr ra
-80021688: 27bd0020 addiu sp,sp,32
-
-8002168c <GamePathToTile>:
-
- ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile;
-}
-
-bool GamePathToTile(TYPE_PLAYER * ptrPlayer)
-{
-8002168c: 27bdffc0 addiu sp,sp,-64
- // Given an input TYPE_PLAYER structure and a selected tile,
- // it updates current Waypoints array with all tiles between two points.
- // If one of these tiles do not belong to desired tiles (i.e.: grass,
- // water, buildings...), then false is returned.
-
- uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS,
-80021690: 3c058004 lui a1,0x8004
-80021694: 2406000b li a2,11
-
- ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile;
-}
-
-bool GamePathToTile(TYPE_PLAYER * ptrPlayer)
-{
-80021698: afb10024 sw s1,36(sp)
- // Given an input TYPE_PLAYER structure and a selected tile,
- // it updates current Waypoints array with all tiles between two points.
- // If one of these tiles do not belong to desired tiles (i.e.: grass,
- // water, buildings...), then false is returned.
-
- uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS,
-8002169c: 24a5f784 addiu a1,a1,-2172
-
- ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile;
-}
-
-bool GamePathToTile(TYPE_PLAYER * ptrPlayer)
-{
-800216a0: 00808821 move s1,a0
- // Given an input TYPE_PLAYER structure and a selected tile,
- // it updates current Waypoints array with all tiles between two points.
- // If one of these tiles do not belong to desired tiles (i.e.: grass,
- // water, buildings...), then false is returned.
-
- uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS,
-800216a4: 27a40010 addiu a0,sp,16
-
- ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile;
-}
-
-bool GamePathToTile(TYPE_PLAYER * ptrPlayer)
-{
-800216a8: afbf003c sw ra,60(sp)
-800216ac: afb60038 sw s6,56(sp)
-800216b0: afb50034 sw s5,52(sp)
-800216b4: afb40030 sw s4,48(sp)
-800216b8: afb3002c sw s3,44(sp)
-800216bc: afb20028 sw s2,40(sp)
- // Given an input TYPE_PLAYER structure and a selected tile,
- // it updates current Waypoints array with all tiles between two points.
- // If one of these tiles do not belong to desired tiles (i.e.: grass,
- // water, buildings...), then false is returned.
-
- uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS,
-800216c0: 0c00d75e jal 80035d78 <memcpy>
-800216c4: afb00020 sw s0,32(sp)
-
- uint16_t x_diff;
- uint16_t y_diff;
- uint16_t temp_tile;
-
- if(ptrPlayer->SelectedTile == GAME_INVALID_TILE_SELECTION)
-800216c8: 96240032 lhu a0,50(s1)
-800216cc: 3402ffff li v0,0xffff
-800216d0: 10820105 beq a0,v0,80021ae8 <GamePathToTile+0x45c>
-800216d4: 00001021 move v0,zero
- {
- return false;
- }
-
- for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++)
-800216d8: 92220075 lbu v0,117(s1)
-800216dc: 00000000 nop
-800216e0: 24460001 addiu a2,v0,1
-800216e4: 30c600ff andi a2,a2,0xff
-800216e8: 00c01821 move v1,a2
-800216ec: 2c650020 sltiu a1,v1,32
-800216f0: 10a00007 beqz a1,80021710 <GamePathToTile+0x84>
-800216f4: 24650018 addiu a1,v1,24
- {
- ptrPlayer->Waypoints[i] = 0;
-800216f8: 00052840 sll a1,a1,0x1
-800216fc: 02252821 addu a1,s1,a1
- if(ptrPlayer->SelectedTile == GAME_INVALID_TILE_SELECTION)
- {
- return false;
- }
-
- for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++)
-80021700: 24630001 addiu v1,v1,1
- {
- ptrPlayer->Waypoints[i] = 0;
-80021704: a4a00004 sh zero,4(a1)
- if(ptrPlayer->SelectedTile == GAME_INVALID_TILE_SELECTION)
- {
- return false;
- }
-
- for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++)
-80021708: 1000fff8 b 800216ec <GamePathToTile+0x60>
-8002170c: 306300ff andi v1,v1,0xff
- ptrPlayer->Waypoints[i] = 0;
- }
-
- ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
-
- x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) -
-80021710: 3c158007 lui s5,0x8007
-80021714: 92a31c12 lbu v1,7186(s5)
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) );
-80021718: 24420018 addiu v0,v0,24
- ptrPlayer->Waypoints[i] = 0;
- }
-
- ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
-
- x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) -
-8002171c: 14600002 bnez v1,80021728 <GamePathToTile+0x9c>
-80021720: 0083001a div zero,a0,v1
-80021724: 0007000d break 0x7
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) );
-80021728: 00021040 sll v0,v0,0x1
- for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++)
- {
- ptrPlayer->Waypoints[i] = 0;
- }
-
- ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
-8002172c: a2260074 sb a2,116(s1)
-
- x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) -
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) );
-80021730: 02221021 addu v0,s1,v0
- ptrPlayer->Waypoints[i] = 0;
- }
-
- ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
-
- x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) -
-80021734: 94420004 lhu v0,4(v0)
-80021738: 26340034 addiu s4,s1,52
-8002173c: 00002010 mfhi a0
- ...
-80021748: 14600002 bnez v1,80021754 <GamePathToTile+0xc8>
-8002174c: 0043001a div zero,v0,v1
-80021750: 0007000d break 0x7
-80021754: 00001010 mfhi v0
-80021758: 0c00d588 jal 80035620 <abs>
-8002175c: 00822023 subu a0,a0,v0
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) );
-
- y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) -
-80021760: 92a31c12 lbu v1,7186(s5)
-80021764: 96240032 lhu a0,50(s1)
- ptrPlayer->Waypoints[i] = 0;
- }
-
- ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
-
- x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) -
-80021768: 3052ffff andi s2,v0,0xffff
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) );
-
- y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) -
-8002176c: 14600002 bnez v1,80021778 <GamePathToTile+0xec>
-80021770: 0083001a div zero,a0,v1
-80021774: 0007000d break 0x7
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) );
-80021778: 92220075 lbu v0,117(s1)
-8002177c: 00000000 nop
-80021780: 24420018 addiu v0,v0,24
-80021784: 00021040 sll v0,v0,0x1
-80021788: 02221021 addu v0,s1,v0
- ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
-
- x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) -
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) );
-
- y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) -
-8002178c: 94420004 lhu v0,4(v0)
-80021790: 00002012 mflo a0
- ...
-8002179c: 14600002 bnez v1,800217a8 <GamePathToTile+0x11c>
-800217a0: 0043001a div zero,v0,v1
-800217a4: 0007000d break 0x7
-800217a8: 00001812 mflo v1
-800217ac: 0c00d588 jal 80035620 <abs>
-800217b0: 00832023 subu a0,a0,v1
-800217b4: 3053ffff andi s3,v0,0xffff
-
- // At this point, we have to update current waypoints list.
- // ptrPlayer->Waypoints[ptrPlayer->WaypointIdx - 1] points to the last inserted point,
- // so now we have to determine how many points need to be created.
-
- temp_tile = ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx];
-800217b8: 92220075 lbu v0,117(s1)
-800217bc: 00000000 nop
-800217c0: 24420018 addiu v0,v0,24
-800217c4: 00021040 sll v0,v0,0x1
-800217c8: 02221021 addu v0,s1,v0
-800217cc: 94500004 lhu s0,4(v0)
-
- if(x_diff >= y_diff)
-800217d0: 0253102b sltu v0,s2,s3
-800217d4: 1440004e bnez v0,80021910 <GamePathToTile+0x284>
-800217d8: 00000000 nop
- {
- while( (x_diff--) > 0)
-800217dc: 12400046 beqz s2,800218f8 <GamePathToTile+0x26c>
-800217e0: 00000000 nop
- {
- if( (ptrPlayer->SelectedTile % GameLevelColumns) >
-800217e4: 92a31c12 lbu v1,7186(s5)
-800217e8: 96240032 lhu a0,50(s1)
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) )
-800217ec: 92220075 lbu v0,117(s1)
-
- if(x_diff >= y_diff)
- {
- while( (x_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile % GameLevelColumns) >
-800217f0: 14600002 bnez v1,800217fc <GamePathToTile+0x170>
-800217f4: 0083001a div zero,a0,v1
-800217f8: 0007000d break 0x7
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) )
-800217fc: 24420018 addiu v0,v0,24
-80021800: 00021040 sll v0,v0,0x1
-80021804: 02221021 addu v0,s1,v0
-
- if(x_diff >= y_diff)
- {
- while( (x_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile % GameLevelColumns) >
-80021808: 94420004 lhu v0,4(v0)
-8002180c: 00002010 mfhi a0
- ...
-80021818: 14600002 bnez v1,80021824 <GamePathToTile+0x198>
-8002181c: 0043001a div zero,v0,v1
-80021820: 0007000d break 0x7
-80021824: 00001010 mfhi v0
-80021828: 0044182a slt v1,v0,a0
-8002182c: 10600003 beqz v1,8002183c <GamePathToTile+0x1b0>
-80021830: 00000000 nop
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) )
- {
- temp_tile++;
-80021834: 10000002 b 80021840 <GamePathToTile+0x1b4>
-80021838: 26100001 addiu s0,s0,1
- }
- else
- {
- temp_tile--;
-8002183c: 2610ffff addiu s0,s0,-1
-80021840: 3210ffff andi s0,s0,0xffff
- }
-
- if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false)
-80021844: 24060020 li a2,32
-80021848: 02802821 move a1,s4
-8002184c: 0c00a067 jal 8002819c <SystemContains_u16>
-80021850: 02002021 move a0,s0
-80021854: 14400003 bnez v0,80021864 <GamePathToTile+0x1d8>
-80021858: 02002821 move a1,s0
- {
- GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile);
-8002185c: 0c008580 jal 80021600 <GamePlayerAddWaypoint_Ex>
-80021860: 02202021 move a0,s1
-80021864: 2652ffff addiu s2,s2,-1
-80021868: 1000ffdc b 800217dc <GamePathToTile+0x150>
-8002186c: 3252ffff andi s2,s2,0xffff
- }
- }
-
- while( (y_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile / GameLevelColumns) >
-80021870: 92a21c12 lbu v0,7186(s5)
-80021874: 96230032 lhu v1,50(s1)
-80021878: 00000000 nop
-8002187c: 14400002 bnez v0,80021888 <GamePathToTile+0x1fc>
-80021880: 0062001a div zero,v1,v0
-80021884: 0007000d break 0x7
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) )
-80021888: 92230075 lbu v1,117(s1)
-8002188c: 00000000 nop
-80021890: 24630018 addiu v1,v1,24
-80021894: 00031840 sll v1,v1,0x1
-80021898: 02231821 addu v1,s1,v1
- }
- }
-
- while( (y_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile / GameLevelColumns) >
-8002189c: 94630004 lhu v1,4(v1)
-800218a0: 00002012 mflo a0
- ...
-800218ac: 14400002 bnez v0,800218b8 <GamePathToTile+0x22c>
-800218b0: 0062001a div zero,v1,v0
-800218b4: 0007000d break 0x7
-800218b8: 00001812 mflo v1
-800218bc: 0064182a slt v1,v1,a0
-800218c0: 10600011 beqz v1,80021908 <GamePathToTile+0x27c>
-800218c4: 00000000 nop
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) )
- {
- temp_tile += GameLevelColumns;
-800218c8: 02028021 addu s0,s0,v0
- }
- else
- {
- temp_tile -= GameLevelColumns;
-800218cc: 3210ffff andi s0,s0,0xffff
- }
-
- if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false)
-800218d0: 24060020 li a2,32
-800218d4: 02802821 move a1,s4
-800218d8: 0c00a067 jal 8002819c <SystemContains_u16>
-800218dc: 02002021 move a0,s0
-800218e0: 14400003 bnez v0,800218f0 <GamePathToTile+0x264>
-800218e4: 02002821 move a1,s0
- {
- GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile);
-800218e8: 0c008580 jal 80021600 <GamePlayerAddWaypoint_Ex>
-800218ec: 02202021 move a0,s1
-800218f0: 2673ffff addiu s3,s3,-1
-800218f4: 3273ffff andi s3,s3,0xffff
- {
- GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile);
- }
- }
-
- while( (y_diff--) > 0)
-800218f8: 1660ffdd bnez s3,80021870 <GamePathToTile+0x1e4>
-800218fc: 3c128004 lui s2,0x8004
-80021900: 1000002b b 800219b0 <GamePathToTile+0x324>
-80021904: 26523324 addiu s2,s2,13092
- {
- temp_tile += GameLevelColumns;
- }
- else
- {
- temp_tile -= GameLevelColumns;
-80021908: 1000fff0 b 800218cc <GamePathToTile+0x240>
-8002190c: 02028023 subu s0,s0,v0
- }
- else
- {
- while( (y_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile / GameLevelColumns) >
-80021910: 92a21c12 lbu v0,7186(s5)
-80021914: 96230032 lhu v1,50(s1)
-80021918: 00000000 nop
-8002191c: 14400002 bnez v0,80021928 <GamePathToTile+0x29c>
-80021920: 0062001a div zero,v1,v0
-80021924: 0007000d break 0x7
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) )
-80021928: 92230075 lbu v1,117(s1)
-8002192c: 00000000 nop
-80021930: 24630018 addiu v1,v1,24
-80021934: 00031840 sll v1,v1,0x1
-80021938: 02231821 addu v1,s1,v1
- }
- else
- {
- while( (y_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile / GameLevelColumns) >
-8002193c: 94630004 lhu v1,4(v1)
-80021940: 00002012 mflo a0
- ...
-8002194c: 14400002 bnez v0,80021958 <GamePathToTile+0x2cc>
-80021950: 0062001a div zero,v1,v0
-80021954: 0007000d break 0x7
-80021958: 00001812 mflo v1
-8002195c: 0064182a slt v1,v1,a0
-80021960: 10600018 beqz v1,800219c4 <GamePathToTile+0x338>
-80021964: 00000000 nop
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) )
- {
- temp_tile += GameLevelColumns;
-80021968: 02028021 addu s0,s0,v0
- }
- else
- {
- temp_tile -= GameLevelColumns;
-8002196c: 3210ffff andi s0,s0,0xffff
- }
-
- if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false)
-80021970: 24060020 li a2,32
-80021974: 02802821 move a1,s4
-80021978: 0c00a067 jal 8002819c <SystemContains_u16>
-8002197c: 02002021 move a0,s0
-80021980: 14400003 bnez v0,80021990 <GamePathToTile+0x304>
-80021984: 02002821 move a1,s0
- {
- GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile);
-80021988: 0c008580 jal 80021600 <GamePlayerAddWaypoint_Ex>
-8002198c: 02202021 move a0,s1
-80021990: 2673ffff addiu s3,s3,-1
-80021994: 3273ffff andi s3,s3,0xffff
- }
- }
- }
- else
- {
- while( (y_diff--) > 0)
-80021998: 1660ffdd bnez s3,80021910 <GamePathToTile+0x284>
-8002199c: 00000000 nop
- {
- GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile);
- }
- }
-
- while( (x_diff--) > 0)
-800219a0: 1640000a bnez s2,800219cc <GamePathToTile+0x340>
-800219a4: 00000000 nop
- {
- // We have found empty waypoints. Exit loop
- break;
- }
-
- if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]],
-800219a8: 3c128004 lui s2,0x8004
-800219ac: 26523324 addiu s2,s2,13092
-800219b0: 26310074 addiu s1,s1,116
-800219b4: 0240a821 move s5,s2
-800219b8: 27b3001b addiu s3,sp,27
- {
- // Now try again with mirrored tiles, just in case!
-
- for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++)
- {
- AcceptedTiles[j] |= TILE_MIRROR_FLAG;
-800219bc: 1000002f b 80021a7c <GamePathToTile+0x3f0>
-800219c0: 2416ff80 li s6,-128
- {
- temp_tile += GameLevelColumns;
- }
- else
- {
- temp_tile -= GameLevelColumns;
-800219c4: 1000ffe9 b 8002196c <GamePathToTile+0x2e0>
-800219c8: 02028023 subu s0,s0,v0
- }
- }
-
- while( (x_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile % GameLevelColumns) >
-800219cc: 92a31c12 lbu v1,7186(s5)
-800219d0: 96240032 lhu a0,50(s1)
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) )
-800219d4: 92220075 lbu v0,117(s1)
- }
- }
-
- while( (x_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile % GameLevelColumns) >
-800219d8: 14600002 bnez v1,800219e4 <GamePathToTile+0x358>
-800219dc: 0083001a div zero,a0,v1
-800219e0: 0007000d break 0x7
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) )
-800219e4: 24420018 addiu v0,v0,24
-800219e8: 00021040 sll v0,v0,0x1
-800219ec: 02221021 addu v0,s1,v0
- }
- }
-
- while( (x_diff--) > 0)
- {
- if( (ptrPlayer->SelectedTile % GameLevelColumns) >
-800219f0: 94420004 lhu v0,4(v0)
-800219f4: 00002010 mfhi a0
- ...
-80021a00: 14600002 bnez v1,80021a0c <GamePathToTile+0x380>
-80021a04: 0043001a div zero,v0,v1
-80021a08: 0007000d break 0x7
-80021a0c: 00001010 mfhi v0
-80021a10: 0044182a slt v1,v0,a0
-80021a14: 10600003 beqz v1,80021a24 <GamePathToTile+0x398>
-80021a18: 00000000 nop
- (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) )
- {
- temp_tile++;
-80021a1c: 10000002 b 80021a28 <GamePathToTile+0x39c>
-80021a20: 26100001 addiu s0,s0,1
- }
- else
- {
- temp_tile--;
-80021a24: 2610ffff addiu s0,s0,-1
-80021a28: 3210ffff andi s0,s0,0xffff
- }
-
- if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false)
-80021a2c: 24060020 li a2,32
-80021a30: 02802821 move a1,s4
-80021a34: 0c00a067 jal 8002819c <SystemContains_u16>
-80021a38: 02002021 move a0,s0
-80021a3c: 14400003 bnez v0,80021a4c <GamePathToTile+0x3c0>
-80021a40: 02002821 move a1,s0
- {
- GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile);
-80021a44: 0c008580 jal 80021600 <GamePlayerAddWaypoint_Ex>
-80021a48: 02202021 move a0,s1
-80021a4c: 2652ffff addiu s2,s2,-1
-80021a50: 1000ffd3 b 800219a0 <GamePathToTile+0x314>
-80021a54: 3252ffff andi s2,s2,0xffff
- {
- // We have found empty waypoints. Exit loop
- break;
- }
-
- if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]],
-80021a58: 00521021 addu v0,v0,s2
-80021a5c: 90440000 lbu a0,0(v0)
-80021a60: 0c00a05b jal 8002816c <SystemContains_u8>
-80021a64: 27a50010 addiu a1,sp,16
-80021a68: 1040000a beqz v0,80021a94 <GamePathToTile+0x408>
-80021a6c: 27b00010 addiu s0,sp,16
-80021a70: 26940002 addiu s4,s4,2
- }
- }
-
- // Now at this point, we have prepared our array.
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
-80021a74: 1291001c beq s4,s1,80021ae8 <GamePathToTile+0x45c>
-80021a78: 24020001 li v0,1
- {
- if(ptrPlayer->Waypoints[i] == 0)
-80021a7c: 96820000 lhu v0,0(s4)
-80021a80: 00000000 nop
-80021a84: 1440fff4 bnez v0,80021a58 <GamePathToTile+0x3cc>
-80021a88: 2406000b li a2,11
- AcceptedTiles[j] &= ~(TILE_MIRROR_FLAG);
- }
- }
- }
-
- return true;
-80021a8c: 10000016 b 80021ae8 <GamePathToTile+0x45c>
-80021a90: 24020001 li v0,1
- {
- // We have found empty waypoints. Exit loop
- break;
- }
-
- if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]],
-80021a94: 02001021 move v0,s0
- {
- // Now try again with mirrored tiles, just in case!
-
- for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++)
- {
- AcceptedTiles[j] |= TILE_MIRROR_FLAG;
-80021a98: 90430000 lbu v1,0(v0)
-80021a9c: 24420001 addiu v0,v0,1
-80021aa0: 00761825 or v1,v1,s6
- AcceptedTiles,
- sizeof(AcceptedTiles) ) == false)
- {
- // Now try again with mirrored tiles, just in case!
-
- for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++)
-80021aa4: 1453fffc bne v0,s3,80021a98 <GamePathToTile+0x40c>
-80021aa8: a043ffff sb v1,-1(v0)
- {
- AcceptedTiles[j] |= TILE_MIRROR_FLAG;
- }
-
- if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]],
-80021aac: 96820000 lhu v0,0(s4)
-80021ab0: 2406000b li a2,11
-80021ab4: 02a21021 addu v0,s5,v0
-80021ab8: 90440000 lbu a0,0(v0)
-80021abc: 0c00a05b jal 8002816c <SystemContains_u8>
-80021ac0: 27a50010 addiu a1,sp,16
-80021ac4: 10400008 beqz v0,80021ae8 <GamePathToTile+0x45c>
-80021ac8: 00001021 move v0,zero
-
- // Reverse mirror flag.
-
- for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++)
- {
- AcceptedTiles[j] &= ~(TILE_MIRROR_FLAG);
-80021acc: 92020000 lbu v0,0(s0)
-80021ad0: 26100001 addiu s0,s0,1
-80021ad4: 3042007f andi v0,v0,0x7f
- return false;
- }
-
- // Reverse mirror flag.
-
- for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++)
-80021ad8: 1613fffc bne s0,s3,80021acc <GamePathToTile+0x440>
-80021adc: a202ffff sb v0,-1(s0)
-80021ae0: 1000ffe4 b 80021a74 <GamePathToTile+0x3e8>
-80021ae4: 26940002 addiu s4,s4,2
- }
- }
- }
-
- return true;
-}
-80021ae8: 8fbf003c lw ra,60(sp)
-80021aec: 8fb60038 lw s6,56(sp)
-80021af0: 8fb50034 lw s5,52(sp)
-80021af4: 8fb40030 lw s4,48(sp)
-80021af8: 8fb3002c lw s3,44(sp)
-80021afc: 8fb20028 lw s2,40(sp)
-80021b00: 8fb10024 lw s1,36(sp)
-80021b04: 8fb00020 lw s0,32(sp)
-80021b08: 03e00008 jr ra
-80021b0c: 27bd0040 addiu sp,sp,64
-
-80021b10 <Game>:
-static uint8_t firstActiveAircraft;
-//Index for last non-idle aircraft on list
-static uint8_t lastActiveAircraft;
-
-void Game(bool two_players)
-{
-80021b10: 27bdff28 addiu sp,sp,-216
-80021b14: afb100b4 sw s1,180(sp)
- TwoPlayersActive = two_players;
-80021b18: 3c118007 lui s1,0x8007
-80021b1c: a2241c0e sb a0,7182(s1)
- uint8_t i;
- uint32_t track;
-
- GameStartupFlag = true;
-
- LoadMenu( GameFileList,
-80021b20: 3c058004 lui a1,0x8004
-80021b24: 3c048004 lui a0,0x8004
-void GameInit(void)
-{
- uint8_t i;
- uint32_t track;
-
- GameStartupFlag = true;
-80021b28: 24020001 li v0,1
-static uint8_t firstActiveAircraft;
-//Index for last non-idle aircraft on list
-static uint8_t lastActiveAircraft;
-
-void Game(bool two_players)
-{
-80021b2c: afb000b0 sw s0,176(sp)
- uint8_t i;
- uint32_t track;
-
- GameStartupFlag = true;
-
- LoadMenu( GameFileList,
-80021b30: 24070006 li a3,6
-void GameInit(void)
-{
- uint8_t i;
- uint32_t track;
-
- GameStartupFlag = true;
-80021b34: 3c108007 lui s0,0x8007
-
- LoadMenu( GameFileList,
-80021b38: 24060006 li a2,6
-80021b3c: 24a51418 addiu a1,a1,5144
-80021b40: 24841430 addiu a0,a0,5168
-static uint8_t firstActiveAircraft;
-//Index for last non-idle aircraft on list
-static uint8_t lastActiveAircraft;
-
-void Game(bool two_players)
-{
-80021b44: afbf00d4 sw ra,212(sp)
-void GameInit(void)
-{
- uint8_t i;
- uint32_t track;
-
- GameStartupFlag = true;
-80021b48: a2021d24 sb v0,7460(s0)
-static uint8_t firstActiveAircraft;
-//Index for last non-idle aircraft on list
-static uint8_t lastActiveAircraft;
-
-void Game(bool two_players)
-{
-80021b4c: afbe00d0 sw s8,208(sp)
-80021b50: afb700cc sw s7,204(sp)
-80021b54: afb600c8 sw s6,200(sp)
-80021b58: afb500c4 sw s5,196(sp)
-80021b5c: afb400c0 sw s4,192(sp)
-80021b60: afb300bc sw s3,188(sp)
- uint8_t i;
- uint32_t track;
-
- GameStartupFlag = true;
-
- LoadMenu( GameFileList,
-80021b64: 0c0093c1 jal 80024f04 <LoadMenu>
-80021b68: afb200b8 sw s2,184(sp)
- /* TODO - Very important */
- // Map contents (that means, without header) should be copied to GameLevelBuffer
- // Header treatment (magic number, map size, map title...) should be done
- // using System's file buffer.
-
- if(SystemLoadFile(GameLevelList[0]) == false)
-80021b6c: 3c048004 lui a0,0x8004
-80021b70: 0c00a022 jal 80028088 <SystemLoadFile>
-80021b74: 24840288 addiu a0,a0,648
-80021b78: 10400046 beqz v0,80021c94 <Game+0x184>
-80021b7c: afb00094 sw s0,148(sp)
- {
- return;
- }
-
- ptrBuffer = SystemGetBufferAddress();
-80021b80: 0c00a027 jal 8002809c <SystemGetBufferAddress>
-80021b84: 00000000 nop
-80021b88: 00408021 move s0,v0
-
- //SystemLoadFileToBuffer(GameLevelList[0],GameLevelBuffer,GAME_MAX_MAP_SIZE);
-
- memset(LevelHeader,0, LEVEL_MAGIC_NUMBER_SIZE + 1);
-80021b8c: 24060004 li a2,4
-80021b90: 00002821 move a1,zero
-80021b94: 0c00d7ab jal 80035eac <memset>
-80021b98: 27a40010 addiu a0,sp,16
-
- memcpy(LevelHeader,ptrBuffer,LEVEL_MAGIC_NUMBER_SIZE);
-80021b9c: 24060003 li a2,3
-80021ba0: 02002821 move a1,s0
-80021ba4: 0c00d75e jal 80035d78 <memcpy>
-80021ba8: 27a40010 addiu a0,sp,16
-
- LevelHeader[LEVEL_MAGIC_NUMBER_SIZE] = '\0';
-
- dprintf("Level header: %s\n",LevelHeader);
-80021bac: 3c048004 lui a0,0x8004
-80021bb0: 27a50010 addiu a1,sp,16
-80021bb4: 248402a8 addiu a0,a0,680
-80021bb8: 0c00ed8f jal 8003b63c <printf>
-80021bbc: a3a00013 sb zero,19(sp)
-
- if(strncmp(LevelHeader,LEVEL_MAGIC_NUMBER_STRING,LEVEL_MAGIC_NUMBER_SIZE) != 0)
-80021bc0: 3c058004 lui a1,0x8004
-80021bc4: 24060003 li a2,3
-80021bc8: 24a502bc addiu a1,a1,700
-80021bcc: 0c00d9dd jal 80036774 <strncmp>
-80021bd0: 27a40010 addiu a0,sp,16
-80021bd4: 10400004 beqz v0,80021be8 <Game+0xd8>
-80021bd8: 3c048004 lui a0,0x8004
- {
- dprintf("Invalid level header! Read \"%s\" instead of \"ATC\"\n",LevelHeader);
-80021bdc: 27a50010 addiu a1,sp,16
-80021be0: 1000000f b 80021c20 <Game+0x110>
-80021be4: 248402c0 addiu a0,a0,704
- return;
- }
-
- i += LEVEL_MAGIC_NUMBER_SIZE;
-
- GameLevelColumns = ptrBuffer[i++];
-80021be8: 92050003 lbu a1,3(s0)
-
- dprintf("Level size: %d\n",GameLevelColumns);
-80021bec: 3c048004 lui a0,0x8004
- return;
- }
-
- i += LEVEL_MAGIC_NUMBER_SIZE;
-
- GameLevelColumns = ptrBuffer[i++];
-80021bf0: 3c128007 lui s2,0x8007
-
- dprintf("Level size: %d\n",GameLevelColumns);
-80021bf4: 248402f4 addiu a0,a0,756
-80021bf8: 0c00ed8f jal 8003b63c <printf>
-80021bfc: a2451c12 sb a1,7186(s2)
-
- if( (GameLevelColumns < MIN_MAP_COLUMNS)
- ||
-80021c00: 92451c12 lbu a1,7186(s2)
-80021c04: 00000000 nop
-
- GameLevelColumns = ptrBuffer[i++];
-
- dprintf("Level size: %d\n",GameLevelColumns);
-
- if( (GameLevelColumns < MIN_MAP_COLUMNS)
-80021c08: 24a2fff8 addiu v0,a1,-8
-80021c0c: 2c420019 sltiu v0,v0,25
-80021c10: 14400007 bnez v0,80021c30 <Game+0x120>
-80021c14: 00a50018 mult a1,a1
- ||
- (GameLevelColumns > MAX_MAP_COLUMNS) )
- {
- dprintf("Invalid map size! Value: %d\n",GameLevelColumns);
-80021c18: 3c048004 lui a0,0x8004
-80021c1c: 24840304 addiu a0,a0,772
-80021c20: 0c00ed8f jal 8003b63c <printf>
-80021c24: 3c128004 lui s2,0x8004
-80021c28: 1000001b b 80021c98 <Game+0x188>
-80021c2c: 00000000 nop
- return;
- }
-
- GameLevelSize = GameLevelColumns * GameLevelColumns;
-
- memset(GameLevelTitle,0,LEVEL_TITLE_SIZE);
-80021c30: 3c128004 lui s2,0x8004
- {
- dprintf("Invalid map size! Value: %d\n",GameLevelColumns);
- return;
- }
-
- GameLevelSize = GameLevelColumns * GameLevelColumns;
-80021c34: 3c138007 lui s3,0x8007
-
- memset(GameLevelTitle,0,LEVEL_TITLE_SIZE);
-80021c38: 2644330c addiu a0,s2,13068
-80021c3c: 24060018 li a2,24
- {
- dprintf("Invalid map size! Value: %d\n",GameLevelColumns);
- return;
- }
-
- GameLevelSize = GameLevelColumns * GameLevelColumns;
-80021c40: 00002812 mflo a1
-80021c44: a2651c11 sb a1,7185(s3)
-
- memset(GameLevelTitle,0,LEVEL_TITLE_SIZE);
-80021c48: 0c00d7ab jal 80035eac <memset>
-80021c4c: 00002821 move a1,zero
-
- memcpy(GameLevelTitle,&ptrBuffer[i],LEVEL_TITLE_SIZE);
-80021c50: 24060018 li a2,24
-80021c54: 2644330c addiu a0,s2,13068
-80021c58: 0c00d75e jal 80035d78 <memcpy>
-80021c5c: 26050004 addiu a1,s0,4
-
- dprintf("Game level title: %s\n",GameLevelTitle);
-80021c60: 3c048004 lui a0,0x8004
-80021c64: 2645330c addiu a1,s2,13068
-80021c68: 24840324 addiu a0,a0,804
-80021c6c: 0c00ed8f jal 8003b63c <printf>
-80021c70: 3c128004 lui s2,0x8004
-
- i += LEVEL_TITLE_SIZE;
-
- memset(GameLevelBuffer,0,GAME_MAX_MAP_SIZE);
-80021c74: 24060400 li a2,1024
-80021c78: 00002821 move a1,zero
-80021c7c: 0c00d7ab jal 80035eac <memset>
-80021c80: 26443324 addiu a0,s2,13092
-
- i = LEVEL_HEADER_SIZE;
-
- memcpy(GameLevelBuffer,&ptrBuffer[i],GameLevelSize);
-80021c84: 92661c11 lbu a2,7185(s3)
-80021c88: 26050040 addiu a1,s0,64
-80021c8c: 0c00d75e jal 80035d78 <memcpy>
-80021c90: 26443324 addiu a0,s2,13092
-
- GameLoadLevel();
-
- GameGuiInit();
-
- memset(GameRwy,0,GAME_MAX_RUNWAYS * sizeof(uint16_t) );
-80021c94: 3c128004 lui s2,0x8004
- sizeof(GameFileList) / sizeof(char*),
- sizeof(GameFileDest) /sizeof(void*) );
-
- GameLoadLevel();
-
- GameGuiInit();
-80021c98: 0c008c9e jal 80023278 <GameGuiInit>
-80021c9c: 3c108007 lui s0,0x8007
-
- memset(GameRwy,0,GAME_MAX_RUNWAYS * sizeof(uint16_t) );
-80021ca0: 24060020 li a2,32
-80021ca4: 00002821 move a1,zero
-80021ca8: 0c00d7ab jal 80035eac <memset>
-80021cac: 26443a08 addiu a0,s2,14856
-
- memset(GameUsedRwy,0,GAME_MAX_RUNWAYS * sizeof(uint16_t) );
-80021cb0: 3c048004 lui a0,0x8004
-80021cb4: 24060020 li a2,32
-80021cb8: 00002821 move a1,zero
-80021cbc: 0c00d7ab jal 80035eac <memset>
-80021cc0: 24843724 addiu a0,a0,14116
-
- PlayerData[PLAYER_ONE].Active = true;
-80021cc4: 24020001 li v0,1
-80021cc8: a2028e80 sb v0,-29056(s0)
- PlayerData[PLAYER_ONE].PadKeyPressed_Callback = &PadOneKeyPressed;
-80021ccc: 3c028002 lui v0,0x8002
-80021cd0: 26108e80 addiu s0,s0,-29056
-80021cd4: 24426b60 addiu v0,v0,27488
-80021cd8: ae020078 sw v0,120(s0)
- PlayerData[PLAYER_ONE].PadKeyReleased_Callback = &PadOneKeyReleased;
-80021cdc: 3c028002 lui v0,0x8002
-80021ce0: 24426780 addiu v0,v0,26496
-80021ce4: ae02007c sw v0,124(s0)
- PlayerData[PLAYER_ONE].PadDirectionKeyPressed_Callback = &PadOneDirectionKeyPressed;
-80021ce8: 3c028002 lui v0,0x8002
-80021cec: 24426a78 addiu v0,v0,27256
-80021cf0: ae020080 sw v0,128(s0)
- PlayerData[PLAYER_ONE].FlightDataPage = 0;
-
- PlayerData[PLAYER_TWO].Active = TwoPlayersActive? true : false;
-80021cf4: 92221c0e lbu v0,7182(s1)
-
- PlayerData[PLAYER_ONE].Active = true;
- PlayerData[PLAYER_ONE].PadKeyPressed_Callback = &PadOneKeyPressed;
- PlayerData[PLAYER_ONE].PadKeyReleased_Callback = &PadOneKeyReleased;
- PlayerData[PLAYER_ONE].PadDirectionKeyPressed_Callback = &PadOneDirectionKeyPressed;
- PlayerData[PLAYER_ONE].FlightDataPage = 0;
-80021cf8: a200002d sb zero,45(s0)
-
- PlayerData[PLAYER_TWO].Active = TwoPlayersActive? true : false;
-
- if(PlayerData[PLAYER_TWO].Active == true)
-80021cfc: 10400015 beqz v0,80021d54 <Game+0x244>
-80021d00: a2020090 sb v0,144(s0)
- {
- PlayerData[PLAYER_TWO].PadKeyPressed_Callback = &PadTwoKeyPressed;
-80021d04: 3c028002 lui v0,0x8002
-80021d08: 24426b78 addiu v0,v0,27512
-80021d0c: ae020108 sw v0,264(s0)
- PlayerData[PLAYER_TWO].PadKeyReleased_Callback = &PadTwoKeyReleased;
-80021d10: 3c028002 lui v0,0x8002
-80021d14: 244267b4 addiu v0,v0,26548
-80021d18: ae02010c sw v0,268(s0)
- PlayerData[PLAYER_TWO].PadDirectionKeyPressed_Callback = &PadTwoDirectionKeyPressed;
-80021d1c: 3c028002 lui v0,0x8002
-80021d20: 24426b38 addiu v0,v0,27448
-80021d24: ae020110 sw v0,272(s0)
- PlayerData[PLAYER_TWO].FlightDataPage = 0;
-
- // On 2-player mode, one player controls departure flights and
- // other player controls arrival flights.
- PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE;
-80021d28: 24020001 li v0,1
-80021d2c: ae020028 sw v0,40(s0)
- PlayerData[PLAYER_TWO].FlightDirection = ARRIVAL;
-80021d30: 24020002 li v0,2
- if(PlayerData[PLAYER_TWO].Active == true)
- {
- PlayerData[PLAYER_TWO].PadKeyPressed_Callback = &PadTwoKeyPressed;
- PlayerData[PLAYER_TWO].PadKeyReleased_Callback = &PadTwoKeyReleased;
- PlayerData[PLAYER_TWO].PadDirectionKeyPressed_Callback = &PadTwoDirectionKeyPressed;
- PlayerData[PLAYER_TWO].FlightDataPage = 0;
-80021d34: a20000bd sb zero,189(s0)
-
- // On 2-player mode, one player controls departure flights and
- // other player controls arrival flights.
- PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE;
- PlayerData[PLAYER_TWO].FlightDirection = ARRIVAL;
-80021d38: ae0200b8 sw v0,184(s0)
-80021d3c: 3c028007 lui v0,0x8007
-80021d40: 24428fa0 addiu v0,v0,-28768
-80021d44: afb00074 sw s0,116(sp)
-80021d48: afa20078 sw v0,120(sp)
-static uint8_t firstActiveAircraft;
-//Index for last non-idle aircraft on list
-static uint8_t lastActiveAircraft;
-
-void Game(bool two_players)
-{
-80021d4c: 10000004 b 80021d60 <Game+0x250>
-80021d50: 02008821 move s1,s0
- PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE;
- PlayerData[PLAYER_TWO].FlightDirection = ARRIVAL;
- }
- else
- {
- PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE | ARRIVAL;
-80021d54: 24020003 li v0,3
-80021d58: 1000fff8 b 80021d3c <Game+0x22c>
-80021d5c: ae020028 sw v0,40(s0)
- }
-
- for(i = 0; i < MAX_PLAYERS ; i++)
- {
- CameraInit(&PlayerData[i]);
-80021d60: 0c008255 jal 80020954 <CameraInit>
-80021d64: 02202021 move a0,s1
- PlayerData[i].ShowAircraftData = false;
-80021d68: a2200001 sb zero,1(s1)
- PlayerData[i].SelectRunway = false;
-80021d6c: a2200002 sb zero,2(s1)
- PlayerData[i].SelectTaxiwayRunway = false;
-80021d70: a2200003 sb zero,3(s1)
- PlayerData[i].LockTarget = false;
-80021d74: a2200006 sb zero,6(s1)
- PlayerData[i].SelectedAircraft = 0;
-80021d78: a220002e sb zero,46(s1)
- PlayerData[i].FlightDataPage = 0;
-80021d7c: a220002d sb zero,45(s1)
- memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
-80021d80: 26240034 addiu a0,s1,52
-80021d84: 24060040 li a2,64
-80021d88: 0c00d7ab jal 80035eac <memset>
-80021d8c: 00002821 move a1,zero
- else
- {
- PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE | ARRIVAL;
- }
-
- for(i = 0; i < MAX_PLAYERS ; i++)
-80021d90: 8fa20078 lw v0,120(sp)
- PlayerData[i].SelectTaxiwayRunway = false;
- PlayerData[i].LockTarget = false;
- PlayerData[i].SelectedAircraft = 0;
- PlayerData[i].FlightDataPage = 0;
- memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
- PlayerData[i].WaypointIdx = 0;
-80021d94: a2200074 sb zero,116(s1)
- PlayerData[i].LastWaypointIdx = 0;
-80021d98: a2200075 sb zero,117(s1)
-80021d9c: 26310090 addiu s1,s1,144
- else
- {
- PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE | ARRIVAL;
- }
-
- for(i = 0; i < MAX_PLAYERS ; i++)
-80021da0: 1622ffef bne s1,v0,80021d60 <Game+0x250>
-80021da4: 3c028004 lui v0,0x8004
- }
-
- firstActiveAircraft = 0;
- lastActiveAircraft = 0;
-
- GameMouseSpr.x = MOUSE_X;
-80021da8: 240300c0 li v1,192
-80021dac: a4433a28 sh v1,14888(v0)
- GameMouseSpr.y = MOUSE_Y;
-80021db0: 24423a28 addiu v0,v0,14888
-80021db4: 24030078 li v1,120
-80021db8: a4430002 sh v1,2(v0)
- GameMouseSpr.w = MOUSE_W;
-80021dbc: 24030008 li v1,8
-80021dc0: a4430006 sh v1,6(v0)
- GameMouseSpr.h = MOUSE_H;
-80021dc4: a4430008 sh v1,8(v0)
- GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP);
-80021dc8: 24030002 li v1,2
- memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
- PlayerData[i].WaypointIdx = 0;
- PlayerData[i].LastWaypointIdx = 0;
- }
-
- firstActiveAircraft = 0;
-80021dcc: 3c058007 lui a1,0x8007
- lastActiveAircraft = 0;
-80021dd0: 3c048007 lui a0,0x8007
-
- GameMouseSpr.x = MOUSE_X;
- GameMouseSpr.y = MOUSE_Y;
- GameMouseSpr.w = MOUSE_W;
- GameMouseSpr.h = MOUSE_H;
- GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP);
-80021dd4: ac430014 sw v1,20(v0)
- uint8_t i;
- uint8_t j = 0;
-
- for(i = 0; i < GameLevelSize; i++)
- {
- if(GameLevelBuffer[i] == TILE_RWY_START_1)
-80021dd8: 3c148004 lui s4,0x8004
- GameMouseSpr.x = MOUSE_X;
- GameMouseSpr.y = MOUSE_Y;
- GameMouseSpr.w = MOUSE_W;
- GameMouseSpr.h = MOUSE_H;
- GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP);
- GameMouseSpr.r = NORMAL_LUMINANCE;
-80021ddc: 2403ff80 li v1,-128
- memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
- PlayerData[i].WaypointIdx = 0;
- PlayerData[i].LastWaypointIdx = 0;
- }
-
- firstActiveAircraft = 0;
-80021de0: a0a01c0d sb zero,7181(a1)
- lastActiveAircraft = 0;
-80021de4: a0801c0c sb zero,7180(a0)
- GameMouseSpr.x = MOUSE_X;
- GameMouseSpr.y = MOUSE_Y;
- GameMouseSpr.w = MOUSE_W;
- GameMouseSpr.h = MOUSE_H;
- GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP);
- GameMouseSpr.r = NORMAL_LUMINANCE;
-80021de8: a043000e sb v1,14(v0)
- GameMouseSpr.g = NORMAL_LUMINANCE;
-80021dec: a043000f sb v1,15(v0)
- GameMouseSpr.b = NORMAL_LUMINANCE;
-80021df0: a0430010 sb v1,16(v0)
-}
-
-void GameGetRunwayArray(void)
-{
- uint8_t i;
- uint8_t j = 0;
-80021df4: 00009821 move s3,zero
-
- for(i = 0; i < GameLevelSize; i++)
-80021df8: 00008821 move s1,zero
-80021dfc: afa50080 sw a1,128(sp)
-80021e00: afa40084 sw a0,132(sp)
-80021e04: 3c158007 lui s5,0x8007
- {
- if(GameLevelBuffer[i] == TILE_RWY_START_1)
-80021e08: 26943324 addiu s4,s4,13092
-80021e0c: 24160009 li s6,9
- {
- if(SystemContains_u8(i, GameLevelBuffer, GAME_MAX_RUNWAYS) == false)
- {
- GameRwy[j++] = i;
-80021e10: 26573a08 addiu s7,s2,14856
-void GameGetRunwayArray(void)
-{
- uint8_t i;
- uint8_t j = 0;
-
- for(i = 0; i < GameLevelSize; i++)
-80021e14: 92a21c11 lbu v0,7185(s5)
-80021e18: 00000000 nop
-80021e1c: 0222102b sltu v0,s1,v0
-80021e20: 10400011 beqz v0,80021e68 <Game+0x358>
-80021e24: 02341021 addu v0,s1,s4
- {
- if(GameLevelBuffer[i] == TILE_RWY_START_1)
-80021e28: 90420000 lbu v0,0(v0)
-80021e2c: 00000000 nop
-80021e30: 1456000a bne v0,s6,80021e5c <Game+0x34c>
-80021e34: 24060010 li a2,16
- {
- if(SystemContains_u8(i, GameLevelBuffer, GAME_MAX_RUNWAYS) == false)
-80021e38: 02802821 move a1,s4
-80021e3c: 0c00a05b jal 8002816c <SystemContains_u8>
-80021e40: 02202021 move a0,s1
-80021e44: 14400005 bnez v0,80021e5c <Game+0x34c>
-80021e48: 26620001 addiu v0,s3,1
- {
- GameRwy[j++] = i;
-80021e4c: 00139840 sll s3,s3,0x1
-80021e50: 02779821 addu s3,s3,s7
-80021e54: a6710000 sh s1,0(s3)
-80021e58: 305300ff andi s3,v0,0xff
-void GameGetRunwayArray(void)
-{
- uint8_t i;
- uint8_t j = 0;
-
- for(i = 0; i < GameLevelSize; i++)
-80021e5c: 26310001 addiu s1,s1,1
-80021e60: 1000ffec b 80021e14 <Game+0x304>
-80021e64: 323100ff andi s1,s1,0xff
- GameRwy[j++] = i;
- }
- }
- }
-
- dprintf("GameRwy = ");
-80021e68: 3c048004 lui a0,0x8004
-80021e6c: 2484033c addiu a0,a0,828
-80021e70: 0c00ed8f jal 8003b63c <printf>
-80021e74: 3c138004 lui s3,0x8004
-80021e78: 00008821 move s1,zero
-
- for(i = 0; i < GAME_MAX_RUNWAYS; i++)
- {
- if(GameRwy[i] == 0)
-80021e7c: 26523a08 addiu s2,s2,14856
- {
- break;
- }
-
- dprintf("%d ", GameRwy[i]);
-80021e80: 26730348 addiu s3,s3,840
- }
- }
-
- dprintf("GameRwy = ");
-
- for(i = 0; i < GAME_MAX_RUNWAYS; i++)
-80021e84: 24140020 li s4,32
- {
- if(GameRwy[i] == 0)
-80021e88: 02511021 addu v0,s2,s1
-80021e8c: 94450000 lhu a1,0(v0)
-80021e90: 00000000 nop
-80021e94: 14a00017 bnez a1,80021ef4 <Game+0x3e4>
-80021e98: afb20068 sw s2,104(sp)
- }
-
- dprintf("%d ", GameRwy[i]);
- }
-
- dprintf("\n");
-80021e9c: 3c118004 lui s1,0x8004
-80021ea0: 0c00ed8f jal 8003b63c <printf>
-80021ea4: 262408dc addiu a0,s1,2268
-
- GameGetRunwayArray();
-
- GameSelectedTile = 0;
-
- AircraftInit();
-80021ea8: 0c008078 jal 800201e0 <AircraftInit>
-80021eac: 00000000 nop
-
- LoadMenuEnd();
-80021eb0: 0c0093ab jal 80024eac <LoadMenuEnd>
-80021eb4: 00000000 nop
-
- GfxSetGlobalLuminance(0);
-80021eb8: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-80021ebc: 00002021 move a0,zero
-
- track = SystemRand(GAMEPLAY_FIRST_TRACK,GAMEPLAY_LAST_TRACK);
-80021ec0: 24050004 li a1,4
-80021ec4: 0c00a03d jal 800280f4 <SystemRand>
-80021ec8: 24040003 li a0,3
-
- SfxPlayTrack(track);
-80021ecc: 0c009f16 jal 80027c58 <SfxPlayTrack>
-80021ed0: 00402021 move a0,v0
-
-void GameClockFlights(void)
-{
- uint8_t i;
-
- for(i = 0; i < FlightData.nAircraft ; i++)
-80021ed4: 3c028004 lui v0,0x8004
-80021ed8: 24423764 addiu v0,v0,14180
-80021edc: afb10098 sw s1,152(sp)
-80021ee0: afa2006c sw v0,108(sp)
-80021ee4: afa20070 sw v0,112(sp)
-80021ee8: 00409021 move s2,v0
- }
- }
-
- if(PadOneKeyReleased(PAD_CIRCLE) == true)
- {
- for(i = 0; i < FlightData.nAircraft ; i++)
-80021eec: 100000a8 b 80022190 <Game+0x680>
-80021ef0: afa2008c sw v0,140(sp)
- if(GameRwy[i] == 0)
- {
- break;
- }
-
- dprintf("%d ", GameRwy[i]);
-80021ef4: 02602021 move a0,s3
-80021ef8: 0c00ed8f jal 8003b63c <printf>
-80021efc: 26310002 addiu s1,s1,2
- }
- }
-
- dprintf("GameRwy = ");
-
- for(i = 0; i < GAME_MAX_RUNWAYS; i++)
-80021f00: 1634ffe2 bne s1,s4,80021e8c <Game+0x37c>
-80021f04: 02511021 addu v0,s2,s1
- }
-
- dprintf("%d ", GameRwy[i]);
- }
-
- dprintf("\n");
-80021f08: 1000ffe5 b 80021ea0 <Game+0x390>
-80021f0c: 3c118004 lui s1,0x8004
- GameSelectAircraftFromList(ptrPlayer, ptrFlightData);
-}
-
-void GameClock(void)
-{
- if(System1SecondTick() == true)
-80021f10: 0c009fb6 jal 80027ed8 <System1SecondTick>
-80021f14: 00000000 nop
-80021f18: 144000f0 bnez v0,800222dc <Game+0x7cc>
-80021f1c: 3c048007 lui a0,0x8007
-{
- TYPE_PLAYER * ptrPlayer;
- uint8_t i;
- bool pause_flag = false;
-
- if(GameStartupFlag == true)
-80021f20: 00008821 move s1,zero
- {
- if( (FlightData.Minutes[i] == 0)
- &&
- (FlightData.Hours[i] > 0) )
- {
- FlightData.Minutes[i] = 60;
-80021f24: 2413003c li s3,60
-
-void GameClockFlights(void)
-{
- uint8_t i;
-
- for(i = 0; i < FlightData.nAircraft ; i++)
-80021f28: 8fa2006c lw v0,108(sp)
-80021f2c: 00000000 nop
-80021f30: 90460200 lbu a2,512(v0)
-80021f34: 00000000 nop
-80021f38: 0226102b sltu v0,s1,a2
-80021f3c: 144000fa bnez v0,80022328 <Game+0x818>
-80021f40: 3c148004 lui s4,0x8004
-80021f44: 8fa50070 lw a1,112(sp)
-80021f48: 00001821 move v1,zero
-80021f4c: 00a01021 move v0,a1
-80021f50: 00a02021 move a0,a1
- &&
- (FlightData.Minutes[i] == 0)
- &&
- (FlightData.State[i] == STATE_IDLE) )
- {
- if(FlightData.FlightDirection[i] == DEPARTURE)
-80021f54: 24070001 li a3,1
- {
- FlightData.State[i] = STATE_APPROACH;
- }
-
- // Create notification request for incoming aircraft
- FlightData.NotificationRequest[i] = true;
-80021f58: 24090001 li t1,1
- {
- if(FlightData.FlightDirection[i] == DEPARTURE)
- {
- FlightData.State[i] = STATE_PARKED;
- }
- else if(FlightData.FlightDirection[i] == ARRIVAL)
-80021f5c: 240a0002 li t2,2
- {
- FlightData.State[i] = STATE_APPROACH;
-80021f60: 240b0004 li t3,4
-
-void GameAircraftState(void)
-{
- uint8_t i;
-
- for(i = 0; i < FlightData.nAircraft ; i++)
-80021f64: 1466010c bne v1,a2,80022398 <Game+0x888>
-80021f68: 00000000 nop
-
-void GameActiveAircraft(void)
-{
- uint8_t i;
-
- FlightData.ActiveAircraft = 0;
-80021f6c: 8fa40070 lw a0,112(sp)
-80021f70: a2400201 sb zero,513(s2)
-80021f74: 00003821 move a3,zero
-80021f78: 00001021 move v0,zero
-
- for(i = 0 ; i < FlightData.nAircraft ; i++)
-80021f7c: 00001821 move v1,zero
-80021f80: 14660120 bne v1,a2,80022404 <Game+0x8f4>
-80021f84: 00000000 nop
-80021f88: 10e00002 beqz a3,80021f94 <Game+0x484>
-80021f8c: 00000000 nop
-80021f90: a2420201 sb v0,513(s2)
-80021f94: 8fa20080 lw v0,128(sp)
-80021f98: 00003021 move a2,zero
-80021f9c: 90431c0d lbu v1,7181(v0)
-80021fa0: 8fa20084 lw v0,132(sp)
-80021fa4: 00003821 move a3,zero
-80021fa8: 90441c0c lbu a0,7180(v0)
-void GameFirstLastAircraftIndex(void)
-{
- bool first_set = false;
- uint8_t i;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT ; i++)
-80021fac: 24080020 li t0,32
-{
- uint8_t i;
-
- FlightData.ActiveAircraft = 0;
-
- for(i = 0 ; i < FlightData.nAircraft ; i++)
-80021fb0: 00001021 move v0,zero
- bool first_set = false;
- uint8_t i;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT ; i++)
- {
- if(FlightData.State[i] != STATE_IDLE)
-80021fb4: 8ca90204 lw t1,516(a1)
-80021fb8: 00000000 nop
-80021fbc: 1520011c bnez t1,80022430 <Game+0x920>
-80021fc0: 00000000 nop
-void GameFirstLastAircraftIndex(void)
-{
- bool first_set = false;
- uint8_t i;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT ; i++)
-80021fc4: 24420001 addiu v0,v0,1
-80021fc8: 304200ff andi v0,v0,0xff
-80021fcc: 1448fff9 bne v0,t0,80021fb4 <Game+0x4a4>
-80021fd0: 24a50004 addiu a1,a1,4
-80021fd4: 10c00004 beqz a2,80021fe8 <Game+0x4d8>
-80021fd8: 00000000 nop
-80021fdc: 8fa20084 lw v0,132(sp)
-80021fe0: 00000000 nop
-80021fe4: a0441c0c sb a0,7180(v0)
-80021fe8: 12e00004 beqz s7,80021ffc <Game+0x4ec>
-80021fec: 00000000 nop
-80021ff0: 8fa20080 lw v0,128(sp)
-80021ff4: 00000000 nop
-80021ff8: a0431c0d sb v1,7181(v0)
-
- GameClock();
- GameAircraftState();
- GameActiveAircraft();
- GameFirstLastAircraftIndex();
- AircraftHandler();
-80021ffc: 0c00813e jal 800204f8 <AircraftHandler>
-80022000: 3c118007 lui s1,0x8007
- // Move camera to selected aircraft and add first waypoint.
- GameSelectAircraft(ptrPlayer);
- break;
-
- default:
- dprintf("Incompatible state %d!\n",aircraftState);
-80022004: 3c028004 lui v0,0x8004
-
- GameClock();
- GameAircraftState();
- GameActiveAircraft();
- GameFirstLastAircraftIndex();
- AircraftHandler();
-80022008: 8fbe0074 lw s8,116(sp)
- // Move camera to selected aircraft and add first waypoint.
- GameSelectAircraft(ptrPlayer);
- break;
-
- default:
- dprintf("Incompatible state %d!\n",aircraftState);
-8002200c: afa200a4 sw v0,164(sp)
- }
-
- ptrPlayer->LastWaypointIdx = i;
- }
-
- target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]];
-80022010: 3c028004 lui v0,0x8004
-80022014: 24423324 addiu v0,v0,13092
-80022018: 26318eb4 addiu s1,s1,-29004
-
- GameClock();
- GameAircraftState();
- GameActiveAircraft();
- GameFirstLastAircraftIndex();
- AircraftHandler();
-8002201c: 0000a821 move s5,zero
- }
-
- ptrPlayer->LastWaypointIdx = i;
- }
-
- target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]];
-80022020: afbe0088 sw s8,136(sp)
-80022024: afa2007c sw v0,124(sp)
- AircraftHandler();
-
- for(i = 0 ; i < MAX_PLAYERS ; i++)
- {
- // Run player-specific functions for each player
- if(PlayerData[i].Active == true)
-80022028: 93c20000 lbu v0,0(s8)
-8002202c: 00000000 nop
-80022030: 14400107 bnez v0,80022450 <Game+0x940>
-80022034: 00000000 nop
- GameAircraftState();
- GameActiveAircraft();
- GameFirstLastAircraftIndex();
- AircraftHandler();
-
- for(i = 0 ; i < MAX_PLAYERS ; i++)
-80022038: 8fa20078 lw v0,120(sp)
-8002203c: 27de0090 addiu s8,s8,144
-80022040: 26b50001 addiu s5,s5,1
-80022044: 17c2fff8 bne s8,v0,80022028 <Game+0x518>
-80022048: 26310090 addiu s1,s1,144
- {
- GamePlayerHandler(&PlayerData[i], &FlightData);
- }
- }
-
- if(PadOneKeyReleased(PAD_CIRCLE) == true)
-8002204c: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80022050: 24040020 li a0,32
-80022054: 10400011 beqz v0,8002209c <Game+0x58c>
-80022058: 00000000 nop
- uint8_t Hours[GAME_MAX_AIRCRAFT];
- uint8_t Minutes[GAME_MAX_AIRCRAFT];
- uint8_t Parking[GAME_MAX_AIRCRAFT];
- }TYPE_FLIGHT_DATA;*/
-
- dprintf("\n*****************\n");
-8002205c: 3c138004 lui s3,0x8004
-
- dprintf("Time: %d:%d\n",FlightData.Hours[i],FlightData.Minutes[i]);
-
- dprintf("State: ");
-
- switch(FlightData.State[i])
-80022060: 3c158004 lui s5,0x8004
- {
- GamePlayerHandler(&PlayerData[i], &FlightData);
- }
- }
-
- if(PadOneKeyReleased(PAD_CIRCLE) == true)
-80022064: 00008821 move s1,zero
- uint8_t Hours[GAME_MAX_AIRCRAFT];
- uint8_t Minutes[GAME_MAX_AIRCRAFT];
- uint8_t Parking[GAME_MAX_AIRCRAFT];
- }TYPE_FLIGHT_DATA;*/
-
- dprintf("\n*****************\n");
-80022068: 26730518 addiu s3,s3,1304
- dprintf("\tAIRCRAFT %d\n",i);
-8002206c: 3c168004 lui s6,0x8004
-
- dprintf("Time: %d:%d\n",FlightData.Hours[i],FlightData.Minutes[i]);
-
- dprintf("State: ");
-
- switch(FlightData.State[i])
-80022070: 26b5f790 addiu s5,s5,-2160
- }
- }
-
- if(PadOneKeyReleased(PAD_CIRCLE) == true)
- {
- for(i = 0; i < FlightData.nAircraft ; i++)
-80022074: 92420200 lbu v0,512(s2)
-80022078: 00000000 nop
-8002207c: 0222102b sltu v0,s1,v0
-80022080: 14400303 bnez v0,80022c90 <Game+0x1180>
-80022084: 00000000 nop
- break;
- }
- dprintf("\n");
- }
-
- dprintf("Active aircraft: %d\n",FlightData.ActiveAircraft);
-80022088: 8fa2008c lw v0,140(sp)
-8002208c: 3c048004 lui a0,0x8004
-80022090: 90450201 lbu a1,513(v0)
-80022094: 0c00ed8f jal 8003b63c <printf>
-80022098: 248405bc addiu a0,a0,1468
-
-void GameGraphics(void)
-{
- int i;
-
- while( (GfxIsGPUBusy() == true)
-8002209c: 0c00901d jal 80024074 <GfxIsGPUBusy>
-800220a0: 00000000 nop
-800220a4: 1440fffd bnez v0,8002209c <Game+0x58c>
-800220a8: 00000000 nop
- ||
- (SystemRefreshNeeded() == false) );
-800220ac: 0c009f9a jal 80027e68 <SystemRefreshNeeded>
-800220b0: 00000000 nop
-void GameGraphics(void)
-{
- int i;
-
- while( (GfxIsGPUBusy() == true)
- ||
-800220b4: 1040fff9 beqz v0,8002209c <Game+0x58c>
-800220b8: 24060040 li a2,64
- (SystemRefreshNeeded() == false) );
-
- GsSortCls(0,0,NORMAL_LUMINANCE >> 1);
-800220bc: 00002821 move a1,zero
-800220c0: 0c00c4e8 jal 800313a0 <GsSortCls>
-800220c4: 00002021 move a0,zero
-
- if(GfxGetGlobalLuminance() < NORMAL_LUMINANCE)
-800220c8: 0c009007 jal 8002401c <GfxGetGlobalLuminance>
-800220cc: 00000000 nop
-800220d0: 00021600 sll v0,v0,0x18
-800220d4: 00021603 sra v0,v0,0x18
-800220d8: 04400004 bltz v0,800220ec <Game+0x5dc>
-800220dc: 3c178004 lui s7,0x8004
- {
- GfxIncreaseGlobalLuminance(1);
-800220e0: 0c00900e jal 80024038 <GfxIncreaseGlobalLuminance>
-800220e4: 24040001 li a0,1
- }
-
- for(i = 0 ; i < GameLevelSize; i++)
- {
- // Flipped tiles have bit 7 enabled
- if(GameLevelBuffer[i] & TILE_MIRROR_FLAG)
-800220e8: 3c178004 lui s7,0x8004
-800220ec: 26e23324 addiu v0,s7,13092
-800220f0: afa2007c sw v0,124(sp)
-800220f4: afa20088 sw v0,136(sp)
- &&
- (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) )
- {
- for(j = 0; j < GAME_MAX_RUNWAYS; j++)
- {
- if(GameUsedRwy[j] != 0)
-800220f8: 3c028004 lui v0,0x8004
-800220fc: 24423724 addiu v0,v0,14116
- {
- GamePlayerHandler(&PlayerData[i], &FlightData);
- }
- }
-
- if(PadOneKeyReleased(PAD_CIRCLE) == true)
-80022100: 8fb10074 lw s1,116(sp)
- &&
- (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) )
- {
- for(j = 0; j < GAME_MAX_RUNWAYS; j++)
- {
- if(GameUsedRwy[j] != 0)
-80022104: afa2009c sw v0,156(sp)
- GfxIncreaseGlobalLuminance(1);
- }
-
- for(i = 0; i < MAX_PLAYERS ; i++)
- {
- if(PlayerData[i].Active == true)
-80022108: 92220000 lbu v0,0(s1)
-8002210c: 00000000 nop
-80022110: 14400327 bnez v0,80022db0 <Game+0x12a0>
-80022114: 00000000 nop
- if(GfxGetGlobalLuminance() < NORMAL_LUMINANCE)
- {
- GfxIncreaseGlobalLuminance(1);
- }
-
- for(i = 0; i < MAX_PLAYERS ; i++)
-80022118: 8fa20078 lw v0,120(sp)
-8002211c: 26310090 addiu s1,s1,144
-80022120: 1622fff9 bne s1,v0,80022108 <Game+0x5f8>
-80022124: 00000000 nop
- GameRenderLevel(&PlayerData[i]);
- AircraftRender(&PlayerData[i]);
- }
- }
-
- GameGuiAircraftNotificationRequest(&FlightData);
-80022128: 0c008cc9 jal 80023324 <GameGuiAircraftNotificationRequest>
-8002212c: 26843764 addiu a0,s4,14180
-
- GameGuiBubble(&FlightData);
-80022130: 0c008f21 jal 80023c84 <GameGuiBubble>
-80022134: 26843764 addiu a0,s4,14180
-
- GameGuiClock(GameHour,GameMinutes);
-80022138: 3c028007 lui v0,0x8007
-8002213c: 90451c0f lbu a1,7183(v0)
-80022140: 3c028007 lui v0,0x8007
-80022144: 90441c10 lbu a0,7184(v0)
-80022148: 0c008f86 jal 80023e18 <GameGuiClock>
-8002214c: 00000000 nop
-
- for(i = 0; i < MAX_PLAYERS ; i++)
- {
- GameGuiAircraftList(&PlayerData[i], &FlightData);
-80022150: 3c048007 lui a0,0x8007
-80022154: 26853764 addiu a1,s4,14180
-80022158: 0c008e2b jal 800238ac <GameGuiAircraftList>
-8002215c: 24848e80 addiu a0,a0,-29056
-80022160: 3c048007 lui a0,0x8007
-80022164: 26853764 addiu a1,s4,14180
-80022168: 0c008e2b jal 800238ac <GameGuiAircraftList>
-8002216c: 24848f10 addiu a0,a0,-28912
- }
-
- GfxDrawScene();
-80022170: 0c008fe2 jal 80023f88 <GfxDrawScene>
-80022174: 00000000 nop
-
- GameCalculations();
-
- GameGraphics();
-
- if(GameStartupFlag == true)
-80022178: 3c028007 lui v0,0x8007
-8002217c: 90431d24 lbu v1,7460(v0)
-80022180: 00000000 nop
-80022184: 10600002 beqz v1,80022190 <Game+0x680>
-80022188: 00000000 nop
- {
- GameStartupFlag = false;
-8002218c: a0401d24 sb zero,7460(v0)
-{
- TYPE_PLAYER * ptrPlayer;
- uint8_t i;
- bool pause_flag = false;
-
- if(GameStartupFlag == true)
-80022190: 8fa20094 lw v0,148(sp)
-80022194: 00000000 nop
-80022198: 90421d24 lbu v0,7460(v0)
-8002219c: 00000000 nop
-800221a0: 1040000b beqz v0,800221d0 <Game+0x6c0>
-800221a4: 00000000 nop
- ERROR_RECT_B = NORMAL_LUMINANCE
- };
-
- GsRectangle errorRct;
-
- bzero((GsRectangle*)&errorRct, sizeof(GsRectangle));
-800221a8: 24060010 li a2,16
-800221ac: 00002821 move a1,zero
-800221b0: 0c00d7ab jal 80035eac <memset>
-800221b4: 27a40010 addiu a0,sp,16
- // Pad one has been disconnected during gameplay
- // Show an error screen until it is disconnected again.
-
- GsSortCls(0,0,0);
-
- errorRct.x = ERROR_RECT_X;
-800221b8: 24110020 li s1,32
- errorRct.w = ERROR_RECT_W;
-800221bc: 24130140 li s3,320
- errorRct.y = ERROR_RECT_Y;
-800221c0: 24140010 li s4,16
- errorRct.h = ERROR_RECT_H;
-800221c4: 241500d0 li s5,208
-
- errorRct.r = ERROR_RECT_R;
- errorRct.g = ERROR_RECT_G;
- errorRct.b = ERROR_RECT_B;
-800221c8: 1000002f b 80022288 <Game+0x778>
-800221cc: 2416ff80 li s6,-128
-{
- TYPE_PLAYER * ptrPlayer;
- uint8_t i;
- bool pause_flag = false;
-
- if(GameStartupFlag == true)
-800221d0: 8fb30074 lw s3,116(sp)
-800221d4: 00008821 move s1,zero
- {
- return false;
- }
-
- for(i = 0 ; i < MAX_PLAYERS ; i++)
-800221d8: 24140002 li s4,2
- {
- ptrPlayer = &PlayerData[i];
- // Run player-specific functions for each player
- if(ptrPlayer->Active == true)
-800221dc: 92620000 lbu v0,0(s3)
-800221e0: 00000000 nop
-800221e4: 10400023 beqz v0,80022274 <Game+0x764>
-800221e8: 00000000 nop
- {
- //dprintf("Released callback = 0x%08X\n", ptrPlayer->PadKeyReleased_Callback);
- if(ptrPlayer->PadKeyReleased_Callback(PAD_START) == true)
-800221ec: 8e62007c lw v0,124(s3)
-800221f0: 00000000 nop
-800221f4: 0040f809 jalr v0
-800221f8: 24040800 li a0,2048
-800221fc: 1040001e beqz v0,80022278 <Game+0x768>
-80022200: 26310001 addiu s1,s1,1
-80022204: 2631ffff addiu s1,s1,-1
- {
- dprintf("Player %d set pause_flag to true!\n",i);
-80022208: 3c048004 lui a0,0x8004
-8002220c: 02202821 move a1,s1
-80022210: 0c00ed8f jal 8003b63c <printf>
-80022214: 2484034c addiu a0,a0,844
- return false;
- }
-
- for(i = 0 ; i < MAX_PLAYERS ; i++)
- {
- ptrPlayer = &PlayerData[i];
-80022218: 00112100 sll a0,s1,0x4
-8002221c: 001189c0 sll s1,s1,0x7
-80022220: 00912021 addu a0,a0,s1
- if(pause_flag == true)
- {
- // Blocking function:
- // * Returns true if player pointed to by ptrPlayer wants to exit game
- // * Returns false if player pointed to by ptrPlayer wants to resume game
- return GameGuiPauseDialog(ptrPlayer);
-80022224: 0c008d62 jal 80023588 <GameGuiPauseDialog>
-80022228: 02042021 addu a0,s0,a0
- TwoPlayersActive = two_players;
- GameInit();
-
- while(1)
- {
- if(GamePause() == true)
-8002222c: 1040ffdf beqz v0,800221ac <Game+0x69c>
-80022230: 24060010 li a2,16
- {
- GameStartupFlag = false;
- }
- }
-
- EndAnimation();
-80022234: 0c00835d jal 80020d74 <EndAnimation>
-80022238: 00000000 nop
-
- SfxPlayTrack(INTRO_TRACK);
-8002223c: 0c009f16 jal 80027c58 <SfxPlayTrack>
-80022240: 24040002 li a0,2
-}
-80022244: 8fbf00d4 lw ra,212(sp)
-80022248: 8fbe00d0 lw s8,208(sp)
-8002224c: 8fb700cc lw s7,204(sp)
-80022250: 8fb600c8 lw s6,200(sp)
-80022254: 8fb500c4 lw s5,196(sp)
-80022258: 8fb400c0 lw s4,192(sp)
-8002225c: 8fb300bc lw s3,188(sp)
-80022260: 8fb200b8 lw s2,184(sp)
-80022264: 8fb100b4 lw s1,180(sp)
-80022268: 8fb000b0 lw s0,176(sp)
-8002226c: 03e00008 jr ra
-80022270: 27bd00d8 addiu sp,sp,216
-80022274: 26310001 addiu s1,s1,1
- if(GameStartupFlag == true)
- {
- return false;
- }
-
- for(i = 0 ; i < MAX_PLAYERS ; i++)
-80022278: 1234ffcb beq s1,s4,800221a8 <Game+0x698>
-8002227c: 26730090 addiu s3,s3,144
-80022280: 1000ffd6 b 800221dc <Game+0x6cc>
-80022284: 00000000 nop
-
- GsRectangle errorRct;
-
- bzero((GsRectangle*)&errorRct, sizeof(GsRectangle));
-
- while(SystemGetEmergencyMode() == true)
-80022288: 0c00a053 jal 8002814c <SystemGetEmergencyMode>
-8002228c: 00000000 nop
-80022290: 1040ff1f beqz v0,80021f10 <Game+0x400>
-80022294: 0040b821 move s7,v0
- {
- // Pad one has been disconnected during gameplay
- // Show an error screen until it is disconnected again.
-
- GsSortCls(0,0,0);
-80022298: 00003021 move a2,zero
-8002229c: 00002821 move a1,zero
-800222a0: 0c00c4e8 jal 800313a0 <GsSortCls>
-800222a4: 00002021 move a0,zero
-
- errorRct.r = ERROR_RECT_R;
- errorRct.g = ERROR_RECT_G;
- errorRct.b = ERROR_RECT_B;
-
- GsSortRectangle(&errorRct);
-800222a8: 27a40010 addiu a0,sp,16
- // Pad one has been disconnected during gameplay
- // Show an error screen until it is disconnected again.
-
- GsSortCls(0,0,0);
-
- errorRct.x = ERROR_RECT_X;
-800222ac: a7b10010 sh s1,16(sp)
- errorRct.w = ERROR_RECT_W;
-800222b0: a7b30014 sh s3,20(sp)
- errorRct.y = ERROR_RECT_Y;
-800222b4: a7b40012 sh s4,18(sp)
- errorRct.h = ERROR_RECT_H;
-800222b8: a7b50016 sh s5,22(sp)
-
- errorRct.r = ERROR_RECT_R;
-800222bc: a3a00018 sb zero,24(sp)
- errorRct.g = ERROR_RECT_G;
-800222c0: a3b10019 sb s1,25(sp)
- errorRct.b = ERROR_RECT_B;
-
- GsSortRectangle(&errorRct);
-800222c4: 0c00b762 jal 8002dd88 <GsSortRectangle>
-800222c8: a3b6001a sb s6,26(sp)
- GfxDrawScene();
-800222cc: 0c008fe2 jal 80023f88 <GfxDrawScene>
-800222d0: 00000000 nop
-800222d4: 1000ffec b 80022288 <Game+0x778>
-800222d8: 00000000 nop
-
-void GameClock(void)
-{
- if(System1SecondTick() == true)
- {
- GameMinutes++;
-800222dc: 90821c0f lbu v0,7183(a0)
-800222e0: 00000000 nop
-800222e4: 24420001 addiu v0,v0,1
-800222e8: 304200ff andi v0,v0,0xff
-800222ec: a0821c0f sb v0,7183(a0)
-
- if(GameMinutes >= 60)
-800222f0: 2c42003c sltiu v0,v0,60
-800222f4: 14400005 bnez v0,8002230c <Game+0x7fc>
-800222f8: 3c038007 lui v1,0x8007
- {
- GameHour++;
-800222fc: 90621c10 lbu v0,7184(v1)
- GameMinutes = 0;
-80022300: a0801c0f sb zero,7183(a0)
- {
- GameMinutes++;
-
- if(GameMinutes >= 60)
- {
- GameHour++;
-80022304: 24420001 addiu v0,v0,1
-80022308: a0621c10 sb v0,7184(v1)
- GameMinutes = 0;
- }
-
- if(GameHour >= 24)
-8002230c: 90621c10 lbu v0,7184(v1)
-80022310: 00000000 nop
-80022314: 2c420018 sltiu v0,v0,24
-80022318: 1440ff01 bnez v0,80021f20 <Game+0x410>
-8002231c: 3c028007 lui v0,0x8007
- {
- GameHour = 0;
-80022320: 1000feff b 80021f20 <Game+0x410>
-80022324: a0401c10 sb zero,7184(v0)
-{
- uint8_t i;
-
- for(i = 0; i < FlightData.nAircraft ; i++)
- {
- if(System1SecondTick() == true)
-80022328: 0c009fb6 jal 80027ed8 <System1SecondTick>
-8002232c: 00000000 nop
-80022330: 10400016 beqz v0,8002238c <Game+0x87c>
-80022334: 00000000 nop
- {
- if( (FlightData.Minutes[i] == 0)
-80022338: 8fa2006c lw v0,108(sp)
-8002233c: 00000000 nop
-80022340: 02221021 addu v0,s1,v0
-80022344: 904301c0 lbu v1,448(v0)
-80022348: 00000000 nop
-8002234c: 14600007 bnez v1,8002236c <Game+0x85c>
-80022350: 00000000 nop
- &&
- (FlightData.Hours[i] > 0) )
-80022354: 904301a0 lbu v1,416(v0)
-80022358: 00000000 nop
- for(i = 0; i < FlightData.nAircraft ; i++)
- {
- if(System1SecondTick() == true)
- {
- if( (FlightData.Minutes[i] == 0)
- &&
-8002235c: 10600003 beqz v1,8002236c <Game+0x85c>
-80022360: 2463ffff addiu v1,v1,-1
- (FlightData.Hours[i] > 0) )
- {
- FlightData.Minutes[i] = 60;
-80022364: a05301c0 sb s3,448(v0)
- FlightData.Hours[i]--;
-80022368: a04301a0 sb v1,416(v0)
- }
-
- if(FlightData.Minutes[i] > 0)
-8002236c: 8fa20070 lw v0,112(sp)
-80022370: 00000000 nop
-80022374: 00511821 addu v1,v0,s1
-80022378: 906201c0 lbu v0,448(v1)
-8002237c: 00000000 nop
-80022380: 10400002 beqz v0,8002238c <Game+0x87c>
-80022384: 2442ffff addiu v0,v0,-1
- {
- FlightData.Minutes[i]--;
-80022388: a06201c0 sb v0,448(v1)
-
-void GameClockFlights(void)
-{
- uint8_t i;
-
- for(i = 0; i < FlightData.nAircraft ; i++)
-8002238c: 26310001 addiu s1,s1,1
-80022390: 1000fee5 b 80021f28 <Game+0x418>
-80022394: 323100ff andi s1,s1,0xff
-{
- uint8_t i;
-
- for(i = 0; i < FlightData.nAircraft ; i++)
- {
- if( (FlightData.Hours[i] == 0)
-80022398: 908801a0 lbu t0,416(a0)
-8002239c: 00000000 nop
-800223a0: 15000013 bnez t0,800223f0 <Game+0x8e0>
-800223a4: 00000000 nop
- &&
-800223a8: 908801c0 lbu t0,448(a0)
-800223ac: 00000000 nop
-800223b0: 1500000f bnez t0,800223f0 <Game+0x8e0>
-800223b4: 00000000 nop
- (FlightData.Minutes[i] == 0)
- &&
-800223b8: 8c480204 lw t0,516(v0)
-800223bc: 00000000 nop
-800223c0: 1500000b bnez t0,800223f0 <Game+0x8e0>
-800223c4: 00000000 nop
- (FlightData.State[i] == STATE_IDLE) )
- {
- if(FlightData.FlightDirection[i] == DEPARTURE)
-800223c8: 8c480000 lw t0,0(v0)
-800223cc: 00000000 nop
-800223d0: 15070003 bne t0,a3,800223e0 <Game+0x8d0>
-800223d4: 00000000 nop
- {
- FlightData.State[i] = STATE_PARKED;
-800223d8: 10000004 b 800223ec <Game+0x8dc>
-800223dc: ac470204 sw a3,516(v0)
- }
- else if(FlightData.FlightDirection[i] == ARRIVAL)
-800223e0: 150a0002 bne t0,t2,800223ec <Game+0x8dc>
-800223e4: 00000000 nop
- {
- FlightData.State[i] = STATE_APPROACH;
-800223e8: ac4b0204 sw t3,516(v0)
- }
-
- // Create notification request for incoming aircraft
- FlightData.NotificationRequest[i] = true;
-800223ec: a0890284 sb t1,644(a0)
-
-void GameAircraftState(void)
-{
- uint8_t i;
-
- for(i = 0; i < FlightData.nAircraft ; i++)
-800223f0: 24630001 addiu v1,v1,1
-800223f4: 306300ff andi v1,v1,0xff
-800223f8: 24840001 addiu a0,a0,1
-800223fc: 1000fed9 b 80021f64 <Game+0x454>
-80022400: 24420004 addiu v0,v0,4
-
- FlightData.ActiveAircraft = 0;
-
- for(i = 0 ; i < FlightData.nAircraft ; i++)
- {
- if(FlightData.State[i] != STATE_IDLE)
-80022404: 8c880204 lw t0,516(a0)
-80022408: 00000000 nop
-8002240c: 11000004 beqz t0,80022420 <Game+0x910>
-80022410: 00000000 nop
- {
- FlightData.ActiveAircraft++;
-80022414: 24420001 addiu v0,v0,1
-80022418: 304200ff andi v0,v0,0xff
-8002241c: 24070001 li a3,1
-{
- uint8_t i;
-
- FlightData.ActiveAircraft = 0;
-
- for(i = 0 ; i < FlightData.nAircraft ; i++)
-80022420: 24630001 addiu v1,v1,1
-80022424: 306300ff andi v1,v1,0xff
-80022428: 1000fed5 b 80021f80 <Game+0x470>
-8002242c: 24840004 addiu a0,a0,4
-
- for(i = 0; i < GAME_MAX_AIRCRAFT ; i++)
- {
- if(FlightData.State[i] != STATE_IDLE)
- {
- if(first_set == false)
-80022430: 14e00003 bnez a3,80022440 <Game+0x930>
-80022434: 00000000 nop
- {
- firstActiveAircraft = i;
-80022438: 00401821 move v1,v0
-
- for(i = 0; i < GAME_MAX_AIRCRAFT ; i++)
- {
- if(FlightData.State[i] != STATE_IDLE)
- {
- if(first_set == false)
-8002243c: 24170001 li s7,1
- {
- firstActiveAircraft = i;
- first_set = true;
- }
- lastActiveAircraft = i;
-80022440: 00402021 move a0,v0
-80022444: 24060001 li a2,1
-80022448: 1000fede b 80021fc4 <Game+0x4b4>
-8002244c: 24070001 li a3,1
- }
-}
-
-void GameStateLockTarget(TYPE_PLAYER * ptrPlayer)
-{
- if(ptrPlayer->LockTarget == true)
-80022450: 93c20006 lbu v0,6(s8)
- return lastActiveAircraft;
-}
-
-void GamePlayerHandler(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- ptrPlayer->SelectedTile = 0; // Reset selected tile if no states
-80022454: a7c00032 sh zero,50(s8)
- }
-}
-
-void GameStateLockTarget(TYPE_PLAYER * ptrPlayer)
-{
- if(ptrPlayer->LockTarget == true)
-80022458: 10400010 beqz v0,8002249c <Game+0x98c>
-8002245c: a3c00005 sb zero,5(s8)
- {
- CameraMoveToIsoPos(ptrPlayer, AircraftGetIsoPos(ptrPlayer->LockedAircraft) );
-80022460: 93c5002f lbu a1,47(s8)
-80022464: 0c008227 jal 8002089c <AircraftGetIsoPos>
-80022468: 27a40060 addiu a0,sp,96
-8002246c: 8fa50060 lw a1,96(sp)
-80022470: 8fa60064 lw a2,100(sp)
-80022474: 0c00832b jal 80020cac <CameraMoveToIsoPos>
-80022478: 03c02021 move a0,s8
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_SQUARE) == true)
-8002247c: 8fc2007c lw v0,124(s8)
-80022480: 00000000 nop
-80022484: 0040f809 jalr v0
-80022488: 24040080 li a0,128
-8002248c: 10400003 beqz v0,8002249c <Game+0x98c>
-80022490: 00000000 nop
- {
- ptrPlayer->LockTarget = false;
-80022494: a3c00006 sb zero,6(s8)
- ptrPlayer->LockedAircraft = 0;
-80022498: a3c0002f sb zero,47(s8)
-void GameStateSelectRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint8_t i;
- bool success;
-
- if(ptrPlayer->SelectRunway == true)
-8002249c: 93c20002 lbu v0,2(s8)
-800224a0: 00000000 nop
-800224a4: 104000b6 beqz v0,80022780 <Game+0xc70>
-800224a8: 03c02821 move a1,s8
- {
- // Under this mode, always reset locking target.
- ptrPlayer->LockTarget = false;
- ptrPlayer->LockedAircraft = 0;
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true)
-800224ac: 8fc2007c lw v0,124(s8)
- bool success;
-
- if(ptrPlayer->SelectRunway == true)
- {
- // Under this mode, always reset locking target.
- ptrPlayer->LockTarget = false;
-800224b0: a3c00006 sb zero,6(s8)
- ptrPlayer->LockedAircraft = 0;
-800224b4: a3c0002f sb zero,47(s8)
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true)
-800224b8: 0040f809 jalr v0
-800224bc: 24040010 li a0,16
-800224c0: 10400003 beqz v0,800224d0 <Game+0x9c0>
-800224c4: 00000000 nop
- {
- ptrPlayer->SelectRunway = false;
-800224c8: 100000ac b 8002277c <Game+0xc6c>
-800224cc: a3c00002 sb zero,2(s8)
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
-800224d0: 8fc2007c lw v0,124(s8)
-800224d4: 00000000 nop
-800224d8: 0040f809 jalr v0
-800224dc: 24040040 li a0,64
-800224e0: 10400087 beqz v0,80022700 <Game+0xbf0>
-800224e4: 3c048004 lui a0,0x8004
- {
- ptrPlayer->SelectRunway = false;
-
- dprintf("ptrPlayer->SelectedRunway = %d\n", GameRwy[ptrPlayer->SelectedRunway]);
-800224e8: 97c20030 lhu v0,48(s8)
-800224ec: 8fa30068 lw v1,104(sp)
-800224f0: 00021040 sll v0,v0,0x1
-800224f4: 00621021 addu v0,v1,v0
-800224f8: 94450000 lhu a1,0(v0)
-800224fc: 24840370 addiu a0,a0,880
-80022500: 0c00ed8f jal 8003b63c <printf>
-80022504: a3c00002 sb zero,2(s8)
- if(SystemContains_u16(GameRwy[ptrPlayer->SelectedRunway], GameUsedRwy, GAME_MAX_RUNWAYS) == false)
-80022508: 97c20030 lhu v0,48(s8)
-8002250c: 8fa30068 lw v1,104(sp)
-80022510: 00021040 sll v0,v0,0x1
-80022514: 00621021 addu v0,v1,v0
-80022518: 3c138004 lui s3,0x8004
-8002251c: 94440000 lhu a0,0(v0)
-80022520: 24060010 li a2,16
-80022524: 0c00a067 jal 8002819c <SystemContains_u16>
-80022528: 26653724 addiu a1,s3,14116
-8002252c: 14400094 bnez v0,80022780 <Game+0xc70>
-80022530: 03c02821 move a1,s8
- {
- ptrPlayer->SelectRunway = false;
- dprintf("Player selected runway %d!\n",GameRwy[ptrPlayer->SelectedRunway]);
-80022534: 97c20030 lhu v0,48(s8)
-80022538: 8fa30068 lw v1,104(sp)
-8002253c: 00021040 sll v0,v0,0x1
-80022540: 00431021 addu v0,v0,v1
-80022544: 94450000 lhu a1,0(v0)
-80022548: 3c048004 lui a0,0x8004
-8002254c: 24840390 addiu a0,a0,912
-80022550: 0c00ed8f jal 8003b63c <printf>
-80022554: a3c00002 sb zero,2(s8)
-80022558: 26623724 addiu v0,s3,14116
-8002255c: afa2009c sw v0,156(sp)
-80022560: 00009821 move s3,zero
-
- success = false;
-
- for(i = 0; i < GAME_MAX_RUNWAYS; i++)
-80022564: 24040010 li a0,16
- {
- if(GameUsedRwy[i] == 0)
-80022568: 94450000 lhu a1,0(v0)
-8002256c: 00000000 nop
-80022570: 14a0005c bnez a1,800226e4 <Game+0xbd4>
-80022574: 26730001 addiu s3,s3,1
-80022578: 2673ffff addiu s3,s3,-1
- GameGetSelectedRunwayArray(0);
-}
-
-void GameAssignRunwaytoAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint16_t assignedRwy = GameRwy[ptrPlayer->SelectedRunway];
-8002257c: 97c20030 lhu v0,48(s8)
-80022580: 8fa30068 lw v1,104(sp)
-80022584: 00021040 sll v0,v0,0x1
-80022588: 93d7002e lbu s7,46(s8)
-8002258c: 00621021 addu v0,v1,v0
- uint16_t rwyExit;
- uint32_t i;
- uint16_t targets[AIRCRAFT_MAX_TARGETS];
- uint8_t rwyTiles[GAME_MAX_RWY_LENGTH];
-
- memset(targets, 0, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-80022590: 24060040 li a2,64
- GameGetSelectedRunwayArray(0);
-}
-
-void GameAssignRunwaytoAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint16_t assignedRwy = GameRwy[ptrPlayer->SelectedRunway];
-80022594: 94560000 lhu s6,0(v0)
- uint16_t rwyExit;
- uint32_t i;
- uint16_t targets[AIRCRAFT_MAX_TARGETS];
- uint8_t rwyTiles[GAME_MAX_RWY_LENGTH];
-
- memset(targets, 0, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS);
-80022598: 0c00d7ab jal 80035eac <memset>
-8002259c: 27a40010 addiu a0,sp,16
- STATE_TAXIING,
- STATE_APPROACH,
- STATE_FINAL
- }FL_STATE;*/
-
- dprintf("aircraftIndex = %d\n",aircraftIndex);
-800225a0: 3c048004 lui a0,0x8004
-800225a4: 02e02821 move a1,s7
-800225a8: 0c00ed8f jal 8003b63c <printf>
-800225ac: 248403ac addiu a0,a0,940
-
- if(ptrFlightData->State[aircraftIndex] == STATE_APPROACH)
-800225b0: 26e20080 addiu v0,s7,128
-800225b4: 00021080 sll v0,v0,0x2
-800225b8: 02421021 addu v0,s2,v0
-800225bc: 8c450004 lw a1,4(v0)
-800225c0: 24040004 li a0,4
-800225c4: 14a4003d bne a1,a0,800226bc <Game+0xbac>
-800225c8: 24040005 li a0,5
- {
- ptrFlightData->State[aircraftIndex] = STATE_FINAL;
-800225cc: ac440004 sw a0,4(v0)
-
- GameGetSelectedRunwayArray(assignedRwy);
-800225d0: 0c008502 jal 80021408 <GameGetSelectedRunwayArray>
-800225d4: 02c02021 move a0,s6
-800225d8: 3c028004 lui v0,0x8004
-800225dc: 24423744 addiu v0,v0,14148
-
- for(i = 0; i < GAME_MAX_RWY_LENGTH; i++)
-800225e0: 00002021 move a0,zero
-800225e4: afa200a0 sw v0,160(sp)
-800225e8: 24060010 li a2,16
- {
- rwyTiles[i] = GameLevelBuffer[GameRwyArray[i]];
-800225ec: 27a30050 addiu v1,sp,80
-800225f0: 00643821 addu a3,v1,a0
-800225f4: 94450000 lhu a1,0(v0)
-800225f8: 8fa3007c lw v1,124(sp)
- {
- ptrFlightData->State[aircraftIndex] = STATE_FINAL;
-
- GameGetSelectedRunwayArray(assignedRwy);
-
- for(i = 0; i < GAME_MAX_RWY_LENGTH; i++)
-800225fc: 24840001 addiu a0,a0,1
- {
- rwyTiles[i] = GameLevelBuffer[GameRwyArray[i]];
-80022600: 00a32821 addu a1,a1,v1
-80022604: 90a50000 lbu a1,0(a1)
-80022608: 24420002 addiu v0,v0,2
- {
- ptrFlightData->State[aircraftIndex] = STATE_FINAL;
-
- GameGetSelectedRunwayArray(assignedRwy);
-
- for(i = 0; i < GAME_MAX_RWY_LENGTH; i++)
-8002260c: 1486fff7 bne a0,a2,800225ec <Game+0xadc>
-80022610: a0e50000 sb a1,0(a3)
- {
- rwyTiles[i] = GameLevelBuffer[GameRwyArray[i]];
- }
-
- i = SystemIndexOf_U8((uint8_t)TILE_RWY_EXIT, rwyTiles, 0, GAME_MAX_RWY_LENGTH);
-80022614: 24070010 li a3,16
-80022618: 00003021 move a2,zero
-8002261c: 27a50050 addiu a1,sp,80
-80022620: 0c00a19a jal 80028668 <SystemIndexOf_U8>
-80022624: 24040018 li a0,24
-
- if(i == -1)
-80022628: 2408ffff li t0,-1
-8002262c: 14480005 bne v0,t0,80022644 <Game+0xb34>
-80022630: 24070010 li a3,16
- {
- dprintf("ERROR: Could not find TILE_RWY_EXIT for runway header %d.\n", assignedRwy);
-80022634: 3c048004 lui a0,0x8004
-80022638: 02c02821 move a1,s6
-8002263c: 1000000d b 80022674 <Game+0xb64>
-80022640: 248403c0 addiu a0,a0,960
- return;
- }
-
- i = SystemIndexOf_U8((uint8_t)TILE_RWY_EXIT, rwyTiles, i + 1, GAME_MAX_RWY_LENGTH);
-80022644: 24460001 addiu a2,v0,1
-80022648: 27a50050 addiu a1,sp,80
-8002264c: 24040018 li a0,24
-80022650: 0c00a19a jal 80028668 <SystemIndexOf_U8>
-80022654: afa800a8 sw t0,168(sp)
-
- if(i == -1)
-80022658: 8fa800a8 lw t0,168(sp)
-8002265c: 00000000 nop
-80022660: 14480008 bne v0,t0,80022684 <Game+0xb74>
-80022664: 00021040 sll v0,v0,0x1
- {
- dprintf("ERROR: Could not find second TILE_RWY_EXIT for runway header %d.\n", assignedRwy);
-80022668: 3c048004 lui a0,0x8004
-8002266c: 02c02821 move a1,s6
-80022670: 248403fc addiu a0,a0,1020
-80022674: 0c00ed8f jal 8003b63c <printf>
-80022678: 00000000 nop
-8002267c: 1000000f b 800226bc <Game+0xbac>
-80022680: 00000000 nop
- return;
- }
-
- rwyExit = GameRwyArray[i];
-80022684: 8fa300a0 lw v1,160(sp)
-80022688: 00000000 nop
-8002268c: 00621021 addu v0,v1,v0
-80022690: 94420000 lhu v0,0(v0)
-
- targets[0] = assignedRwy;
- targets[1] = rwyExit;
-
- if( AircraftAddNew(ptrFlightData,
-80022694: 27a60010 addiu a2,sp,16
-80022698: 02e02821 move a1,s7
-8002269c: 26843764 addiu a0,s4,14180
- return;
- }
-
- rwyExit = GameRwyArray[i];
-
- targets[0] = assignedRwy;
-800226a0: a7b60010 sh s6,16(sp)
- targets[1] = rwyExit;
-
- if( AircraftAddNew(ptrFlightData,
-800226a4: 0c00809d jal 80020274 <AircraftAddNew>
-800226a8: a7a20012 sh v0,18(sp)
-800226ac: 14400003 bnez v0,800226bc <Game+0xbac>
-800226b0: 3c048004 lui a0,0x8004
- aircraftIndex,
- targets ) == false)
- {
- dprintf("Exceeded maximum aircraft number!\n");
-800226b4: 0c00ed8f jal 8003b63c <printf>
-800226b8: 24840440 addiu a0,a0,1088
- {
- if(GameUsedRwy[i] == 0)
- {
- GameAssignRunwaytoAircraft(ptrPlayer, ptrFlightData);
- success = true;
- GameUsedRwy[i] = GameRwy[ptrPlayer->SelectedRunway];
-800226bc: 8fa2009c lw v0,156(sp)
-800226c0: 00139840 sll s3,s3,0x1
-800226c4: 00539821 addu s3,v0,s3
-800226c8: 97c20030 lhu v0,48(s8)
-800226cc: 8fa30068 lw v1,104(sp)
-800226d0: 00021040 sll v0,v0,0x1
-800226d4: 00621021 addu v0,v1,v0
-800226d8: 94420000 lhu v0,0(v0)
-800226dc: 10000027 b 8002277c <Game+0xc6c>
-800226e0: a6620000 sh v0,0(s3)
- ptrPlayer->SelectRunway = false;
- dprintf("Player selected runway %d!\n",GameRwy[ptrPlayer->SelectedRunway]);
-
- success = false;
-
- for(i = 0; i < GAME_MAX_RUNWAYS; i++)
-800226e4: 1664ffa0 bne s3,a0,80022568 <Game+0xa58>
-800226e8: 24420002 addiu v0,v0,2
- }
- }
-
- if(success == false)
- {
- dprintf("No available runways!\n");
-800226ec: 3c048004 lui a0,0x8004
-800226f0: 0c00ed8f jal 8003b63c <printf>
-800226f4: 248405d4 addiu a0,a0,1492
- }
-}
-
-void GameStateSelectTaxiwayRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer);
-800226f8: 10000021 b 80022780 <Game+0xc70>
-800226fc: 03c02821 move a1,s8
- {
- dprintf("No available runways!\n");
- }
- }
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_LEFT) == true)
-80022700: 8fc2007c lw v0,124(s8)
-80022704: 00000000 nop
-80022708: 0040f809 jalr v0
-8002270c: 34048000 li a0,0x8000
-80022710: 10400007 beqz v0,80022730 <Game+0xc20>
-80022714: 00000000 nop
- {
- if(ptrPlayer->SelectedRunway != 0)
-80022718: 97c20030 lhu v0,48(s8)
-8002271c: 00000000 nop
-80022720: 10400017 beqz v0,80022780 <Game+0xc70>
-80022724: 03c02821 move a1,s8
- {
- ptrPlayer->SelectedRunway--;
-80022728: 10000013 b 80022778 <Game+0xc68>
-8002272c: 2442ffff addiu v0,v0,-1
- }
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_RIGHT) == true)
-80022730: 8fc2007c lw v0,124(s8)
-80022734: 00000000 nop
-80022738: 0040f809 jalr v0
-8002273c: 24042000 li a0,8192
-80022740: 1040000f beqz v0,80022780 <Game+0xc70>
-80022744: 03c02821 move a1,s8
- {
- if(ptrPlayer->SelectedRunway < GAME_MAX_RUNWAYS)
-80022748: 97c20030 lhu v0,48(s8)
-8002274c: 00000000 nop
-80022750: 2c440010 sltiu a0,v0,16
-80022754: 1080000a beqz a0,80022780 <Game+0xc70>
-80022758: 24420001 addiu v0,v0,1
- {
- if(GameRwy[ptrPlayer->SelectedRunway + 1] != 0)
-8002275c: 8fa30068 lw v1,104(sp)
-80022760: 00022040 sll a0,v0,0x1
-80022764: 00642021 addu a0,v1,a0
-80022768: 94840000 lhu a0,0(a0)
-8002276c: 00000000 nop
-80022770: 10800003 beqz a0,80022780 <Game+0xc70>
-80022774: 00000000 nop
- {
- ptrPlayer->SelectedRunway++;
-80022778: a7c20030 sh v0,48(s8)
- }
-}
-
-void GameStateSelectTaxiwayRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer);
-8002277c: 03c02821 move a1,s8
-80022780: 0c00830f jal 80020c3c <CameraGetIsoPos>
-80022784: 27a40010 addiu a0,sp,16
- uint8_t i;
- uint16_t target_tile;
-
- /*dprintf("Camera is pointing to {%d,%d}\n",IsoPos.x, IsoPos.y);*/
-
- if(ptrPlayer->SelectTaxiwayRunway == true)
-80022788: 93c20003 lbu v0,3(s8)
-8002278c: 00000000 nop
-80022790: 10400065 beqz v0,80022928 <Game+0xe18>
-80022794: 03c02821 move a1,s8
- {
- // Under this mode, always reset locking target.
- ptrPlayer->LockTarget = false;
- ptrPlayer->LockedAircraft = 0;
-
- ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos);
-80022798: 27a40010 addiu a0,sp,16
- /*dprintf("Camera is pointing to {%d,%d}\n",IsoPos.x, IsoPos.y);*/
-
- if(ptrPlayer->SelectTaxiwayRunway == true)
- {
- // Under this mode, always reset locking target.
- ptrPlayer->LockTarget = false;
-8002279c: a3c00006 sb zero,6(s8)
- ptrPlayer->LockedAircraft = 0;
-
- ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos);
-800227a0: 0c0084f0 jal 800213c0 <GameGetTileFromIsoPosition>
-800227a4: a3c0002f sb zero,47(s8)
-800227a8: a7c20032 sh v0,50(s8)
-
- if(GamePathToTile(ptrPlayer) == false)
-800227ac: 0c0085a3 jal 8002168c <GamePathToTile>
-800227b0: 03c02021 move a0,s8
-800227b4: 14400002 bnez v0,800227c0 <Game+0xcb0>
-800227b8: 24020001 li v0,1
- {
- ptrPlayer->InvalidPath = true;
-800227bc: a3c20005 sb v0,5(s8)
- }
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true)
-800227c0: 8fc2007c lw v0,124(s8)
-800227c4: 00000000 nop
-800227c8: 0040f809 jalr v0
-800227cc: 24040010 li a0,16
-800227d0: 10400008 beqz v0,800227f4 <Game+0xce4>
-800227d4: 24060040 li a2,64
- {
- // State exit.
- ptrPlayer->SelectTaxiwayRunway = false;
-800227d8: a3c00003 sb zero,3(s8)
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
-800227dc: 00002821 move a1,zero
-800227e0: 0c00d7ab jal 80035eac <memset>
-800227e4: 02202021 move a0,s1
- ptrPlayer->WaypointIdx = 0;
-800227e8: a3c00074 sb zero,116(s8)
- ptrPlayer->LastWaypointIdx = 0;
-800227ec: 1000004d b 80022924 <Game+0xe14>
-800227f0: a3c00075 sb zero,117(s8)
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
-800227f4: 8fc2007c lw v0,124(s8)
-800227f8: 00000000 nop
-800227fc: 0040f809 jalr v0
-80022800: 24040040 li a0,64
-80022804: 10400048 beqz v0,80022928 <Game+0xe18>
-80022808: 03c02821 move a1,s8
- {
- if(ptrPlayer->InvalidPath == false)
-8002280c: 93c20005 lbu v0,5(s8)
-80022810: 00000000 nop
-80022814: 14400043 bnez v0,80022924 <Game+0xe14>
-80022818: 24050020 li a1,32
- {
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
- {
- if(ptrPlayer->Waypoints[i] == 0)
-8002281c: 00022040 sll a0,v0,0x1
-80022820: 03c42021 addu a0,s8,a0
-80022824: 94840034 lhu a0,52(a0)
-80022828: 00000000 nop
-8002282c: 14800021 bnez a0,800228b4 <Game+0xda4>
-80022830: 304600ff andi a2,v0,0xff
- }
-
- ptrPlayer->LastWaypointIdx = i;
- }
-
- target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]];
-80022834: 93c50075 lbu a1,117(s8)
-80022838: 001510c0 sll v0,s5,0x3
-8002283c: 00153180 sll a2,s5,0x6
-80022840: 00461021 addu v0,v0,a2
-80022844: 00451021 addu v0,v0,a1
-80022848: 8fa30088 lw v1,136(sp)
-8002284c: 24420018 addiu v0,v0,24
-80022850: 00021040 sll v0,v0,0x1
-80022854: 00621021 addu v0,v1,v0
-80022858: 94420004 lhu v0,4(v0)
-8002285c: 8fa3007c lw v1,124(sp)
-80022860: 00000000 nop
-80022864: 00431021 addu v0,v0,v1
-
- if( (target_tile == TILE_RWY_START_1)
-80022868: 90420000 lbu v0,0(v0)
-8002286c: 00000000 nop
-80022870: 3042007f andi v0,v0,0x7f
-80022874: 2442fff7 addiu v0,v0,-9
-80022878: 2c420002 sltiu v0,v0,2
-8002287c: 1040002a beqz v0,80022928 <Game+0xe18>
-80022880: 03c02821 move a1,s8
- (target_tile == TILE_RWY_START_2)
- ||
- (target_tile == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) )
- {
- // TODO: Assign path to aircraft
- AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints);
-80022884: 93c4002f lbu a0,47(s8)
-80022888: 0c00824d jal 80020934 <AircraftFromFlightDataIndexAddTargets>
-8002288c: 02202821 move a1,s1
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-80022890: 93c5002f lbu a1,47(s8)
-80022894: 3c048004 lui a0,0x8004
-80022898: 24840464 addiu a0,a0,1124
-8002289c: 0c00ed8f jal 8003b63c <printf>
-800228a0: 3c168004 lui s6,0x8004
-800228a4: 00009821 move s3,zero
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
- {
- dprintf("%d ",ptrPlayer->Waypoints[i]);
-800228a8: 26d60348 addiu s6,s6,840
- {
- // TODO: Assign path to aircraft
- AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints);
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
-800228ac: 10000006 b 800228c8 <Game+0xdb8>
-800228b0: 24170040 li s7,64
-800228b4: 24420001 addiu v0,v0,1
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
- {
- if(ptrPlayer->InvalidPath == false)
- {
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
-800228b8: 1445ffd8 bne v0,a1,8002281c <Game+0xd0c>
-800228bc: a3c60075 sb a2,117(s8)
-800228c0: 1000ffdc b 80022834 <Game+0xd24>
-800228c4: 00000000 nop
- AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints);
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
- {
- dprintf("%d ",ptrPlayer->Waypoints[i]);
-800228c8: 03d31021 addu v0,s8,s3
-800228cc: 94450034 lhu a1,52(v0)
-800228d0: 02c02021 move a0,s6
-800228d4: 0c00ed8f jal 8003b63c <printf>
-800228d8: 26730002 addiu s3,s3,2
- {
- // TODO: Assign path to aircraft
- AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints);
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
-800228dc: 1677fffb bne s3,s7,800228cc <Game+0xdbc>
-800228e0: 03d31021 addu v0,s8,s3
- {
- dprintf("%d ",ptrPlayer->Waypoints[i]);
- }
-
- dprintf("\n");
-800228e4: 3c048004 lui a0,0x8004
-800228e8: 0c00ed8f jal 8003b63c <printf>
-800228ec: 248408dc addiu a0,a0,2268
-
- ptrPlayer->SelectTaxiwayParking = false;
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
-800228f0: 02202021 move a0,s1
- dprintf("%d ",ptrPlayer->Waypoints[i]);
- }
-
- dprintf("\n");
-
- ptrPlayer->SelectTaxiwayParking = false;
-800228f4: a3c00004 sb zero,4(s8)
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
-800228f8: 24060040 li a2,64
-800228fc: 0c00d7ab jal 80035eac <memset>
-80022900: 00002821 move a1,zero
- ptrPlayer->WaypointIdx = 0;
- ptrPlayer->LastWaypointIdx = 0;
-
- ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING;
-80022904: 93c2002f lbu v0,47(s8)
-80022908: 24040002 li a0,2
-8002290c: 24420080 addiu v0,v0,128
-80022910: 00021080 sll v0,v0,0x2
-80022914: 02421021 addu v0,s2,v0
- dprintf("\n");
-
- ptrPlayer->SelectTaxiwayParking = false;
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
- ptrPlayer->WaypointIdx = 0;
-80022918: a3c00074 sb zero,116(s8)
- ptrPlayer->LastWaypointIdx = 0;
-8002291c: a3c00075 sb zero,117(s8)
-
- ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING;
-80022920: ac440004 sw a0,4(v0)
- }
-}
-
-void GameStateSelectTaxiwayParking(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer);
-80022924: 03c02821 move a1,s8
-80022928: 0c00830f jal 80020c3c <CameraGetIsoPos>
-8002292c: 27a40010 addiu a0,sp,16
- uint8_t i;
- uint16_t target_tile;
-
- if(ptrPlayer->SelectTaxiwayParking == true)
-80022930: 93c20004 lbu v0,4(s8)
-80022934: 00000000 nop
-80022938: 10400068 beqz v0,80022adc <Game+0xfcc>
-8002293c: 27a40010 addiu a0,sp,16
- {
- // Under this mode, always reset locking target.
- ptrPlayer->LockTarget = false;
-80022940: a3c00006 sb zero,6(s8)
- ptrPlayer->LockedAircraft = 0;
-
- ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos);
-80022944: 0c0084f0 jal 800213c0 <GameGetTileFromIsoPosition>
-80022948: a3c0002f sb zero,47(s8)
-8002294c: a7c20032 sh v0,50(s8)
-
- if(GamePathToTile(ptrPlayer) == false)
-80022950: 0c0085a3 jal 8002168c <GamePathToTile>
-80022954: 03c02021 move a0,s8
-80022958: 14400002 bnez v0,80022964 <Game+0xe54>
-8002295c: 24020001 li v0,1
- {
- ptrPlayer->InvalidPath = true;
-80022960: a3c20005 sb v0,5(s8)
- }
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true)
-80022964: 8fc2007c lw v0,124(s8)
-80022968: 00000000 nop
-8002296c: 0040f809 jalr v0
-80022970: 24040010 li a0,16
-80022974: 10400008 beqz v0,80022998 <Game+0xe88>
-80022978: 24060040 li a2,64
- {
- // State exit.
- ptrPlayer->SelectTaxiwayParking = false;
-8002297c: a3c00004 sb zero,4(s8)
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
-80022980: 00002821 move a1,zero
-80022984: 0c00d7ab jal 80035eac <memset>
-80022988: 02202021 move a0,s1
- ptrPlayer->WaypointIdx = 0;
-8002298c: a3c00074 sb zero,116(s8)
- ptrPlayer->LastWaypointIdx = 0;
-80022990: 10000052 b 80022adc <Game+0xfcc>
-80022994: a3c00075 sb zero,117(s8)
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
-80022998: 8fc2007c lw v0,124(s8)
-8002299c: 00000000 nop
-800229a0: 0040f809 jalr v0
-800229a4: 24040040 li a0,64
-800229a8: 1040004c beqz v0,80022adc <Game+0xfcc>
-800229ac: 00000000 nop
- {
- if(ptrPlayer->InvalidPath == false)
-800229b0: 93c20005 lbu v0,5(s8)
-800229b4: 00000000 nop
-800229b8: 14400048 bnez v0,80022adc <Game+0xfcc>
-800229bc: 24050020 li a1,32
- {
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
- {
- if(ptrPlayer->Waypoints[i] == 0)
-800229c0: 00022040 sll a0,v0,0x1
-800229c4: 03c42021 addu a0,s8,a0
-800229c8: 94840034 lhu a0,52(a0)
-800229cc: 00000000 nop
-800229d0: 14800026 bnez a0,80022a6c <Game+0xf5c>
-800229d4: 304600ff andi a2,v0,0xff
- }
-
- ptrPlayer->LastWaypointIdx = i;
- }
-
- target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]];
-800229d8: 93c50075 lbu a1,117(s8)
-800229dc: 00152180 sll a0,s5,0x6
-800229e0: 001510c0 sll v0,s5,0x3
-800229e4: 00441021 addu v0,v0,a0
-800229e8: 00451021 addu v0,v0,a1
-800229ec: 8fa30088 lw v1,136(sp)
-800229f0: 24420018 addiu v0,v0,24
-800229f4: 00021040 sll v0,v0,0x1
-800229f8: 00621021 addu v0,v1,v0
-800229fc: 94420004 lhu v0,4(v0)
-80022a00: 8fa3007c lw v1,124(sp)
-
- dprintf("ptrPlayer->LastWaypointIdx = %d\n",
-80022a04: 3c048004 lui a0,0x8004
- }
-
- ptrPlayer->LastWaypointIdx = i;
- }
-
- target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]];
-80022a08: 00431021 addu v0,v0,v1
-80022a0c: 90530000 lbu s3,0(v0)
-
- dprintf("ptrPlayer->LastWaypointIdx = %d\n",
-80022a10: 0c00ed8f jal 8003b63c <printf>
-80022a14: 2484048c addiu a0,a0,1164
- ptrPlayer->LastWaypointIdx);
-
- dprintf("target_tile = %d, TILE_PARKING = %d\n",
-80022a18: 3c048004 lui a0,0x8004
-80022a1c: 02602821 move a1,s3
-80022a20: 2406000b li a2,11
-80022a24: 0c00ed8f jal 8003b63c <printf>
-80022a28: 248404b0 addiu a0,a0,1200
- target_tile,
- TILE_PARKING);
-
- if( (target_tile == TILE_PARKING)
-80022a2c: 3273007f andi s3,s3,0x7f
-80022a30: 2402000b li v0,11
-80022a34: 16620029 bne s3,v0,80022adc <Game+0xfcc>
-80022a38: 00000000 nop
- ||
- (target_tile == (TILE_PARKING | TILE_MIRROR_FLAG) ) )
- {
- // TODO: Assign path to aircraft
- AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints);
-80022a3c: 93c4002f lbu a0,47(s8)
-80022a40: 0c00824d jal 80020934 <AircraftFromFlightDataIndexAddTargets>
-80022a44: 02202821 move a1,s1
-
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-80022a48: 93c5002f lbu a1,47(s8)
-80022a4c: 3c048004 lui a0,0x8004
-80022a50: 24840464 addiu a0,a0,1124
-80022a54: 0c00ed8f jal 8003b63c <printf>
-80022a58: 3c168004 lui s6,0x8004
-80022a5c: 00009821 move s3,zero
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
- {
- dprintf("%d ",ptrPlayer->Waypoints[i]);
-80022a60: 26d60348 addiu s6,s6,840
- // TODO: Assign path to aircraft
- AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints);
-
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
-80022a64: 10000006 b 80022a80 <Game+0xf70>
-80022a68: 24170040 li s7,64
-80022a6c: 24420001 addiu v0,v0,1
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
- {
- if(ptrPlayer->InvalidPath == false)
- {
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
-80022a70: 1445ffd3 bne v0,a1,800229c0 <Game+0xeb0>
-80022a74: a3c60075 sb a2,117(s8)
-80022a78: 1000ffd7 b 800229d8 <Game+0xec8>
-80022a7c: 00000000 nop
-
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
- {
- dprintf("%d ",ptrPlayer->Waypoints[i]);
-80022a80: 03d31021 addu v0,s8,s3
-80022a84: 94450034 lhu a1,52(v0)
-80022a88: 02c02021 move a0,s6
-80022a8c: 0c00ed8f jal 8003b63c <printf>
-80022a90: 26730002 addiu s3,s3,2
- // TODO: Assign path to aircraft
- AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints);
-
- dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft);
-
- for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++)
-80022a94: 1677fffb bne s3,s7,80022a84 <Game+0xf74>
-80022a98: 03d31021 addu v0,s8,s3
- {
- dprintf("%d ",ptrPlayer->Waypoints[i]);
- }
-
- dprintf("\n");
-80022a9c: 3c048004 lui a0,0x8004
-80022aa0: 0c00ed8f jal 8003b63c <printf>
-80022aa4: 248408dc addiu a0,a0,2268
-
- ptrPlayer->SelectTaxiwayParking = false;
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
-80022aa8: 02202021 move a0,s1
- dprintf("%d ",ptrPlayer->Waypoints[i]);
- }
-
- dprintf("\n");
-
- ptrPlayer->SelectTaxiwayParking = false;
-80022aac: a3c00004 sb zero,4(s8)
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
-80022ab0: 24060040 li a2,64
-80022ab4: 0c00d7ab jal 80035eac <memset>
-80022ab8: 00002821 move a1,zero
- ptrPlayer->WaypointIdx = 0;
- ptrPlayer->LastWaypointIdx = 0;
-
- ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING;
-80022abc: 93c2002f lbu v0,47(s8)
-80022ac0: 24040002 li a0,2
-80022ac4: 24420080 addiu v0,v0,128
-80022ac8: 00021080 sll v0,v0,0x2
-80022acc: 02421021 addu v0,s2,v0
- dprintf("\n");
-
- ptrPlayer->SelectTaxiwayParking = false;
- // Clear waypoints array.
- memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS);
- ptrPlayer->WaypointIdx = 0;
-80022ad0: a3c00074 sb zero,116(s8)
- ptrPlayer->LastWaypointIdx = 0;
-80022ad4: a3c00075 sb zero,117(s8)
-
- ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING;
-80022ad8: ac440004 sw a0,4(v0)
- }
-}
-
-void GameStateShowAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- if(ptrPlayer->ShowAircraftData == true)
-80022adc: 93c20001 lbu v0,1(s8)
-80022ae0: 00000000 nop
-80022ae4: 10400023 beqz v0,80022b74 <Game+0x1064>
-80022ae8: 00000000 nop
- {
- if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true)
-80022aec: 8fc2007c lw v0,124(s8)
-80022af0: 00000000 nop
-80022af4: 0040f809 jalr v0
-80022af8: 24040010 li a0,16
-80022afc: 10400003 beqz v0,80022b0c <Game+0xffc>
-80022b00: 00000000 nop
- {
- ptrPlayer->ShowAircraftData = false;
-80022b04: 1000001b b 80022b74 <Game+0x1064>
-80022b08: a3c00001 sb zero,1(s8)
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_SQUARE) == true)
-80022b0c: 8fc2007c lw v0,124(s8)
-80022b10: 00000000 nop
-80022b14: 0040f809 jalr v0
-80022b18: 24040080 li a0,128
-80022b1c: 10400015 beqz v0,80022b74 <Game+0x1064>
-80022b20: 3c048004 lui a0,0x8004
- {
- dprintf("Aircraft state = %d. STATE_IDLE = %d\n",
- ptrFlightData->State[ptrPlayer->SelectedAircraft],
-80022b24: 93c2002e lbu v0,46(s8)
-80022b28: 00000000 nop
-80022b2c: 24420080 addiu v0,v0,128
-80022b30: 00021080 sll v0,v0,0x2
-80022b34: 02421021 addu v0,s2,v0
- {
- ptrPlayer->ShowAircraftData = false;
- }
- else if(ptrPlayer->PadKeyReleased_Callback(PAD_SQUARE) == true)
- {
- dprintf("Aircraft state = %d. STATE_IDLE = %d\n",
-80022b38: 8c450004 lw a1,4(v0)
-80022b3c: 248404d8 addiu a0,a0,1240
-80022b40: 0c00ed8f jal 8003b63c <printf>
-80022b44: 00003021 move a2,zero
- ptrFlightData->State[ptrPlayer->SelectedAircraft],
- STATE_IDLE);
-
- if(ptrFlightData->State[ptrPlayer->SelectedAircraft] != STATE_IDLE)
-80022b48: 93c4002e lbu a0,46(s8)
-80022b4c: 00000000 nop
-80022b50: 24820080 addiu v0,a0,128
-80022b54: 00021080 sll v0,v0,0x2
-80022b58: 02421021 addu v0,s2,v0
-80022b5c: 8c420004 lw v0,4(v0)
-80022b60: 00000000 nop
-80022b64: 10400003 beqz v0,80022b74 <Game+0x1064>
-80022b68: 24020001 li v0,1
- {
- ptrPlayer->LockTarget = true;
-80022b6c: a3c20006 sb v0,6(s8)
- ptrPlayer->LockedAircraft = ptrPlayer->SelectedAircraft;
-80022b70: a3c4002f sb a0,47(s8)
- }
- }
- }
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_CIRCLE) == true)
-80022b74: 8fc2007c lw v0,124(s8)
-80022b78: 00000000 nop
-80022b7c: 0040f809 jalr v0
-80022b80: 24040020 li a0,32
-80022b84: 1040000d beqz v0,80022bbc <Game+0x10ac>
-80022b88: 00000000 nop
-
-bool GameGuiShowAircraftDataSpecialConditions(TYPE_PLAYER * ptrPlayer)
-{
- // Aircraft list data cannot be shown under these conditions.
-
- if( (ptrPlayer->SelectRunway == true)
-80022b8c: 93c20002 lbu v0,2(s8)
-80022b90: 00000000 nop
-80022b94: 14400009 bnez v0,80022bbc <Game+0x10ac>
-80022b98: 00000000 nop
- ||
-80022b9c: 93c20004 lbu v0,4(s8)
-80022ba0: 00000000 nop
-80022ba4: 14400005 bnez v0,80022bbc <Game+0x10ac>
-80022ba8: 00000000 nop
- (ptrPlayer->SelectTaxiwayParking == true)
- ||
-80022bac: 93c20003 lbu v0,3(s8)
-80022bb0: 00000000 nop
-80022bb4: 10400166 beqz v0,80023150 <Game+0x1640>
-80022bb8: 00000000 nop
- GameStateLockTarget(ptrPlayer);
- GameStateSelectRunway(ptrPlayer, ptrFlightData);
- GameStateSelectTaxiwayRunway(ptrPlayer, ptrFlightData);
- GameStateSelectTaxiwayParking(ptrPlayer, ptrFlightData);
- GameStateShowAircraft(ptrPlayer, ptrFlightData);
- CameraHandler(ptrPlayer);
-80022bbc: 0c008280 jal 80020a00 <CameraHandler>
-80022bc0: 03c02021 move a0,s8
- GameGuiActiveAircraftList(ptrPlayer, ptrFlightData);
-80022bc4: 26853764 addiu a1,s4,14180
-80022bc8: 0c008d95 jal 80023654 <GameGuiActiveAircraftList>
-80022bcc: 03c02021 move a0,s8
- GameGuiActiveAircraftPage(ptrPlayer, ptrFlightData);
-80022bd0: 26853764 addiu a1,s4,14180
-80022bd4: 0c008dbe jal 800236f8 <GameGuiActiveAircraftPage>
-80022bd8: 03c02021 move a0,s8
-
-void GameSelectAircraftFromList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- FL_STATE aircraftState = ptrFlightData->State[ptrPlayer->SelectedAircraft];
-
- if(ptrPlayer->ShowAircraftData == true)
-80022bdc: 93c20001 lbu v0,1(s8)
-80022be0: 00000000 nop
-80022be4: 1040fd14 beqz v0,80022038 <Game+0x528>
-80022be8: 00000000 nop
- dprintf("\n");
-}
-
-void GameSelectAircraftFromList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- FL_STATE aircraftState = ptrFlightData->State[ptrPlayer->SelectedAircraft];
-80022bec: 93c2002e lbu v0,46(s8)
-80022bf0: 00000000 nop
-80022bf4: 24420080 addiu v0,v0,128
-80022bf8: 00021080 sll v0,v0,0x2
-80022bfc: 02421021 addu v0,s2,v0
-80022c00: 8c530004 lw s3,4(v0)
-
- if(ptrPlayer->ShowAircraftData == true)
- {
- if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
-80022c04: 8fc2007c lw v0,124(s8)
-80022c08: 00000000 nop
-80022c0c: 0040f809 jalr v0
-80022c10: 24040040 li a0,64
-80022c14: 1040fd08 beqz v0,80022038 <Game+0x528>
-80022c18: 00000000 nop
- {
- if(ptrPlayer->ActiveAircraft != 0)
-80022c1c: 93c2002c lbu v0,44(s8)
-80022c20: 00000000 nop
-80022c24: 1040fd04 beqz v0,80022038 <Game+0x528>
-80022c28: 24020004 li v0,4
- {
- ptrPlayer->ShowAircraftData = false;
-
- switch(aircraftState)
-80022c2c: 12620008 beq s3,v0,80022c50 <Game+0x1140>
-80022c30: a3c00001 sb zero,1(s8)
-80022c34: 24020006 li v0,6
-80022c38: 12620008 beq s3,v0,80022c5c <Game+0x114c>
-80022c3c: 24160001 li s6,1
-80022c40: 1676000c bne s3,s6,80022c74 <Game+0x1164>
-80022c44: 02602821 move a1,s3
- case STATE_APPROACH:
- ptrPlayer->SelectRunway = true;
- break;
-
- case STATE_PARKED:
- ptrPlayer->SelectTaxiwayRunway = true;
-80022c48: 10000006 b 80022c64 <Game+0x1154>
-80022c4c: a3d30003 sb s3,3(s8)
- ptrPlayer->ShowAircraftData = false;
-
- switch(aircraftState)
- {
- case STATE_APPROACH:
- ptrPlayer->SelectRunway = true;
-80022c50: 24020001 li v0,1
-80022c54: 1000fcf8 b 80022038 <Game+0x528>
-80022c58: a3c20002 sb v0,2(s8)
- ptrPlayer->SelectTaxiwayRunway = true;
- GameSelectAircraft(ptrPlayer);
- break;
-
- case STATE_LANDED:
- ptrPlayer->SelectTaxiwayParking = true;
-80022c5c: 24020001 li v0,1
-80022c60: a3c20004 sb v0,4(s8)
- // Move camera to selected aircraft and add first waypoint.
- GameSelectAircraft(ptrPlayer);
-80022c64: 0c00858e jal 80021638 <GameSelectAircraft>
-80022c68: 03c02021 move a0,s8
-80022c6c: 1000fcf2 b 80022038 <Game+0x528>
-80022c70: 00000000 nop
- break;
-
- default:
- dprintf("Incompatible state %d!\n",aircraftState);
-80022c74: 8fa200a4 lw v0,164(sp)
-80022c78: 0c00ed8f jal 8003b63c <printf>
-80022c7c: 24440500 addiu a0,v0,1280
- // States remain unchanged
- ptrPlayer->SelectRunway = false;
-80022c80: a3c00002 sb zero,2(s8)
- ptrPlayer->SelectTaxiwayRunway = false;
-80022c84: a3c00003 sb zero,3(s8)
- ptrPlayer->ShowAircraftData = true;
-80022c88: 1000fceb b 80022038 <Game+0x528>
-80022c8c: a3d60001 sb s6,1(s8)
- uint8_t Hours[GAME_MAX_AIRCRAFT];
- uint8_t Minutes[GAME_MAX_AIRCRAFT];
- uint8_t Parking[GAME_MAX_AIRCRAFT];
- }TYPE_FLIGHT_DATA;*/
-
- dprintf("\n*****************\n");
-80022c90: 0c00ed8f jal 8003b63c <printf>
-80022c94: 02602021 move a0,s3
- dprintf("\tAIRCRAFT %d\n",i);
-80022c98: 02202821 move a1,s1
-80022c9c: 0c00ed8f jal 8003b63c <printf>
-80022ca0: 26c4052c addiu a0,s6,1324
- dprintf("*****************\n");
-80022ca4: 3c048004 lui a0,0x8004
-80022ca8: 0c00ed8f jal 8003b63c <printf>
-80022cac: 2484053c addiu a0,a0,1340
-
- if(FlightData.FlightDirection[i] == ARRIVAL)
-80022cb0: 8fa3008c lw v1,140(sp)
-80022cb4: 00111080 sll v0,s1,0x2
-80022cb8: 00431021 addu v0,v0,v1
- {
- dprintf("Direction: %s\n","Arrival");
- }
- else if(FlightData.FlightDirection[i] == DEPARTURE)
-80022cbc: 8c420000 lw v0,0(v0)
-80022cc0: 00000000 nop
-80022cc4: 2442ffff addiu v0,v0,-1
-80022cc8: 2c420002 sltiu v0,v0,2
-80022ccc: 10400007 beqz v0,80022cec <Game+0x11dc>
-80022cd0: 02511021 addu v0,s2,s1
- dprintf("\tAIRCRAFT %d\n",i);
- dprintf("*****************\n");
-
- if(FlightData.FlightDirection[i] == ARRIVAL)
- {
- dprintf("Direction: %s\n","Arrival");
-80022cd4: 3c058004 lui a1,0x8004
-80022cd8: 3c048004 lui a0,0x8004
-80022cdc: 24a50550 addiu a1,a1,1360
-80022ce0: 0c00ed8f jal 8003b63c <printf>
-80022ce4: 24840558 addiu a0,a0,1368
- else if(FlightData.FlightDirection[i] == DEPARTURE)
- {
- dprintf("Direction: %s\n","Arrival");
- }
-
- dprintf("Time: %d:%d\n",FlightData.Hours[i],FlightData.Minutes[i]);
-80022ce8: 02511021 addu v0,s2,s1
-80022cec: 904601c0 lbu a2,448(v0)
-80022cf0: 904501a0 lbu a1,416(v0)
-80022cf4: 3c048004 lui a0,0x8004
-80022cf8: 0c00ed8f jal 8003b63c <printf>
-80022cfc: 24840568 addiu a0,a0,1384
-
- dprintf("State: ");
-80022d00: 3c048004 lui a0,0x8004
-80022d04: 0c00ed8f jal 8003b63c <printf>
-80022d08: 24840578 addiu a0,a0,1400
-
- switch(FlightData.State[i])
-80022d0c: 26220080 addiu v0,s1,128
-80022d10: 00021080 sll v0,v0,0x2
-80022d14: 02421021 addu v0,s2,v0
-80022d18: 8c420004 lw v0,4(v0)
-80022d1c: 00000000 nop
-80022d20: 2c430007 sltiu v1,v0,7
-80022d24: 1060001c beqz v1,80022d98 <Game+0x1288>
-80022d28: 00021080 sll v0,v0,0x2
-80022d2c: 02a21021 addu v0,s5,v0
-80022d30: 8c420000 lw v0,0(v0)
-80022d34: 00000000 nop
-80022d38: 00400008 jr v0
-80022d3c: 00000000 nop
- {
- case STATE_APPROACH:
- dprintf("Approach");
-80022d40: 3c048004 lui a0,0x8004
-80022d44: 10000012 b 80022d90 <Game+0x1280>
-80022d48: 24840580 addiu a0,a0,1408
- break;
-
- case STATE_TAXIING:
- dprintf("Taxiing");
-80022d4c: 3c048004 lui a0,0x8004
-80022d50: 1000000f b 80022d90 <Game+0x1280>
-80022d54: 2484058c addiu a0,a0,1420
- break;
-
- case STATE_FINAL:
- dprintf("Final");
-80022d58: 3c048004 lui a0,0x8004
-80022d5c: 1000000c b 80022d90 <Game+0x1280>
-80022d60: 24840594 addiu a0,a0,1428
- break;
-
- case STATE_IDLE:
- dprintf("Idle");
-80022d64: 3c048004 lui a0,0x8004
-80022d68: 10000009 b 80022d90 <Game+0x1280>
-80022d6c: 2484059c addiu a0,a0,1436
- break;
-
- case STATE_PARKED:
- dprintf("Parked");
-80022d70: 3c048004 lui a0,0x8004
-80022d74: 10000006 b 80022d90 <Game+0x1280>
-80022d78: 248405a4 addiu a0,a0,1444
- break;
-
- case STATE_LANDED:
- dprintf("Landed");
-80022d7c: 3c048004 lui a0,0x8004
-80022d80: 10000003 b 80022d90 <Game+0x1280>
-80022d84: 248405ac addiu a0,a0,1452
- break;
-
- case STATE_TAKEOFF:
- dprintf("Takeoff");
-80022d88: 3c048004 lui a0,0x8004
-80022d8c: 248405b4 addiu a0,a0,1460
-80022d90: 0c00ed8f jal 8003b63c <printf>
-80022d94: 00000000 nop
- break;
-
- default:
- break;
- }
- dprintf("\n");
-80022d98: 8fa20098 lw v0,152(sp)
- }
- }
-
- if(PadOneKeyReleased(PAD_CIRCLE) == true)
- {
- for(i = 0; i < FlightData.nAircraft ; i++)
-80022d9c: 26310001 addiu s1,s1,1
- break;
-
- default:
- break;
- }
- dprintf("\n");
-80022da0: 0c00ed8f jal 8003b63c <printf>
-80022da4: 244408dc addiu a0,v0,2268
- }
- }
-
- if(PadOneKeyReleased(PAD_CIRCLE) == true)
- {
- for(i = 0; i < FlightData.nAircraft ; i++)
-80022da8: 1000fcb2 b 80022074 <Game+0x564>
-80022dac: 323100ff andi s1,s1,0xff
- static bool rwy_sine_decrease = false;
- TYPE_ISOMETRIC_POS tileIsoPos;
- TYPE_CARTESIAN_POS tileCartPos;
-
- // Prepare runway to be painted in blue if player is on runway selection mode
- if(ptrPlayer->SelectRunway == true)
-80022db0: 92220002 lbu v0,2(s1)
-80022db4: 00000000 nop
-80022db8: 1040000a beqz v0,80022de4 <Game+0x12d4>
-80022dbc: 0000a821 move s5,zero
- {
- GameGetSelectedRunwayArray(GameRwy[ptrPlayer->SelectedRunway]);
-80022dc0: 96220030 lhu v0,48(s1)
-80022dc4: 00000000 nop
-80022dc8: 00021840 sll v1,v0,0x1
-80022dcc: 3c028004 lui v0,0x8004
-80022dd0: 24423a08 addiu v0,v0,14856
-80022dd4: 00621021 addu v0,v1,v0
-80022dd8: 94440000 lhu a0,0(v0)
-80022ddc: 0c008502 jal 80021408 <GameGetSelectedRunwayArray>
-80022de0: 00000000 nop
- columns++;
- }
- else
- {
- rows++;
- columns = 0;
-80022de4: 00009821 move s3,zero
-80022de8: 0000f021 move s8,zero
- }
-
- dprintf("\n");*/
- }
-
- for(i = 0 ; i < GameLevelSize; i++)
-80022dec: 3c028007 lui v0,0x8007
-80022df0: 90421c11 lbu v0,7185(v0)
-80022df4: 00000000 nop
-80022df8: 03c2102b sltu v0,s8,v0
-80022dfc: 104000c6 beqz v0,80023118 <Game+0x1608>
-80022e00: 00000000 nop
- {
- // Flipped tiles have bit 7 enabled
- if(GameLevelBuffer[i] & TILE_MIRROR_FLAG)
-80022e04: 8fa2007c lw v0,124(sp)
-80022e08: 00000000 nop
-80022e0c: 03c21821 addu v1,s8,v0
-80022e10: 90620000 lbu v0,0(v1)
-80022e14: 00000000 nop
-80022e18: 00022600 sll a0,v0,0x18
-80022e1c: 00042603 sra a0,a0,0x18
-80022e20: 04810005 bgez a0,80022e38 <Game+0x1328>
-80022e24: 0000b021 move s6,zero
- {
- flip_id = true;
- aux_id = GameLevelBuffer[i];
- GameLevelBuffer[i] &= ~(TILE_MIRROR_FLAG);
-80022e28: 3044007f andi a0,v0,0x7f
-80022e2c: a0640000 sb a0,0(v1)
-80022e30: afa20090 sw v0,144(sp)
- for(i = 0 ; i < GameLevelSize; i++)
- {
- // Flipped tiles have bit 7 enabled
- if(GameLevelBuffer[i] & TILE_MIRROR_FLAG)
- {
- flip_id = true;
-80022e34: 24160001 li s6,1
- else
- {
- flip_id = false;
- }
-
- if(GameLevelBuffer[i] == TILE_NOTHING)
-80022e38: 8fa20088 lw v0,136(sp)
-80022e3c: 240300ff li v1,255
-80022e40: 005e1021 addu v0,v0,s8
-80022e44: 90420000 lbu v0,0(v0)
-80022e48: 00000000 nop
-80022e4c: 104300af beq v0,v1,8002310c <Game+0x15fc>
-80022e50: 2c430010 sltiu v1,v0,16
- {
- // Skip empty tiles
- continue;
- }
-
- if(GameLevelBuffer[i] <= LAST_TILE_TILESET1)
-80022e54: 14600008 bnez v1,80022e78 <Game+0x1368>
-80022e58: 2442fff0 addiu v0,v0,-16
- {
- // Draw using GameTilesetSpr
- ptrTileset = &GameTilesetSpr;
- }
- else if( (GameLevelBuffer[i] > LAST_TILE_TILESET1)
-80022e5c: 2c42000d sltiu v0,v0,13
-80022e60: 14400008 bnez v0,80022e84 <Game+0x1374>
-80022e64: 00000000 nop
- }
- else
- {
- ptrTileset = NULL;
-
- if(flip_id == false)
-80022e68: 16c000c8 bnez s6,8002318c <Game+0x167c>
-80022e6c: 27c70001 addiu a3,s8,1
-80022e70: 1000ffde b 80022dec <Game+0x12dc>
-80022e74: 30feffff andi s8,a3,0xffff
- }
-
- if(GameLevelBuffer[i] <= LAST_TILE_TILESET1)
- {
- // Draw using GameTilesetSpr
- ptrTileset = &GameTilesetSpr;
-80022e78: 3c038004 lui v1,0x8004
-80022e7c: 10000003 b 80022e8c <Game+0x137c>
-80022e80: 24773aac addiu s7,v1,15020
- else if( (GameLevelBuffer[i] > LAST_TILE_TILESET1)
- &&
- (GameLevelBuffer[i] <= LAST_TILE_TILESET2) )
- {
- // Draw using GameTileset2Spr
- ptrTileset = &GameTileset2Spr;
-80022e84: 3c038004 lui v1,0x8004
-80022e88: 24773a80 addiu s7,v1,14976
- {
- continue;
- }
- }
-
- ptrTileset->w = TILE_SIZE;
-80022e8c: 24020040 li v0,64
-80022e90: a6e20006 sh v0,6(s7)
- ptrTileset->h = TILE_SIZE;
-80022e94: a6e20008 sh v0,8(s7)
-
- used_rwy = false;
-
- if( (ptrPlayer->SelectRunway == true)
-80022e98: 92220002 lbu v0,2(s1)
-80022e9c: 00000000 nop
-80022ea0: 10400027 beqz v0,80022f40 <Game+0x1430>
-80022ea4: 00000000 nop
- &&
-80022ea8: 13c00025 beqz s8,80022f40 <Game+0x1430>
-80022eac: 3c098004 lui t1,0x8004
- (i != 0)
- &&
- (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) )
-80022eb0: 24060010 li a2,16
-80022eb4: 25253744 addiu a1,t1,14148
-80022eb8: 03c02021 move a0,s8
-80022ebc: 0c00a067 jal 8002819c <SystemContains_u16>
-80022ec0: afa900a0 sw t1,160(sp)
- used_rwy = false;
-
- if( (ptrPlayer->SelectRunway == true)
- &&
- (i != 0)
- &&
-80022ec4: 1040001e beqz v0,80022f40 <Game+0x1430>
-80022ec8: 00004021 move t0,zero
- {
- for(j = 0; j < GAME_MAX_RUNWAYS; j++)
- {
- if(GameUsedRwy[j] != 0)
- {
- if(SystemContains_u16(GameUsedRwy[j], GameRwyArray, GAME_MAX_RWY_LENGTH) == true)
-80022ecc: 8fa900a0 lw t1,160(sp)
-80022ed0: 00000000 nop
-80022ed4: 25293744 addiu t1,t1,14148
- &&
- (i != 0)
- &&
- (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) )
- {
- for(j = 0; j < GAME_MAX_RUNWAYS; j++)
-80022ed8: 240a0020 li t2,32
- {
- if(GameUsedRwy[j] != 0)
-80022edc: 8fa2009c lw v0,156(sp)
-80022ee0: 00000000 nop
-80022ee4: 00481021 addu v0,v0,t0
-80022ee8: 94440000 lhu a0,0(v0)
-80022eec: 00000000 nop
-80022ef0: 14800007 bnez a0,80022f10 <Game+0x1400>
-80022ef4: 01202821 move a1,t1
-80022ef8: 25080002 addiu t0,t0,2
- &&
- (i != 0)
- &&
- (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) )
- {
- for(j = 0; j < GAME_MAX_RUNWAYS; j++)
-80022efc: 150afff7 bne t0,t2,80022edc <Game+0x13cc>
-80022f00: 3c028007 lui v0,0x8007
- ptrTileset->b = NORMAL_LUMINANCE >> 2;
- ptrTileset->g = NORMAL_LUMINANCE >> 2;
- }
- else
- {
- ptrTileset->r = NORMAL_LUMINANCE >> 2;
-80022f04: a2e8000e sb t0,14(s7)
- ptrTileset->g = NORMAL_LUMINANCE >> 2;
-80022f08: 1000009d b 80023180 <Game+0x1670>
-80022f0c: a2e8000f sb t0,15(s7)
- {
- for(j = 0; j < GAME_MAX_RUNWAYS; j++)
- {
- if(GameUsedRwy[j] != 0)
- {
- if(SystemContains_u16(GameUsedRwy[j], GameRwyArray, GAME_MAX_RWY_LENGTH) == true)
-80022f10: 24060010 li a2,16
-80022f14: afaa00a8 sw t2,168(sp)
-80022f18: afa800a4 sw t0,164(sp)
-80022f1c: 0c00a067 jal 8002819c <SystemContains_u16>
-80022f20: afa900a0 sw t1,160(sp)
-80022f24: 8fa900a0 lw t1,160(sp)
-80022f28: 8fa800a4 lw t0,164(sp)
-80022f2c: 8faa00a8 lw t2,168(sp)
-80022f30: 1040fff2 beqz v0,80022efc <Game+0x13ec>
-80022f34: 25080002 addiu t0,t0,2
- }
- }
-
- if(used_rwy == true)
- {
- ptrTileset->r = rwy_sine;
-80022f38: 1000008a b 80023164 <Game+0x1654>
-80022f3c: 3c028007 lui v0,0x8007
- ptrTileset->r = NORMAL_LUMINANCE >> 2;
- ptrTileset->g = NORMAL_LUMINANCE >> 2;
- ptrTileset->b = rwy_sine;
- }
- }
- else if( ( (ptrPlayer->SelectTaxiwayParking == true)
-80022f40: 92220004 lbu v0,4(s1)
-80022f44: 00000000 nop
-80022f48: 14400005 bnez v0,80022f60 <Game+0x1450>
-80022f4c: 00000000 nop
- ||
-80022f50: 92220003 lbu v0,3(s1)
-80022f54: 00000000 nop
-80022f58: 10400018 beqz v0,80022fbc <Game+0x14ac>
-80022f5c: 2402ff80 li v0,-128
- (ptrPlayer->SelectTaxiwayRunway == true) )
- &&
-80022f60: 13c00016 beqz s8,80022fbc <Game+0x14ac>
-80022f64: 2402ff80 li v0,-128
- (i != 0)
- &&
- ( (SystemContains_u16(i, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == true)
-80022f68: 03c02021 move a0,s8
-80022f6c: 24060020 li a2,32
-80022f70: 0c00a067 jal 8002819c <SystemContains_u16>
-80022f74: 26250034 addiu a1,s1,52
-80022f78: 96240032 lhu a0,50(s1)
- else if( ( (ptrPlayer->SelectTaxiwayParking == true)
- ||
- (ptrPlayer->SelectTaxiwayRunway == true) )
- &&
- (i != 0)
- &&
-80022f7c: 14400004 bnez v0,80022f90 <Game+0x1480>
-80022f80: 3402ffff li v0,0xffff
- ( (SystemContains_u16(i, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == true)
- ||
-80022f84: 149e000d bne a0,s8,80022fbc <Game+0x14ac>
-80022f88: 2402ff80 li v0,-128
- (i == ptrPlayer->SelectedTile) )
- &&
-80022f8c: 3402ffff li v0,0xffff
-80022f90: 10820009 beq a0,v0,80022fb8 <Game+0x14a8>
-80022f94: 00000000 nop
- (ptrPlayer->SelectedTile != GAME_INVALID_TILE_SELECTION) )
- {
- if(ptrPlayer->InvalidPath == true)
-80022f98: 92240005 lbu a0,5(s1)
-80022f9c: 00000000 nop
-80022fa0: 14800070 bnez a0,80023164 <Game+0x1654>
-80022fa4: 3c028007 lui v0,0x8007
- ptrTileset->b = NORMAL_LUMINANCE >> 2;
- ptrTileset->g = NORMAL_LUMINANCE >> 2;
- }
- else
- {
- ptrTileset->r = NORMAL_LUMINANCE >> 2;
-80022fa8: 24040020 li a0,32
-80022fac: a2e4000e sb a0,14(s7)
- ptrTileset->g = NORMAL_LUMINANCE >> 2;
-80022fb0: 10000073 b 80023180 <Game+0x1670>
-80022fb4: a2e4000f sb a0,15(s7)
- ptrTileset->b = rwy_sine;
- }
- }
- else
- {
- ptrTileset->r = NORMAL_LUMINANCE;
-80022fb8: 2402ff80 li v0,-128
-80022fbc: a2e2000e sb v0,14(s7)
- ptrTileset->g = NORMAL_LUMINANCE;
-80022fc0: a2e2000f sb v0,15(s7)
- ptrTileset->b = NORMAL_LUMINANCE;
-80022fc4: a2e20010 sb v0,16(s7)
- }
-
- if(System100msTick() == true)
-80022fc8: 0c009fba jal 80027ee8 <System100msTick>
-80022fcc: 00000000 nop
-80022fd0: 10400014 beqz v0,80023024 <Game+0x1514>
-80022fd4: 3c058007 lui a1,0x8007
- {
- if(rwy_sine_decrease == false)
-80022fd8: 90a41c00 lbu a0,7168(a1)
-80022fdc: 00000000 nop
-80022fe0: 14800008 bnez a0,80023004 <Game+0x14f4>
-80022fe4: 3c028007 lui v0,0x8007
- {
- if(rwy_sine < 255)
-80022fe8: 90441c01 lbu a0,7169(v0)
-80022fec: 240600ff li a2,255
-80022ff0: 14860009 bne a0,a2,80023018 <Game+0x1508>
-80022ff4: 24840001 addiu a0,a0,1
- {
- rwy_sine++;
- }
- else
- {
- rwy_sine_decrease = true;
-80022ff8: 24020001 li v0,1
-80022ffc: 10000009 b 80023024 <Game+0x1514>
-80023000: a0a21c00 sb v0,7168(a1)
- }
- }
- else
- {
- if(rwy_sine > (NORMAL_LUMINANCE >> 2))
-80023004: 90441c01 lbu a0,7169(v0)
-80023008: 00000000 nop
-8002300c: 2c860021 sltiu a2,a0,33
-80023010: 14c00003 bnez a2,80023020 <Game+0x1510>
-80023014: 2484ffff addiu a0,a0,-1
- {
- rwy_sine--;
-80023018: 10000002 b 80023024 <Game+0x1514>
-8002301c: a0441c01 sb a0,7169(v0)
- }
- else
- {
- rwy_sine_decrease = false;
-80023020: a0a01c00 sb zero,7168(a1)
- }
- }
- }
-
- // TODO: Isometric -> Cartesian conversion
- tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT);
-80023024: 00131180 sll v0,s3,0x6
-80023028: a7a20010 sh v0,16(sp)
- tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT);
- tileIsoPos.z = 0;
-
- tileCartPos = GfxIsometricToCartesian(&tileIsoPos);
-8002302c: 27a40050 addiu a0,sp,80
- }
- }
-
- // TODO: Isometric -> Cartesian conversion
- tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT);
- tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT);
-80023030: 00151180 sll v0,s5,0x6
- tileIsoPos.z = 0;
-
- tileCartPos = GfxIsometricToCartesian(&tileIsoPos);
-80023034: 27a50010 addiu a1,sp,16
- }
- }
-
- // TODO: Isometric -> Cartesian conversion
- tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT);
- tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT);
-80023038: a7a20012 sh v0,18(sp)
- tileIsoPos.z = 0;
-
- tileCartPos = GfxIsometricToCartesian(&tileIsoPos);
-8002303c: 0c0091ac jal 800246b0 <GfxIsometricToCartesian>
-80023040: a7a00014 sh zero,20(sp)
-
- ptrTileset->x = tileCartPos.x;
- ptrTileset->y = tileCartPos.y;
-80023044: 87a20052 lh v0,82(sp)
-
- // Set coordinate origin to left upper corner
- ptrTileset->x -= TILE_SIZE >> 1;
-80023048: 97a40050 lhu a0,80(sp)
- ptrTileset->y -= TILE_SIZE >> 2;
-8002304c: 2442fff0 addiu v0,v0,-16
-80023050: a6e20002 sh v0,2(s7)
- ptrTileset->x -= rows << (TILE_SIZE_BIT_SHIFT - 1);
-
- ptrTileset->y = rows << (TILE_SIZE_BIT_SHIFT - 2);
- ptrTileset->y += columns << (TILE_SIZE_BIT_SHIFT - 2);*/
-
- if(columns < GameLevelColumns -1 )
-80023054: 3c028007 lui v0,0x8007
-80023058: 90421c12 lbu v0,7186(v0)
-
- ptrTileset->x = tileCartPos.x;
- ptrTileset->y = tileCartPos.y;
-
- // Set coordinate origin to left upper corner
- ptrTileset->x -= TILE_SIZE >> 1;
-8002305c: 2484ffe0 addiu a0,a0,-32
- ptrTileset->x -= rows << (TILE_SIZE_BIT_SHIFT - 1);
-
- ptrTileset->y = rows << (TILE_SIZE_BIT_SHIFT - 2);
- ptrTileset->y += columns << (TILE_SIZE_BIT_SHIFT - 2);*/
-
- if(columns < GameLevelColumns -1 )
-80023060: 2442ffff addiu v0,v0,-1
-80023064: 0262102a slt v0,s3,v0
-80023068: 10400004 beqz v0,8002307c <Game+0x156c>
-8002306c: a6e40000 sh a0,0(s7)
- {
- columns++;
-80023070: 26730001 addiu s3,s3,1
-80023074: 10000004 b 80023088 <Game+0x1578>
-80023078: 327300ff andi s3,s3,0xff
- }
- else
- {
- rows++;
-8002307c: 26b50001 addiu s5,s5,1
-80023080: 32b500ff andi s5,s5,0xff
- columns = 0;
-80023084: 00009821 move s3,zero
- }
-
- if(ptrTileset != NULL)
- {
- if(flip_id == true)
-80023088: 12c00005 beqz s6,800230a0 <Game+0x1590>
-8002308c: 00000000 nop
- {
- ptrTileset->attribute |= H_FLIP;
-80023090: 8ee20014 lw v0,20(s7)
-80023094: 00000000 nop
-80023098: 34420020 ori v0,v0,0x20
-8002309c: aee20014 sw v0,20(s7)
- }
- }
-
- ptrTileset->u = (short)(GameLevelBuffer[i] % COLUMNS_PER_TILESET)<<TILE_SIZE_BIT_SHIFT;
-800230a0: 8fa20088 lw v0,136(sp)
-800230a4: 00000000 nop
-800230a8: 005e2021 addu a0,v0,s8
-800230ac: 90820000 lbu v0,0(a0)
-800230b0: 00000000 nop
-800230b4: 00022980 sll a1,v0,0x6
- ptrTileset->v = (short)(GameLevelBuffer[i] / COLUMNS_PER_TILESET)<<TILE_SIZE_BIT_SHIFT;
-800230b8: 00021082 srl v0,v0,0x2
-800230bc: 00021180 sll v0,v0,0x6
- {
- ptrTileset->attribute |= H_FLIP;
- }
- }
-
- ptrTileset->u = (short)(GameLevelBuffer[i] % COLUMNS_PER_TILESET)<<TILE_SIZE_BIT_SHIFT;
-800230c0: a2e50004 sb a1,4(s7)
- ptrTileset->v = (short)(GameLevelBuffer[i] / COLUMNS_PER_TILESET)<<TILE_SIZE_BIT_SHIFT;
-
- if(flip_id == true)
-800230c4: 12c00004 beqz s6,800230d8 <Game+0x15c8>
-800230c8: a2e20005 sb v0,5(s7)
- {
- flip_id = false;
- GameLevelBuffer[i] = aux_id;
-800230cc: 93a20090 lbu v0,144(sp)
-800230d0: 00000000 nop
-800230d4: a0820000 sb v0,0(a0)
- }
-
- // dprintf("Tile %d, attribute 0x%X\n",i,ptrTileset->attribute);
-
- CameraApplyCoordinatesToSprite(ptrPlayer, ptrTileset);
-800230d8: 02e02821 move a1,s7
-800230dc: 0c00825d jal 80020974 <CameraApplyCoordinatesToSprite>
-800230e0: 02202021 move a0,s1
- GfxSortSprite(ptrTileset);
-800230e4: 0c0090d2 jal 80024348 <GfxSortSprite>
-800230e8: 02e02021 move a0,s7
-
- if(ptrTileset->attribute & H_FLIP)
-800230ec: 8ee20014 lw v0,20(s7)
-800230f0: 00000000 nop
-800230f4: 30440020 andi a0,v0,0x20
-800230f8: 10800005 beqz a0,80023110 <Game+0x1600>
-800230fc: 27c70001 addiu a3,s8,1
- {
- ptrTileset->attribute &= ~(H_FLIP);
-80023100: 2404ffdf li a0,-33
-80023104: 00441024 and v0,v0,a0
-80023108: aee20014 sw v0,20(s7)
- }
-
- dprintf("\n");*/
- }
-
- for(i = 0 ; i < GameLevelSize; i++)
-8002310c: 27c70001 addiu a3,s8,1
-80023110: 1000ff36 b 80022dec <Game+0x12dc>
-80023114: 30feffff andi s8,a3,0xffff
- {
- ptrTileset->attribute &= ~(H_FLIP);
- }
- }
-
- if( (ptrPlayer->SelectTaxiwayParking == true)
-80023118: 92220004 lbu v0,4(s1)
-8002311c: 00000000 nop
-80023120: 14400005 bnez v0,80023138 <Game+0x1628>
-80023124: 3c048004 lui a0,0x8004
- ||
-80023128: 92220003 lbu v0,3(s1)
-8002312c: 00000000 nop
-80023130: 10400003 beqz v0,80023140 <Game+0x1630>
-80023134: 00000000 nop
- (ptrPlayer->SelectTaxiwayRunway == true) )
- {
- GfxSortSprite(&GameMouseSpr);
-80023138: 0c0090d2 jal 80024348 <GfxSortSprite>
-8002313c: 24843a28 addiu a0,a0,14888
- for(i = 0; i < MAX_PLAYERS ; i++)
- {
- if(PlayerData[i].Active == true)
- {
- GameRenderLevel(&PlayerData[i]);
- AircraftRender(&PlayerData[i]);
-80023140: 0c0081be jal 800206f8 <AircraftRender>
-80023144: 02202021 move a0,s1
-80023148: 1000fbf3 b 80022118 <Game+0x608>
-8002314c: 00000000 nop
- if(ptrPlayer->PadKeyReleased_Callback(PAD_CIRCLE) == true)
- {
- if(GameGuiShowAircraftDataSpecialConditions(ptrPlayer) == false)
- {
- //Invert ptrPlayer->ShowAircraftData value
- ptrPlayer->ShowAircraftData = ptrPlayer->ShowAircraftData ? false : true;
-80023150: 93c20001 lbu v0,1(s8)
-80023154: 00000000 nop
-80023158: 38420001 xori v0,v0,0x1
-8002315c: 1000fe97 b 80022bbc <Game+0x10ac>
-80023160: a3c20001 sb v0,1(s8)
- }
- }
-
- if(used_rwy == true)
- {
- ptrTileset->r = rwy_sine;
-80023164: 90421c01 lbu v0,7169(v0)
-80023168: 00000000 nop
-8002316c: a2e2000e sb v0,14(s7)
- ptrTileset->b = NORMAL_LUMINANCE >> 2;
-80023170: 24020020 li v0,32
-80023174: a2e20010 sb v0,16(s7)
- ptrTileset->g = NORMAL_LUMINANCE >> 2;
-80023178: 1000ff93 b 80022fc8 <Game+0x14b8>
-8002317c: a2e2000f sb v0,15(s7)
- }
- else
- {
- ptrTileset->r = NORMAL_LUMINANCE >> 2;
- ptrTileset->g = NORMAL_LUMINANCE >> 2;
- ptrTileset->b = rwy_sine;
-80023180: 90421c01 lbu v0,7169(v0)
- }
- else
- {
- ptrTileset->r = NORMAL_LUMINANCE;
- ptrTileset->g = NORMAL_LUMINANCE;
- ptrTileset->b = NORMAL_LUMINANCE;
-80023184: 1000ff90 b 80022fc8 <Game+0x14b8>
-80023188: a2e20010 sb v0,16(s7)
- {
- continue;
- }
- }
-
- ptrTileset->w = TILE_SIZE;
-8002318c: a4000006 sh zero,6(zero)
-80023190: 0000000d break
-
-80023194 <GameGetFirstActiveAircraft>:
-}
-
-uint8_t GameGetFirstActiveAircraft(void)
-{
- return firstActiveAircraft;
-}
-80023194: 3c028007 lui v0,0x8007
-80023198: 90421c0d lbu v0,7181(v0)
-8002319c: 03e00008 jr ra
-800231a0: 00000000 nop
-
-800231a4 <GameGetLastActiveAircraft>:
-
-uint8_t GameGetLastActiveAircraft(void)
-{
- return lastActiveAircraft;
-}
-800231a4: 3c028007 lui v0,0x8007
-800231a8: 90421c0c lbu v0,7180(v0)
-800231ac: 03e00008 jr ra
-800231b0: 00000000 nop
-
-800231b4 <GetGameLevelTitle>:
-}
-
-char* GetGameLevelTitle(void)
-{
- return GameLevelTitle;
-}
-800231b4: 3c028004 lui v0,0x8004
-800231b8: 03e00008 jr ra
-800231bc: 2442330c addiu v0,v0,13068
-
-800231c0 <GameSetTime>:
- }*/
-}
-
-void GameSetTime(uint8_t hour, uint8_t minutes)
-{
- GameHour = hour;
-800231c0: 3c028007 lui v0,0x8007
-800231c4: a0441c10 sb a0,7184(v0)
- GameMinutes = minutes;
-800231c8: 3c028007 lui v0,0x8007
-800231cc: 03e00008 jr ra
-800231d0: a0451c0f sb a1,7183(v0)
-
-800231d4 <GameGetXFromTile>:
-
-fix16_t GameGetXFromTile(uint16_t tile)
-{
- fix16_t retVal;
-
- tile %= GameLevelColumns;
-800231d4: 3c028007 lui v0,0x8007
-
- retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT);
-800231d8: 90421c12 lbu v0,7186(v0)
- }
- }
-}
-
-fix16_t GameGetXFromTile(uint16_t tile)
-{
-800231dc: 3084ffff andi a0,a0,0xffff
- fix16_t retVal;
-
- tile %= GameLevelColumns;
-
- retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT);
-800231e0: 14400002 bnez v0,800231ec <GameGetXFromTile+0x18>
-800231e4: 0082001a div zero,a0,v0
-800231e8: 0007000d break 0x7
-800231ec: 00001010 mfhi v0
-800231f0: 3042ffff andi v0,v0,0xffff
-800231f4: 00021180 sll v0,v0,0x6
- // Always point to tile center
- retVal += TILE_SIZE >> 1;
-
- retVal = fix16_from_int(retVal);
-
- return retVal;
-800231f8: 24420020 addiu v0,v0,32
-}
-800231fc: 03e00008 jr ra
-80023200: 00021400 sll v0,v0,0x10
-
-80023204 <GameGetYFromTile>:
-
-fix16_t GameGetYFromTile(uint16_t tile)
-{
- fix16_t retVal;
-
- tile /= GameLevelColumns;
-80023204: 3c028007 lui v0,0x8007
-
- retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT);
-80023208: 90421c12 lbu v0,7186(v0)
-
- return retVal;
-}
-
-fix16_t GameGetYFromTile(uint16_t tile)
-{
-8002320c: 3084ffff andi a0,a0,0xffff
- fix16_t retVal;
-
- tile /= GameLevelColumns;
-
- retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT);
-80023210: 14400002 bnez v0,8002321c <GameGetYFromTile+0x18>
-80023214: 0082001a div zero,a0,v0
-80023218: 0007000d break 0x7
-8002321c: 00001012 mflo v0
-80023220: 00021180 sll v0,v0,0x6
- // Always point to tile center
- retVal += TILE_SIZE >> 1;
-
- retVal = fix16_from_int(retVal);
-
- return retVal;
-80023224: 24420020 addiu v0,v0,32
-}
-80023228: 03e00008 jr ra
-8002322c: 00021400 sll v0,v0,0x10
-
-80023230 <GameTargetsReached>:
-
-void GameTargetsReached(uint8_t index)
-{
-80023230: 308400ff andi a0,a0,0xff
- switch(FlightData.State[index])
-80023234: 24840080 addiu a0,a0,128
-80023238: 3c028004 lui v0,0x8004
-8002323c: 24423764 addiu v0,v0,14180
-80023240: 00042080 sll a0,a0,0x2
-80023244: 00442021 addu a0,v0,a0
-80023248: 8c830004 lw v1,4(a0)
-8002324c: 24020005 li v0,5
-80023250: 14620003 bne v1,v0,80023260 <GameTargetsReached+0x30>
-80023254: 00000000 nop
- {
- case STATE_FINAL:
- FlightData.State[index] = STATE_LANDED;
-80023258: 24020006 li v0,6
-8002325c: ac820004 sw v0,4(a0)
-80023260: 03e00008 jr ra
-80023264: 00000000 nop
-
-80023268 <GameGetLevelColumns>:
-}
-
-uint8_t GameGetLevelColumns(void)
-{
- return GameLevelColumns;
-}
-80023268: 3c028007 lui v0,0x8007
-8002326c: 90421c12 lbu v0,7186(v0)
-80023270: 03e00008 jr ra
-80023274: 00000000 nop
-
-80023278 <GameGuiInit>:
-
-static char strNotificationRequest[NOTIFICATION_BUFFER_SIZE];
-
-void GameGuiInit(void)
-{
- LoadMenu( GameFileList,
-80023278: 3c058004 lui a1,0x8004
-8002327c: 3c048004 lui a0,0x8004
- (GsSprite*)&ArrowsSpr };
-
-static char strNotificationRequest[NOTIFICATION_BUFFER_SIZE];
-
-void GameGuiInit(void)
-{
-80023280: 27bdffe8 addiu sp,sp,-24
- LoadMenu( GameFileList,
-80023284: 24a51448 addiu a1,a1,5192
-80023288: 24841454 addiu a0,a0,5204
-8002328c: 24070003 li a3,3
- (GsSprite*)&ArrowsSpr };
-
-static char strNotificationRequest[NOTIFICATION_BUFFER_SIZE];
-
-void GameGuiInit(void)
-{
-80023290: afbf0014 sw ra,20(sp)
- LoadMenu( GameFileList,
-80023294: 0c0093c1 jal 80024f04 <LoadMenu>
-80023298: 24060003 li a2,3
- GameFileDest,
- sizeof(GameFileList) / sizeof(char*),
- sizeof(GameFileDest) /sizeof(void*) );
-
- PauseRect.x[0] = PAUSE_DIALOG_X;
-8002329c: 3c038004 lui v1,0x8004
-800232a0: 24623bcc addiu v0,v1,15308
- PauseRect.y[0] = PAUSE_DIALOG_Y;
- PauseRect.y[1] = PAUSE_DIALOG_Y;
- PauseRect.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H;
- PauseRect.y[3] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H;
-
- PauseRect.r[0] = PAUSE_DIALOG_R0;
-800232a4: a0603bcc sb zero,15308(v1)
- PauseRect.r[1] = PAUSE_DIALOG_R1;
- PauseRect.r[2] = PAUSE_DIALOG_R2;
- PauseRect.r[3] = PAUSE_DIALOG_R3;
-
- PauseRect.b[0] = PAUSE_DIALOG_B0;
-800232a8: 24030028 li v1,40
-800232ac: a0430008 sb v1,8(v0)
- PauseRect.b[1] = PAUSE_DIALOG_B1;
-800232b0: a0430009 sb v1,9(v0)
- PauseRect.b[2] = PAUSE_DIALOG_B2;
- PauseRect.b[3] = PAUSE_DIALOG_B3;
-
- PauseRect.g[0] = PAUSE_DIALOG_G0;
-800232b4: 2403ff80 li v1,-128
- GameFileDest,
- sizeof(GameFileList) / sizeof(char*),
- sizeof(GameFileDest) /sizeof(void*) );
-
- PauseRect.x[0] = PAUSE_DIALOG_X;
- PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
-800232b8: 24040124 li a0,292
- PauseRect.b[0] = PAUSE_DIALOG_B0;
- PauseRect.b[1] = PAUSE_DIALOG_B1;
- PauseRect.b[2] = PAUSE_DIALOG_B2;
- PauseRect.b[3] = PAUSE_DIALOG_B3;
-
- PauseRect.g[0] = PAUSE_DIALOG_G0;
-800232bc: a0430004 sb v1,4(v0)
- PauseRect.g[1] = PAUSE_DIALOG_G1;
-800232c0: a0430005 sb v1,5(v0)
- PauseRect.g[2] = PAUSE_DIALOG_G2;
- PauseRect.g[3] = PAUSE_DIALOG_G3;
-
- PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-800232c4: 8c43001c lw v1,28(v0)
-}
-800232c8: 8fbf0014 lw ra,20(sp)
- GameFileDest,
- sizeof(GameFileList) / sizeof(char*),
- sizeof(GameFileDest) /sizeof(void*) );
-
- PauseRect.x[0] = PAUSE_DIALOG_X;
- PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
-800232cc: a444000e sh a0,14(v0)
- PauseRect.x[2] = PAUSE_DIALOG_X;
- PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
-800232d0: a4440012 sh a0,18(v0)
-
- PauseRect.y[0] = PAUSE_DIALOG_Y;
-800232d4: 2404001c li a0,28
- LoadMenu( GameFileList,
- GameFileDest,
- sizeof(GameFileList) / sizeof(char*),
- sizeof(GameFileDest) /sizeof(void*) );
-
- PauseRect.x[0] = PAUSE_DIALOG_X;
-800232d8: 2405005c li a1,92
- PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
- PauseRect.x[2] = PAUSE_DIALOG_X;
- PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
-
- PauseRect.y[0] = PAUSE_DIALOG_Y;
-800232dc: a4440014 sh a0,20(v0)
- PauseRect.y[1] = PAUSE_DIALOG_Y;
-800232e0: a4440016 sh a0,22(v0)
- PauseRect.g[0] = PAUSE_DIALOG_G0;
- PauseRect.g[1] = PAUSE_DIALOG_G1;
- PauseRect.g[2] = PAUSE_DIALOG_G2;
- PauseRect.g[3] = PAUSE_DIALOG_G3;
-
- PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-800232e4: 34630010 ori v1,v1,0x10
- PauseRect.x[2] = PAUSE_DIALOG_X;
- PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
-
- PauseRect.y[0] = PAUSE_DIALOG_Y;
- PauseRect.y[1] = PAUSE_DIALOG_Y;
- PauseRect.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H;
-800232e8: 240400d4 li a0,212
- LoadMenu( GameFileList,
- GameFileDest,
- sizeof(GameFileList) / sizeof(char*),
- sizeof(GameFileDest) /sizeof(void*) );
-
- PauseRect.x[0] = PAUSE_DIALOG_X;
-800232ec: a445000c sh a1,12(v0)
- PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
- PauseRect.x[2] = PAUSE_DIALOG_X;
-800232f0: a4450010 sh a1,16(v0)
- PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
-
- PauseRect.y[0] = PAUSE_DIALOG_Y;
- PauseRect.y[1] = PAUSE_DIALOG_Y;
- PauseRect.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H;
-800232f4: a4440018 sh a0,24(v0)
- PauseRect.y[3] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H;
-800232f8: a444001a sh a0,26(v0)
-
- PauseRect.r[0] = PAUSE_DIALOG_R0;
- PauseRect.r[1] = PAUSE_DIALOG_R1;
-800232fc: a0400001 sb zero,1(v0)
- PauseRect.r[2] = PAUSE_DIALOG_R2;
-80023300: a0400002 sb zero,2(v0)
- PauseRect.r[3] = PAUSE_DIALOG_R3;
-80023304: a0400003 sb zero,3(v0)
-
- PauseRect.b[0] = PAUSE_DIALOG_B0;
- PauseRect.b[1] = PAUSE_DIALOG_B1;
- PauseRect.b[2] = PAUSE_DIALOG_B2;
-80023308: a040000a sb zero,10(v0)
- PauseRect.b[3] = PAUSE_DIALOG_B3;
-8002330c: a040000b sb zero,11(v0)
-
- PauseRect.g[0] = PAUSE_DIALOG_G0;
- PauseRect.g[1] = PAUSE_DIALOG_G1;
- PauseRect.g[2] = PAUSE_DIALOG_G2;
-80023310: a0400006 sb zero,6(v0)
- PauseRect.g[3] = PAUSE_DIALOG_G3;
-80023314: a0400007 sb zero,7(v0)
-
- PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80023318: ac43001c sw v1,28(v0)
-}
-8002331c: 03e00008 jr ra
-80023320: 27bd0018 addiu sp,sp,24
-
-80023324 <GameGuiAircraftNotificationRequest>:
- uint8_t i;
- static uint16_t NotificationTimer;
- static uint8_t FirstNotification;
- bool first_entered = true;
-
- if(GameStartupFlag == true)
-80023324: 3c028007 lui v0,0x8007
-80023328: 90421d24 lbu v0,7460(v0)
-
- PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-}
-
-void GameGuiAircraftNotificationRequest(TYPE_FLIGHT_DATA * ptrFlightData)
-{
-8002332c: 27bdffc8 addiu sp,sp,-56
-80023330: afb30020 sw s3,32(sp)
-80023334: afbf0034 sw ra,52(sp)
-80023338: afb70030 sw s7,48(sp)
-8002333c: afb6002c sw s6,44(sp)
-80023340: afb50028 sw s5,40(sp)
-80023344: afb40024 sw s4,36(sp)
-80023348: afb2001c sw s2,28(sp)
-8002334c: afb10018 sw s1,24(sp)
-80023350: afb00014 sw s0,20(sp)
- uint8_t i;
- static uint16_t NotificationTimer;
- static uint8_t FirstNotification;
- bool first_entered = true;
-
- if(GameStartupFlag == true)
-80023354: 10400004 beqz v0,80023368 <GameGuiAircraftNotificationRequest+0x44>
-80023358: 3c138007 lui s3,0x8007
- {
- // Set initial values to static variables
- NotificationTimer = 0;
-8002335c: 3c028007 lui v0,0x8007
-80023360: a4401c20 sh zero,7200(v0)
- FirstNotification = 0;
-80023364: a2601c1e sb zero,7198(s3)
- }
-
- for(i = FirstNotification; i < ptrFlightData->nAircraft ; i++)
-80023368: 92711c1e lbu s1,7198(s3)
-8002336c: 90830200 lbu v1,512(a0)
-80023370: 00000000 nop
-80023374: 0223102b sltu v0,s1,v1
-80023378: 10400078 beqz v0,8002355c <GameGuiAircraftNotificationRequest+0x238>
-8002337c: 00913021 addu a2,a0,s1
- {
- if(ptrFlightData->NotificationRequest[i] == true)
-80023380: 90c20284 lbu v0,644(a2)
-80023384: 00000000 nop
-80023388: 10400072 beqz v0,80023554 <GameGuiAircraftNotificationRequest+0x230>
-8002338c: 26310001 addiu s1,s1,1
-80023390: 2631ffff addiu s1,s1,-1
- {
- // Prepare RGB data and (X,Y) coordinates for notification
- // request rectangle.
- NotificationGPoly4.r[0] = NOTIFICATION_GSGPOLY4_R0;
-80023394: 3c158004 lui s5,0x8004
- NotificationGPoly4.r[1] = NOTIFICATION_GSGPOLY4_R1;
-80023398: 26a23c58 addiu v0,s5,15448
- NotificationGPoly4.r[2] = NOTIFICATION_GSGPOLY4_R2;
- NotificationGPoly4.r[3] = NOTIFICATION_GSGPOLY4_R3;
-
- NotificationGPoly4.g[0] = NOTIFICATION_GSGPOLY4_G0;
-8002339c: 2403ff80 li v1,-128
-800233a0: a0430004 sb v1,4(v0)
- NotificationGPoly4.g[1] = NOTIFICATION_GSGPOLY4_G1;
-800233a4: a0430005 sb v1,5(v0)
- NotificationGPoly4.g[2] = NOTIFICATION_GSGPOLY4_G2;
- NotificationGPoly4.g[3] = NOTIFICATION_GSGPOLY4_G3;
-
- NotificationGPoly4.b[0] = NOTIFICATION_GSGPOLY4_B0;
-800233a8: 24030028 li v1,40
-800233ac: a0430008 sb v1,8(v0)
- NotificationGPoly4.b[1] = NOTIFICATION_GSGPOLY4_B1;
-800233b0: a0430009 sb v1,9(v0)
- NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2;
- NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3;
-
- NotificationGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-800233b4: 8c43001c lw v1,28(v0)
-
- NotificationGPoly4.x[0] = NOTIFICATION_GSGPOLY4_X0;
-800233b8: 24050010 li a1,16
- NotificationGPoly4.b[0] = NOTIFICATION_GSGPOLY4_B0;
- NotificationGPoly4.b[1] = NOTIFICATION_GSGPOLY4_B1;
- NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2;
- NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3;
-
- NotificationGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-800233bc: 34630010 ori v1,v1,0x10
-800233c0: ac43001c sw v1,28(v0)
-
- NotificationGPoly4.x[0] = NOTIFICATION_GSGPOLY4_X0;
- NotificationGPoly4.x[1] = NOTIFICATION_GSGPOLY4_X1;
-800233c4: 24030160 li v1,352
-800233c8: a443000e sh v1,14(v0)
- NotificationGPoly4.x[2] = NOTIFICATION_GSGPOLY4_X2;
- NotificationGPoly4.x[3] = NOTIFICATION_GSGPOLY4_X3;
-800233cc: a4430012 sh v1,18(v0)
-
- NotificationGPoly4.y[0] = NOTIFICATION_GSGPOLY4_Y0;
-800233d0: 240300a8 li v1,168
- NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2;
- NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3;
-
- NotificationGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- NotificationGPoly4.x[0] = NOTIFICATION_GSGPOLY4_X0;
-800233d4: a445000c sh a1,12(v0)
- NotificationGPoly4.x[1] = NOTIFICATION_GSGPOLY4_X1;
- NotificationGPoly4.x[2] = NOTIFICATION_GSGPOLY4_X2;
-800233d8: a4450010 sh a1,16(v0)
- NotificationGPoly4.x[3] = NOTIFICATION_GSGPOLY4_X3;
-
- NotificationGPoly4.y[0] = NOTIFICATION_GSGPOLY4_Y0;
-800233dc: a4430014 sh v1,20(v0)
- NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2;
- NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3;
-
- /* dprintf("Notification timer: %d.\n",NotificationTimer); */
-
- if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT)
-800233e0: 3c058007 lui a1,0x8007
- NotificationGPoly4.x[1] = NOTIFICATION_GSGPOLY4_X1;
- NotificationGPoly4.x[2] = NOTIFICATION_GSGPOLY4_X2;
- NotificationGPoly4.x[3] = NOTIFICATION_GSGPOLY4_X3;
-
- NotificationGPoly4.y[0] = NOTIFICATION_GSGPOLY4_Y0;
- NotificationGPoly4.y[1] = NOTIFICATION_GSGPOLY4_Y1;
-800233e4: a4430016 sh v1,22(v0)
- NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2;
-800233e8: 240300e8 li v1,232
-800233ec: a4430018 sh v1,24(v0)
- NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3;
-800233f0: a443001a sh v1,26(v0)
-
- /* dprintf("Notification timer: %d.\n",NotificationTimer); */
-
- if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT)
-800233f4: 94a31c20 lhu v1,7200(a1)
- {
- if(ptrFlightData->NotificationRequest[i] == true)
- {
- // Prepare RGB data and (X,Y) coordinates for notification
- // request rectangle.
- NotificationGPoly4.r[0] = NOTIFICATION_GSGPOLY4_R0;
-800233f8: a2a03c58 sb zero,15448(s5)
- NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2;
- NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3;
-
- /* dprintf("Notification timer: %d.\n",NotificationTimer); */
-
- if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT)
-800233fc: 24630001 addiu v1,v1,1
-80023400: 3063ffff andi v1,v1,0xffff
-80023404: a4a31c20 sh v1,7200(a1)
-80023408: 2c6300fa sltiu v1,v1,250
- if(ptrFlightData->NotificationRequest[i] == true)
- {
- // Prepare RGB data and (X,Y) coordinates for notification
- // request rectangle.
- NotificationGPoly4.r[0] = NOTIFICATION_GSGPOLY4_R0;
- NotificationGPoly4.r[1] = NOTIFICATION_GSGPOLY4_R1;
-8002340c: a0400001 sb zero,1(v0)
- NotificationGPoly4.r[2] = NOTIFICATION_GSGPOLY4_R2;
-80023410: a0400002 sb zero,2(v0)
- NotificationGPoly4.r[3] = NOTIFICATION_GSGPOLY4_R3;
-80023414: a0400003 sb zero,3(v0)
-
- NotificationGPoly4.g[0] = NOTIFICATION_GSGPOLY4_G0;
- NotificationGPoly4.g[1] = NOTIFICATION_GSGPOLY4_G1;
- NotificationGPoly4.g[2] = NOTIFICATION_GSGPOLY4_G2;
-80023418: a0400006 sb zero,6(v0)
- NotificationGPoly4.g[3] = NOTIFICATION_GSGPOLY4_G3;
-8002341c: a0400007 sb zero,7(v0)
-
- NotificationGPoly4.b[0] = NOTIFICATION_GSGPOLY4_B0;
- NotificationGPoly4.b[1] = NOTIFICATION_GSGPOLY4_B1;
- NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2;
-80023420: a040000a sb zero,10(v0)
- NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3;
-80023424: a040000b sb zero,11(v0)
- NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2;
- NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3;
-
- /* dprintf("Notification timer: %d.\n",NotificationTimer); */
-
- if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT)
-80023428: 14600005 bnez v1,80023440 <GameGuiAircraftNotificationRequest+0x11c>
-8002342c: 00408021 move s0,v0
- {
- // Reset timer and notification request for current aircraft
- FirstNotification = 0;
-80023430: a2601c1e sb zero,7198(s3)
- NotificationTimer = 0;
-80023434: a4a01c20 sh zero,7200(a1)
-80023438: 10000048 b 8002355c <GameGuiAircraftNotificationRequest+0x238>
-8002343c: a0c00284 sb zero,644(a2)
- {
- if(first_entered == true)
- {
- // Prepare string for new notification request only once
- first_entered = false;
- RadioFont.max_ch_wrap = 18;
-80023440: 3c178007 lui s7,0x8007
-80023444: 26e28d78 addiu v0,s7,-29320
-80023448: 24030012 li v1,18
-8002344c: a0430032 sb v1,50(v0)
-void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset)
-{
- memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE);
- strncat( strNotificationRequest,
- ptrFlightData->strFlightNumber[offset],
- strlen(ptrFlightData->strFlightNumber[offset]) );
-80023450: 26340010 addiu s4,s1,16
- if(first_entered == true)
- {
- // Prepare string for new notification request only once
- first_entered = false;
- RadioFont.max_ch_wrap = 18;
- RadioFont.flags |= FONT_WRAP_LINE;
-80023454: 8c430034 lw v1,52(v0)
-80023458: 0080b021 move s6,a0
- //dprintf("Bubble timer: %d\n",BubbleVibrationTimer);
-}
-
-void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset)
-{
- memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE);
-8002345c: 3c128004 lui s2,0x8004
- strncat( strNotificationRequest,
- ptrFlightData->strFlightNumber[offset],
- strlen(ptrFlightData->strFlightNumber[offset]) );
-80023460: 0014a0c0 sll s4,s4,0x3
- if(first_entered == true)
- {
- // Prepare string for new notification request only once
- first_entered = false;
- RadioFont.max_ch_wrap = 18;
- RadioFont.flags |= FONT_WRAP_LINE;
-80023464: 34630002 ori v1,v1,0x2
- //dprintf("Bubble timer: %d\n",BubbleVibrationTimer);
-}
-
-void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset)
-{
- memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE);
-80023468: 240600c8 li a2,200
-8002346c: 00002821 move a1,zero
- strncat( strNotificationRequest,
- ptrFlightData->strFlightNumber[offset],
- strlen(ptrFlightData->strFlightNumber[offset]) );
-80023470: 02d4a021 addu s4,s6,s4
- //dprintf("Bubble timer: %d\n",BubbleVibrationTimer);
-}
-
-void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset)
-{
- memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE);
-80023474: 26443ad8 addiu a0,s2,15064
-80023478: 0c00d7ab jal 80035eac <memset>
-8002347c: ac430034 sw v1,52(v0)
- strncat( strNotificationRequest,
- ptrFlightData->strFlightNumber[offset],
- strlen(ptrFlightData->strFlightNumber[offset]) );
-80023480: 0c00d8af jal 800362bc <strlen>
-80023484: 02802021 move a0,s4
-}
-
-void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset)
-{
- memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE);
- strncat( strNotificationRequest,
-80023488: 00403021 move a2,v0
-8002348c: 02802821 move a1,s4
-80023490: 0c00dc6e jal 800371b8 <strncat>
-80023494: 26443ad8 addiu a0,s2,15064
- ptrFlightData->strFlightNumber[offset],
- strlen(ptrFlightData->strFlightNumber[offset]) );
-
- strcat(strNotificationRequest, " request for ");
-80023498: 3c058004 lui a1,0x8004
-8002349c: 26443ad8 addiu a0,s2,15064
-800234a0: 0c00dc56 jal 80037158 <strcat>
-800234a4: 24a506bc addiu a1,a1,1724
-
- switch(ptrFlightData->FlightDirection[offset])
-800234a8: 00112080 sll a0,s1,0x2
-800234ac: 02c42021 addu a0,s6,a0
-800234b0: 8c820000 lw v0,0(a0)
-800234b4: 24030001 li v1,1
-800234b8: 10430006 beq v0,v1,800234d4 <GameGuiAircraftNotificationRequest+0x1b0>
-800234bc: 02e0a021 move s4,s7
-800234c0: 24030002 li v1,2
-800234c4: 14430007 bne v0,v1,800234e4 <GameGuiAircraftNotificationRequest+0x1c0>
-800234c8: 3c058004 lui a1,0x8004
- {
- case DEPARTURE:
- strcat(strNotificationRequest, "departure");
- break;
- case ARRIVAL:
- strcat(strNotificationRequest, "approach");
-800234cc: 10000003 b 800234dc <GameGuiAircraftNotificationRequest+0x1b8>
-800234d0: 24a506d8 addiu a1,a1,1752
- strcat(strNotificationRequest, " request for ");
-
- switch(ptrFlightData->FlightDirection[offset])
- {
- case DEPARTURE:
- strcat(strNotificationRequest, "departure");
-800234d4: 3c058004 lui a1,0x8004
-800234d8: 24a506cc addiu a1,a1,1740
- break;
- case ARRIVAL:
- strcat(strNotificationRequest, "approach");
-800234dc: 0c00dc56 jal 80037158 <strcat>
-800234e0: 26443ad8 addiu a0,s2,15064
- break;
- }
-
- strcat(strNotificationRequest, ".");
-800234e4: 3c058004 lui a1,0x8004
-800234e8: 24a506e4 addiu a1,a1,1764
-800234ec: 0c00dc56 jal 80037158 <strcat>
-800234f0: 26443ad8 addiu a0,s2,15064
- }
-
- // Keep information about last aircraft notified...
- // so that it gets called on next cycle
- FirstNotification = i;
- GsSortGPoly4(&NotificationGPoly4);
-800234f4: 26a43c58 addiu a0,s5,15448
-800234f8: 0c00b0e6 jal 8002c398 <GsSortGPoly4>
-800234fc: a2711c1e sb s1,7198(s3)
- FontPrintText( &RadioFont,
-80023500: 96060014 lhu a2,20(s0)
-80023504: 9605000c lhu a1,12(s0)
-80023508: 24c60008 addiu a2,a2,8
-8002350c: 24a50008 addiu a1,a1,8
- }
-
- break;
- }
- }
-}
-80023510: 8fbf0034 lw ra,52(sp)
-80023514: 8fb70030 lw s7,48(sp)
-80023518: 8fb6002c lw s6,44(sp)
-8002351c: 8fb50028 lw s5,40(sp)
-80023520: 8fb30020 lw s3,32(sp)
-80023524: 8fb10018 lw s1,24(sp)
-80023528: 8fb00014 lw s0,20(sp)
-
- // Keep information about last aircraft notified...
- // so that it gets called on next cycle
- FirstNotification = i;
- GsSortGPoly4(&NotificationGPoly4);
- FontPrintText( &RadioFont,
-8002352c: 26473ad8 addiu a3,s2,15064
-80023530: 00063400 sll a2,a2,0x10
- }
-
- break;
- }
- }
-}
-80023534: 8fb2001c lw s2,28(sp)
-
- // Keep information about last aircraft notified...
- // so that it gets called on next cycle
- FirstNotification = i;
- GsSortGPoly4(&NotificationGPoly4);
- FontPrintText( &RadioFont,
-80023538: 00052c00 sll a1,a1,0x10
-8002353c: 26848d78 addiu a0,s4,-29320
- }
-
- break;
- }
- }
-}
-80023540: 8fb40024 lw s4,36(sp)
-
- // Keep information about last aircraft notified...
- // so that it gets called on next cycle
- FirstNotification = i;
- GsSortGPoly4(&NotificationGPoly4);
- FontPrintText( &RadioFont,
-80023544: 00063403 sra a2,a2,0x10
-80023548: 00052c03 sra a1,a1,0x10
-8002354c: 08008451 j 80021144 <FontPrintText>
-80023550: 27bd0038 addiu sp,sp,56
- // Set initial values to static variables
- NotificationTimer = 0;
- FirstNotification = 0;
- }
-
- for(i = FirstNotification; i < ptrFlightData->nAircraft ; i++)
-80023554: 1000ff87 b 80023374 <GameGuiAircraftNotificationRequest+0x50>
-80023558: 323100ff andi s1,s1,0xff
- }
-
- break;
- }
- }
-}
-8002355c: 8fbf0034 lw ra,52(sp)
-80023560: 8fb70030 lw s7,48(sp)
-80023564: 8fb6002c lw s6,44(sp)
-80023568: 8fb50028 lw s5,40(sp)
-8002356c: 8fb40024 lw s4,36(sp)
-80023570: 8fb30020 lw s3,32(sp)
-80023574: 8fb2001c lw s2,28(sp)
-80023578: 8fb10018 lw s1,24(sp)
-8002357c: 8fb00014 lw s0,20(sp)
-80023580: 03e00008 jr ra
-80023584: 27bd0038 addiu sp,sp,56
-
-80023588 <GameGuiPauseDialog>:
-
-bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer)
-{
-80023588: 27bdffc8 addiu sp,sp,-56
-8002358c: afb00024 sw s0,36(sp)
- GfxSaveDisplayData(&SecondDisplay);
-80023590: 3c108004 lui s0,0x8004
- }
- }
-}
-
-bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer)
-{
-80023594: afb30030 sw s3,48(sp)
-80023598: 00809821 move s3,a0
- GfxSaveDisplayData(&SecondDisplay);
-8002359c: 26043ba0 addiu a0,s0,15264
- }
- }
-}
-
-bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer)
-{
-800235a0: afbf0034 sw ra,52(sp)
-800235a4: afb2002c sw s2,44(sp)
- GfxSaveDisplayData(&SecondDisplay);
-800235a8: 0c009090 jal 80024240 <GfxSaveDisplayData>
-800235ac: afb10028 sw s1,40(sp)
-
- DrawFBRect(0, 0, X_SCREEN_RESOLUTION, VRAM_H, 0, 0, 0);
-800235b0: afa00018 sw zero,24(sp)
-800235b4: afa00014 sw zero,20(sp)
-800235b8: afa00010 sw zero,16(sp)
-800235bc: 24070200 li a3,512
-800235c0: 24060180 li a2,384
-800235c4: 00002821 move a1,zero
-800235c8: 0c00bd2f jal 8002f4bc <DrawFBRect>
-800235cc: 00002021 move a0,zero
-
- while(GfxIsGPUBusy() == true);
-800235d0: 0c00901d jal 80024074 <GfxIsGPUBusy>
-800235d4: 00000000 nop
-800235d8: 1440fffd bnez v0,800235d0 <GameGuiPauseDialog+0x48>
-800235dc: 00000000 nop
- return true;
- }
-
- GfxSortSprite(&SecondDisplay);
-
- GsSortGPoly4(&PauseRect);
-800235e0: 3c118004 lui s1,0x8004
- if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
- {
- return true;
- }
-
- GfxSortSprite(&SecondDisplay);
-800235e4: 26103ba0 addiu s0,s0,15264
-
- GsSortGPoly4(&PauseRect);
-800235e8: 26313bcc addiu s1,s1,15308
-
- while(GfxIsGPUBusy() == true);
-
- do
- {
- if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true)
-800235ec: 8e62007c lw v0,124(s3)
-800235f0: 00000000 nop
-800235f4: 0040f809 jalr v0
-800235f8: 24040040 li a0,64
-800235fc: 1440000d bnez v0,80023634 <GameGuiPauseDialog+0xac>
-80023600: 00409021 move s2,v0
- {
- return true;
- }
-
- GfxSortSprite(&SecondDisplay);
-80023604: 0c0090d2 jal 80024348 <GfxSortSprite>
-80023608: 02002021 move a0,s0
-
- GsSortGPoly4(&PauseRect);
-8002360c: 0c00b0e6 jal 8002c398 <GsSortGPoly4>
-80023610: 02202021 move a0,s1
-
- GfxDrawScene_Slow();
-80023614: 0c009030 jal 800240c0 <GfxDrawScene_Slow>
-80023618: 00000000 nop
-
- }while(ptrPlayer->PadKeyReleased_Callback(PAD_START) == false);
-8002361c: 8e62007c lw v0,124(s3)
-80023620: 00000000 nop
-80023624: 0040f809 jalr v0
-80023628: 24040800 li a0,2048
-8002362c: 1040ffef beqz v0,800235ec <GameGuiPauseDialog+0x64>
-80023630: 00000000 nop
-
- return false;
-}
-80023634: 8fbf0034 lw ra,52(sp)
-80023638: 02401021 move v0,s2
-8002363c: 8fb30030 lw s3,48(sp)
-80023640: 8fb2002c lw s2,44(sp)
-80023644: 8fb10028 lw s1,40(sp)
-80023648: 8fb00024 lw s0,36(sp)
-8002364c: 03e00008 jr ra
-80023650: 27bd0038 addiu sp,sp,56
-
-80023654 <GameGuiActiveAircraftList>:
-
-void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80023654: 27bdffe0 addiu sp,sp,-32
- uint8_t i;
- uint8_t j = 0;
-
- // Clear all pointers for aircraft data first.
- // Then, rebuild aircraft list for player.
- memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT);
-80023658: 24060020 li a2,32
-
- return false;
-}
-
-void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-8002365c: afb10018 sw s1,24(sp)
-80023660: afb00014 sw s0,20(sp)
-80023664: 00808821 move s1,a0
-80023668: 00a08021 move s0,a1
- uint8_t i;
- uint8_t j = 0;
-
- // Clear all pointers for aircraft data first.
- // Then, rebuild aircraft list for player.
- memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT);
-8002366c: 24840007 addiu a0,a0,7
-
- return false;
-}
-
-void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80023670: afbf001c sw ra,28(sp)
- uint8_t i;
- uint8_t j = 0;
-
- // Clear all pointers for aircraft data first.
- // Then, rebuild aircraft list for player.
- memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT);
-80023674: 0c00d7ab jal 80035eac <memset>
-80023678: 00002821 move a1,zero
- ptrPlayer->ActiveAircraft = 0;
-8002367c: a220002c sb zero,44(s1)
-80023680: 26050204 addiu a1,s0,516
-}
-
-void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint8_t i;
- uint8_t j = 0;
-80023684: 00001821 move v1,zero
- // Clear all pointers for aircraft data first.
- // Then, rebuild aircraft list for player.
- memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT);
- ptrPlayer->ActiveAircraft = 0;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT; i++)
-80023688: 00001021 move v0,zero
-8002368c: 24060020 li a2,32
- {
- if( (ptrFlightData->State[i] != STATE_IDLE)
-80023690: 8ca40000 lw a0,0(a1)
-80023694: 00000000 nop
-80023698: 1080000e beqz a0,800236d4 <GameGuiActiveAircraftList+0x80>
-8002369c: 00000000 nop
- &&
-800236a0: 8ca4fdfc lw a0,-516(a1)
-800236a4: 8e270028 lw a3,40(s1)
-800236a8: 00000000 nop
-800236ac: 00872024 and a0,a0,a3
-800236b0: 10800008 beqz a0,800236d4 <GameGuiActiveAircraftList+0x80>
-800236b4: 24640001 addiu a0,v1,1
- (ptrFlightData->FlightDirection[i] & ptrPlayer->FlightDirection) )
- {
- ptrPlayer->ActiveAircraftList[j++] = i;
-800236b8: 02231821 addu v1,s1,v1
-800236bc: a0620007 sb v0,7(v1)
- ptrPlayer->ActiveAircraft++;
-800236c0: 9223002c lbu v1,44(s1)
-800236c4: 00000000 nop
-800236c8: 24630001 addiu v1,v1,1
-800236cc: a223002c sb v1,44(s1)
- {
- if( (ptrFlightData->State[i] != STATE_IDLE)
- &&
- (ptrFlightData->FlightDirection[i] & ptrPlayer->FlightDirection) )
- {
- ptrPlayer->ActiveAircraftList[j++] = i;
-800236d0: 308300ff andi v1,a0,0xff
- // Clear all pointers for aircraft data first.
- // Then, rebuild aircraft list for player.
- memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT);
- ptrPlayer->ActiveAircraft = 0;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT; i++)
-800236d4: 24420001 addiu v0,v0,1
-800236d8: 304200ff andi v0,v0,0xff
-800236dc: 1446ffec bne v0,a2,80023690 <GameGuiActiveAircraftList+0x3c>
-800236e0: 24a50004 addiu a1,a1,4
- {
- ptrPlayer->ActiveAircraftList[j++] = i;
- ptrPlayer->ActiveAircraft++;
- }
- }
-}
-800236e4: 8fbf001c lw ra,28(sp)
-800236e8: 8fb10018 lw s1,24(sp)
-800236ec: 8fb00014 lw s0,20(sp)
-800236f0: 03e00008 jr ra
-800236f4: 27bd0020 addiu sp,sp,32
-
-800236f8 <GameGuiActiveAircraftPage>:
-
-void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- while(ptrPlayer->ActiveAircraft < ptrPlayer->SelectedAircraft)
-800236f8: 9085002c lbu a1,44(a0)
-800236fc: 9082002e lbu v0,46(a0)
-80023700: 00000000 nop
-80023704: 00a2182b sltu v1,a1,v0
-80023708: 10600003 beqz v1,80023718 <GameGuiActiveAircraftPage+0x20>
-8002370c: 2442ffff addiu v0,v0,-1
- {
- ptrPlayer->SelectedAircraft--;
-80023710: 1000fffa b 800236fc <GameGuiActiveAircraftPage+0x4>
-80023714: a082002e sb v0,46(a0)
- }
-
- while(ptrPlayer->ActiveAircraft < (uint8_t)(GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * ptrPlayer->FlightDataPage) )
-80023718: 9083002d lbu v1,45(a0)
-8002371c: 00000000 nop
-80023720: 00031080 sll v0,v1,0x2
-80023724: 00621021 addu v0,v1,v0
-80023728: 304200ff andi v0,v0,0xff
-8002372c: 00a2102b sltu v0,a1,v0
-80023730: 10400003 beqz v0,80023740 <GameGuiActiveAircraftPage+0x48>
-80023734: 2463ffff addiu v1,v1,-1
- {
- ptrPlayer->FlightDataPage--;
-80023738: 1000fff7 b 80023718 <GameGuiActiveAircraftPage+0x20>
-8002373c: a083002d sb v1,45(a0)
- }
-
- if(ptrPlayer->ShowAircraftData == true)
-80023740: 90820001 lbu v0,1(a0)
-80023744: 00000000 nop
-80023748: 10400056 beqz v0,800238a4 <GameGuiActiveAircraftPage+0x1ac>
-8002374c: 00000000 nop
- }
- }
-}
-
-void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80023750: 27bdffe8 addiu sp,sp,-24
- ptrPlayer->FlightDataPage--;
- }
-
- if(ptrPlayer->ShowAircraftData == true)
- {
- if(ptrPlayer->PadKeyReleased_Callback(PAD_DOWN) == true)
-80023754: 8c82007c lw v0,124(a0)
- }
- }
-}
-
-void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80023758: afb00010 sw s0,16(sp)
-8002375c: afbf0014 sw ra,20(sp)
-80023760: 00808021 move s0,a0
- ptrPlayer->FlightDataPage--;
- }
-
- if(ptrPlayer->ShowAircraftData == true)
- {
- if(ptrPlayer->PadKeyReleased_Callback(PAD_DOWN) == true)
-80023764: 0040f809 jalr v0
-80023768: 24044000 li a0,16384
-8002376c: 10400010 beqz v0,800237b0 <GameGuiActiveAircraftPage+0xb8>
-80023770: 00000000 nop
- {
- if( ( (ptrPlayer->SelectedAircraft + 1) < ptrPlayer->ActiveAircraft)
-80023774: 9202002e lbu v0,46(s0)
-80023778: 9203002c lbu v1,44(s0)
-8002377c: 24420001 addiu v0,v0,1
-80023780: 0043182a slt v1,v0,v1
-80023784: 1060000a beqz v1,800237b0 <GameGuiActiveAircraftPage+0xb8>
-80023788: 00000000 nop
- &&
-8002378c: 9203002d lbu v1,45(s0)
-80023790: 00000000 nop
-80023794: 24630001 addiu v1,v1,1
-80023798: 00032080 sll a0,v1,0x2
-8002379c: 00831821 addu v1,a0,v1
-800237a0: 0043182a slt v1,v0,v1
-800237a4: 10600002 beqz v1,800237b0 <GameGuiActiveAircraftPage+0xb8>
-800237a8: 00000000 nop
- ( (ptrPlayer->SelectedAircraft + 1) < ( (ptrPlayer->FlightDataPage + 1) * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE) ) )
- {
- ptrPlayer->SelectedAircraft++;
-800237ac: a202002e sb v0,46(s0)
- }
- }
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_UP) == true)
-800237b0: 8e02007c lw v0,124(s0)
-800237b4: 00000000 nop
-800237b8: 0040f809 jalr v0
-800237bc: 24041000 li a0,4096
-800237c0: 10400009 beqz v0,800237e8 <GameGuiActiveAircraftPage+0xf0>
-800237c4: 00000000 nop
- {
- if(ptrPlayer->SelectedAircraft > ( (ptrPlayer->FlightDataPage) * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE) )
-800237c8: 9204002d lbu a0,45(s0)
-800237cc: 9203002e lbu v1,46(s0)
-800237d0: 00041080 sll v0,a0,0x2
-800237d4: 00441021 addu v0,v0,a0
-800237d8: 0043102a slt v0,v0,v1
-800237dc: 10400002 beqz v0,800237e8 <GameGuiActiveAircraftPage+0xf0>
-800237e0: 2463ffff addiu v1,v1,-1
- {
- ptrPlayer->SelectedAircraft--;
-800237e4: a203002e sb v1,46(s0)
- }
- }
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_RIGHT) == true)
-800237e8: 8e02007c lw v0,124(s0)
-800237ec: 00000000 nop
-800237f0: 0040f809 jalr v0
-800237f4: 24042000 li a0,8192
-800237f8: 10400011 beqz v0,80023840 <GameGuiActiveAircraftPage+0x148>
-800237fc: 00000000 nop
- {
- if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) )
-80023800: 9202002d lbu v0,45(s0)
-80023804: 9204002c lbu a0,44(s0)
-80023808: 24420001 addiu v0,v0,1
-8002380c: 00021880 sll v1,v0,0x2
-80023810: 00621821 addu v1,v1,v0
-80023814: 0064182a slt v1,v1,a0
-80023818: 10600009 beqz v1,80023840 <GameGuiActiveAircraftPage+0x148>
-8002381c: 304200ff andi v0,v0,0xff
- {
- ptrPlayer->FlightDataPage++;
- ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
-80023820: 00022880 sll a1,v0,0x2
-80023824: 00452821 addu a1,v0,a1
-80023828: 30a500ff andi a1,a1,0xff
- dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft);
-8002382c: 3c048004 lui a0,0x8004
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_RIGHT) == true)
- {
- if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) )
- {
- ptrPlayer->FlightDataPage++;
-80023830: a202002d sb v0,45(s0)
- ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
-80023834: a205002e sb a1,46(s0)
- dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft);
-80023838: 0c00ed8f jal 8003b63c <printf>
-8002383c: 248406e8 addiu a0,a0,1768
- }
- }
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_LEFT) == true)
-80023840: 8e02007c lw v0,124(s0)
-80023844: 00000000 nop
-80023848: 0040f809 jalr v0
-8002384c: 34048000 li a0,0x8000
-80023850: 10400011 beqz v0,80023898 <GameGuiActiveAircraftPage+0x1a0>
-80023854: 00000000 nop
- {
- if(ptrPlayer->FlightDataPage != 0)
-80023858: 9202002d lbu v0,45(s0)
-8002385c: 00000000 nop
-80023860: 1040000d beqz v0,80023898 <GameGuiActiveAircraftPage+0x1a0>
-80023864: 2442ffff addiu v0,v0,-1
- {
- ptrPlayer->FlightDataPage--;
-80023868: 304200ff andi v0,v0,0xff
- ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
-8002386c: 00022880 sll a1,v0,0x2
-80023870: 00452821 addu a1,v0,a1
-80023874: 30a500ff andi a1,a1,0xff
-
- if(ptrPlayer->PadKeyReleased_Callback(PAD_LEFT) == true)
- {
- if(ptrPlayer->FlightDataPage != 0)
- {
- ptrPlayer->FlightDataPage--;
-80023878: a202002d sb v0,45(s0)
- ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
-8002387c: a205002e sb a1,46(s0)
- dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft);
- }
- }
- }
-}
-80023880: 8fbf0014 lw ra,20(sp)
-80023884: 8fb00010 lw s0,16(sp)
- {
- if(ptrPlayer->FlightDataPage != 0)
- {
- ptrPlayer->FlightDataPage--;
- ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
- dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft);
-80023888: 3c048004 lui a0,0x8004
-8002388c: 248406e8 addiu a0,a0,1768
-80023890: 0800ed8f j 8003b63c <printf>
-80023894: 27bd0018 addiu sp,sp,24
- }
- }
- }
-}
-80023898: 8fbf0014 lw ra,20(sp)
-8002389c: 8fb00010 lw s0,16(sp)
-800238a0: 27bd0018 addiu sp,sp,24
-800238a4: 03e00008 jr ra
-800238a8: 00000000 nop
-
-800238ac <GameGuiAircraftList>:
-void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- short y_offset;
- uint8_t page_aircraft;
-
- if(ptrPlayer->ShowAircraftData == true)
-800238ac: 90820001 lbu v0,1(a0)
-800238b0: 00000000 nop
-800238b4: 104000f1 beqz v0,80023c7c <GameGuiAircraftList+0x3d0>
-800238b8: 24020028 li v0,40
- }
- }
-}
-
-void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-800238bc: 27bdffb8 addiu sp,sp,-72
-800238c0: afb10024 sw s1,36(sp)
-800238c4: 00808821 move s1,a0
-
- if(ptrPlayer->ShowAircraftData == true)
- {
- // Prepare RGB data and (X,Y) coordinates for aircraft
- // data list request rectangle.
- AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0;
-800238c8: 3c048004 lui a0,0x8004
-800238cc: a0803c38 sb zero,15416(a0)
- AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1;
-800238d0: 24843c38 addiu a0,a0,15416
- }
- }
-}
-
-void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-800238d4: afbf0044 sw ra,68(sp)
-800238d8: afb50034 sw s5,52(sp)
-800238dc: afb40030 sw s4,48(sp)
-800238e0: afb00020 sw s0,32(sp)
-800238e4: afbe0040 sw s8,64(sp)
-800238e8: afb7003c sw s7,60(sp)
-800238ec: afb60038 sw s6,56(sp)
-800238f0: afb3002c sw s3,44(sp)
-800238f4: afb20028 sw s2,40(sp)
- AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0;
- AircraftDataGPoly4.g[1] = AIRCRAFT_DATA_GSGPOLY4_G1;
- AircraftDataGPoly4.g[2] = AIRCRAFT_DATA_GSGPOLY4_G2;
- AircraftDataGPoly4.g[3] = AIRCRAFT_DATA_GSGPOLY4_G3;
-
- AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0;
-800238f8: a0820008 sb v0,8(a0)
- AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1;
-800238fc: a0820009 sb v0,9(a0)
- AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2;
- AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3;
-
- AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80023900: 8c82001c lw v0,28(a0)
-
- AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0;
-80023904: 24030060 li v1,96
- AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0;
- AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1;
- AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2;
- AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3;
-
- AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80023908: 34420010 ori v0,v0,0x10
-8002390c: ac82001c sw v0,28(a0)
-
- AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0;
- AircraftDataGPoly4.x[1] = AIRCRAFT_DATA_GSGPOLY4_X1;
-80023910: 24020120 li v0,288
-80023914: a482000e sh v0,14(a0)
- AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2;
- AircraftDataGPoly4.x[3] = AIRCRAFT_DATA_GSGPOLY4_X3;
-80023918: a4820012 sh v0,18(a0)
-
- AircraftDataGPoly4.y[0] = AIRCRAFT_DATA_GSGPOLY4_Y0;
-8002391c: 24020018 li v0,24
-80023920: a4820014 sh v0,20(a0)
- AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1;
-80023924: a4820016 sh v0,22(a0)
- AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0;
- AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1;
- AircraftDataGPoly4.r[2] = AIRCRAFT_DATA_GSGPOLY4_R2;
- AircraftDataGPoly4.r[3] = AIRCRAFT_DATA_GSGPOLY4_R3;
-
- AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0;
-80023928: 2410ff80 li s0,-128
- AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2;
- AircraftDataGPoly4.x[3] = AIRCRAFT_DATA_GSGPOLY4_X3;
-
- AircraftDataGPoly4.y[0] = AIRCRAFT_DATA_GSGPOLY4_Y0;
- AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1;
- AircraftDataGPoly4.y[2] = AIRCRAFT_DATA_GSGPOLY4_Y2;
-8002392c: 240200d8 li v0,216
-80023930: a4820018 sh v0,24(a0)
- if(ptrPlayer->ShowAircraftData == true)
- {
- // Prepare RGB data and (X,Y) coordinates for aircraft
- // data list request rectangle.
- AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0;
- AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1;
-80023934: a0800001 sb zero,1(a0)
- AircraftDataGPoly4.r[2] = AIRCRAFT_DATA_GSGPOLY4_R2;
-80023938: a0800002 sb zero,2(a0)
- AircraftDataGPoly4.r[3] = AIRCRAFT_DATA_GSGPOLY4_R3;
-8002393c: a0800003 sb zero,3(a0)
-
- AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0;
-80023940: a0900004 sb s0,4(a0)
- AircraftDataGPoly4.g[1] = AIRCRAFT_DATA_GSGPOLY4_G1;
-80023944: a0900005 sb s0,5(a0)
- AircraftDataGPoly4.g[2] = AIRCRAFT_DATA_GSGPOLY4_G2;
-80023948: a0800006 sb zero,6(a0)
- AircraftDataGPoly4.g[3] = AIRCRAFT_DATA_GSGPOLY4_G3;
-8002394c: a0800007 sb zero,7(a0)
-
- AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0;
- AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1;
- AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2;
-80023950: a080000a sb zero,10(a0)
- AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3;
-80023954: a080000b sb zero,11(a0)
-
- AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0;
-80023958: a483000c sh v1,12(a0)
- AircraftDataGPoly4.x[1] = AIRCRAFT_DATA_GSGPOLY4_X1;
- AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2;
-8002395c: a4830010 sh v1,16(a0)
-80023960: 00a0a821 move s5,a1
- AircraftDataGPoly4.y[0] = AIRCRAFT_DATA_GSGPOLY4_Y0;
- AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1;
- AircraftDataGPoly4.y[2] = AIRCRAFT_DATA_GSGPOLY4_Y2;
- AircraftDataGPoly4.y[3] = AIRCRAFT_DATA_GSGPOLY4_Y3;
-
- GsSortGPoly4(&AircraftDataGPoly4);
-80023964: 0c00b0e6 jal 8002c398 <GsSortGPoly4>
-80023968: a482001a sh v0,26(a0)
-
- if(ptrPlayer->ActiveAircraft != 0)
-8002396c: 9222002c lbu v0,44(s1)
-80023970: 00000000 nop
-80023974: 104000a5 beqz v0,80023c0c <GameGuiAircraftList+0x360>
-80023978: 3c148007 lui s4,0x8007
- {
- SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0;
-8002397c: 3c048004 lui a0,0x8004
-80023980: a0903c18 sb s0,15384(a0)
- SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1;
-80023984: 24843c18 addiu a0,a0,15384
- SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0;
- SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1;
- SelectedAircraftGPoly4.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2;
- SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3;
-
- SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80023988: 8c82001c lw v0,28(a0)
- SelectedAircraftGPoly4.x[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X2;
- SelectedAircraftGPoly4.x[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X3;
-
- page_aircraft = (ptrPlayer->SelectedAircraft) - (ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE);
-
- y_offset = (short)(page_aircraft * AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H);
-8002398c: 9223002d lbu v1,45(s1)
- SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0;
- SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1;
- SelectedAircraftGPoly4.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2;
- SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3;
-
- SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80023990: 34420010 ori v0,v0,0x10
-80023994: ac82001c sw v0,28(a0)
-
- SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0;
-80023998: 24020068 li v0,104
-8002399c: a482000c sh v0,12(a0)
- SelectedAircraftGPoly4.x[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1;
- SelectedAircraftGPoly4.x[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X2;
-800239a0: a4820010 sh v0,16(a0)
- SelectedAircraftGPoly4.x[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X3;
-
- page_aircraft = (ptrPlayer->SelectedAircraft) - (ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE);
-
- y_offset = (short)(page_aircraft * AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H);
-800239a4: 00031080 sll v0,v1,0x2
-800239a8: 00431021 addu v0,v0,v1
-800239ac: 9223002e lbu v1,46(s1)
- GsSortGPoly4(&AircraftDataGPoly4);
-
- if(ptrPlayer->ActiveAircraft != 0)
- {
- SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0;
- SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1;
-800239b0: a0900001 sb s0,1(a0)
- SelectedAircraftGPoly4.x[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X2;
- SelectedAircraftGPoly4.x[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X3;
-
- page_aircraft = (ptrPlayer->SelectedAircraft) - (ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE);
-
- y_offset = (short)(page_aircraft * AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H);
-800239b4: 00621023 subu v0,v1,v0
-800239b8: 00021140 sll v0,v0,0x5
-800239bc: 30421fe0 andi v0,v0,0x1fe0
- /*dprintf("ptrPlayer->ActiveAircraft = %d\n",ptrPlayer->ActiveAircraft);
- dprintf("ptrPlayer->SelectedAircraft = %d\n",ptrPlayer->SelectedAircraft);
- dprintf("ptrPlayer->FlightDataPage = %d\n",ptrPlayer->FlightDataPage);
- dprintf("y_offset = %d\n",y_offset);*/
-
- SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset;
-800239c0: 24430020 addiu v1,v0,32
- SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0;
- SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1;
- SelectedAircraftGPoly4.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2;
- SelectedAircraftGPoly4.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3;
-
- SelectedAircraftGPoly4.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0;
-800239c4: a0900004 sb s0,4(a0)
- dprintf("ptrPlayer->FlightDataPage = %d\n",ptrPlayer->FlightDataPage);
- dprintf("y_offset = %d\n",y_offset);*/
-
- SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset;
- SelectedAircraftGPoly4.y[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y1 + y_offset;
- SelectedAircraftGPoly4.y[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y2 + y_offset;
-800239c8: 24420040 addiu v0,v0,64
- SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1;
- SelectedAircraftGPoly4.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2;
- SelectedAircraftGPoly4.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3;
-
- SelectedAircraftGPoly4.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0;
- SelectedAircraftGPoly4.g[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G1;
-800239cc: a0900005 sb s0,5(a0)
- SelectedAircraftGPoly4.g[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G2;
- SelectedAircraftGPoly4.g[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G3;
-
- SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0;
-800239d0: a0900008 sb s0,8(a0)
- SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1;
-800239d4: a0900009 sb s0,9(a0)
- SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3;
-
- SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0;
- SelectedAircraftGPoly4.x[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1;
-800239d8: 24100118 li s0,280
- /*dprintf("ptrPlayer->ActiveAircraft = %d\n",ptrPlayer->ActiveAircraft);
- dprintf("ptrPlayer->SelectedAircraft = %d\n",ptrPlayer->SelectedAircraft);
- dprintf("ptrPlayer->FlightDataPage = %d\n",ptrPlayer->FlightDataPage);
- dprintf("y_offset = %d\n",y_offset);*/
-
- SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset;
-800239dc: a4830014 sh v1,20(a0)
- SelectedAircraftGPoly4.y[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y1 + y_offset;
-800239e0: a4830016 sh v1,22(a0)
- SelectedAircraftGPoly4.y[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y2 + y_offset;
-800239e4: a4820018 sh v0,24(a0)
- SelectedAircraftGPoly4.y[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y3 + y_offset;
-800239e8: a482001a sh v0,26(a0)
-
- if(ptrPlayer->ActiveAircraft != 0)
- {
- SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0;
- SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1;
- SelectedAircraftGPoly4.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2;
-800239ec: a0800002 sb zero,2(a0)
- SelectedAircraftGPoly4.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3;
-800239f0: a0800003 sb zero,3(a0)
-
- SelectedAircraftGPoly4.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0;
- SelectedAircraftGPoly4.g[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G1;
- SelectedAircraftGPoly4.g[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G2;
-800239f4: a0800006 sb zero,6(a0)
- SelectedAircraftGPoly4.g[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G3;
-800239f8: a0800007 sb zero,7(a0)
-
- SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0;
- SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1;
- SelectedAircraftGPoly4.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2;
-800239fc: a080000a sb zero,10(a0)
- SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3;
-80023a00: a080000b sb zero,11(a0)
-
- SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0;
- SelectedAircraftGPoly4.x[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1;
-80023a04: a490000e sh s0,14(a0)
- SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset;
- SelectedAircraftGPoly4.y[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y1 + y_offset;
- SelectedAircraftGPoly4.y[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y2 + y_offset;
- SelectedAircraftGPoly4.y[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y3 + y_offset;
-
- GsSortGPoly4(&SelectedAircraftGPoly4);
-80023a08: 0c00b0e6 jal 8002c398 <GsSortGPoly4>
-80023a0c: a4900012 sh s0,18(a0)
-
- if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) )
-80023a10: 9222002d lbu v0,45(s1)
-80023a14: 9223002c lbu v1,44(s1)
-80023a18: 24420001 addiu v0,v0,1
-80023a1c: 00022080 sll a0,v0,0x2
-80023a20: 00821021 addu v0,a0,v0
-80023a24: 0043102a slt v0,v0,v1
-80023a28: 10400011 beqz v0,80023a70 <GameGuiAircraftList+0x1c4>
-80023a2c: 3c048004 lui a0,0x8004
- {
- ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X;
- ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y;
-80023a30: 24020070 li v0,112
-
- GsSortGPoly4(&SelectedAircraftGPoly4);
-
- if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) )
- {
- ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X;
-80023a34: a4903bec sh s0,15340(a0)
- ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y;
-80023a38: 24843bec addiu a0,a0,15340
-80023a3c: a4820002 sh v0,2(a0)
-
- ArrowsSpr.attribute |= GFX_1HZ_FLASH;
-80023a40: 8c820014 lw v0,20(a0)
-80023a44: 00000000 nop
-80023a48: 34420080 ori v0,v0,0x80
-80023a4c: ac820014 sw v0,20(a0)
-
- ArrowsSpr.u = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_U;
-80023a50: 24020034 li v0,52
-80023a54: a0820004 sb v0,4(a0)
- ArrowsSpr.v = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_V;
-80023a58: 24020030 li v0,48
-80023a5c: a0820005 sb v0,5(a0)
-
- ArrowsSpr.w = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE;
-80023a60: 24020008 li v0,8
-80023a64: a4820006 sh v0,6(a0)
- ArrowsSpr.h = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE;
-
- GfxSortSprite(&ArrowsSpr);
-80023a68: 0c0090d2 jal 80024348 <GfxSortSprite>
-80023a6c: a4820008 sh v0,8(a0)
- }
-
- if(ptrPlayer->FlightDataPage != 0)
-80023a70: 9222002d lbu v0,45(s1)
-80023a74: 00000000 nop
-80023a78: 10400012 beqz v0,80023ac4 <GameGuiAircraftList+0x218>
-80023a7c: 3c048004 lui a0,0x8004
- {
- ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_X;
-80023a80: 24020060 li v0,96
-80023a84: a4823bec sh v0,15340(a0)
- ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y;
-80023a88: 24843bec addiu a0,a0,15340
-80023a8c: 24020070 li v0,112
-80023a90: a4820002 sh v0,2(a0)
-
- ArrowsSpr.attribute |= GFX_1HZ_FLASH;
-80023a94: 8c820014 lw v0,20(a0)
-80023a98: 00000000 nop
-80023a9c: 34420080 ori v0,v0,0x80
-80023aa0: ac820014 sw v0,20(a0)
-
- ArrowsSpr.u = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_U;
-80023aa4: 2402002c li v0,44
-80023aa8: a0820004 sb v0,4(a0)
- ArrowsSpr.v = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_V;
-80023aac: 24020030 li v0,48
-80023ab0: a0820005 sb v0,5(a0)
-
- ArrowsSpr.w = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE;
-80023ab4: 24020008 li v0,8
-80023ab8: a4820006 sh v0,6(a0)
- ArrowsSpr.h = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE;
-
- GfxSortSprite(&ArrowsSpr);
-80023abc: 0c0090d2 jal 80024348 <GfxSortSprite>
-80023ac0: a4820008 sh v0,8(a0)
- FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock);
-}
-
-void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint8_t init_flight = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
-80023ac4: 9230002d lbu s0,45(s1)
- uint8_t i;
- uint8_t j;
-
- FontSetFlags(&SmallFont,FONT_NOFLAGS);
-80023ac8: 00002821 move a1,zero
- FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock);
-}
-
-void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint8_t init_flight = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
-80023acc: 00101080 sll v0,s0,0x2
- uint8_t i;
- uint8_t j;
-
- FontSetFlags(&SmallFont,FONT_NOFLAGS);
-80023ad0: 26848d38 addiu a0,s4,-29384
-80023ad4: 0c008441 jal 80021104 <FontSetFlags>
-80023ad8: 00508021 addu s0,v0,s0
- AIRCRAFT_DATA_DIRECTION_X,
- AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- "Arrival" );
- break;
- case DEPARTURE:
- FontPrintText( &SmallFont,
-80023adc: 3c028004 lui v0,0x8004
-80023ae0: 24420700 addiu v0,v0,1792
-80023ae4: 3c138007 lui s3,0x8007
- FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock);
-}
-
-void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint8_t init_flight = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
-80023ae8: 321000ff andi s0,s0,0xff
- uint8_t i;
- uint8_t j;
-
- FontSetFlags(&SmallFont,FONT_NOFLAGS);
-80023aec: 24120030 li s2,48
- AIRCRAFT_DATA_DIRECTION_X,
- AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- "Arrival" );
- break;
- case DEPARTURE:
- FontPrintText( &SmallFont,
-80023af0: afa20018 sw v0,24(sp)
-80023af4: 26738d38 addiu s3,s3,-29384
- ptrFlightData->strFlightNumber[i] );
-
- switch(ptrFlightData->FlightDirection[i])
- {
- case ARRIVAL:
- FontPrintText( &SmallFont,
-80023af8: 3c1e8004 lui s8,0x8004
- uint8_t i;
- uint8_t j;
-
- FontSetFlags(&SmallFont,FONT_NOFLAGS);
-
- for(i = init_flight ; i < ptrPlayer->ActiveAircraft ; i++)
-80023afc: 9222002c lbu v0,44(s1)
-80023b00: 00000000 nop
-80023b04: 0202102b sltu v0,s0,v0
-80023b08: 10400051 beqz v0,80023c50 <GameGuiAircraftList+0x3a4>
-80023b0c: 240200d0 li v0,208
- {
- j = i - init_flight;
-
- if(j >= GAME_GUI_AIRCRAFT_DATA_MAX_PAGE)
-80023b10: 1242004f beq s2,v0,80023c50 <GameGuiAircraftList+0x3a4>
-80023b14: 26070010 addiu a3,s0,16
-80023b18: 2657fff8 addiu s7,s2,-8
- }
-
- FontPrintText( &SmallFont,
- AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_X,
- AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- ptrFlightData->strFlightNumber[i] );
-80023b1c: 000738c0 sll a3,a3,0x3
-80023b20: 0010b080 sll s6,s0,0x2
- if(j >= GAME_GUI_AIRCRAFT_DATA_MAX_PAGE)
- {
- break;
- }
-
- FontPrintText( &SmallFont,
-80023b24: 02a73821 addu a3,s5,a3
-80023b28: 02e03021 move a2,s7
-80023b2c: 24050070 li a1,112
-80023b30: 26848d38 addiu a0,s4,-29384
-80023b34: 0c008451 jal 80021144 <FontPrintText>
-80023b38: 02b6b021 addu s6,s5,s6
- AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_X,
- AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- ptrFlightData->strFlightNumber[i] );
-
- switch(ptrFlightData->FlightDirection[i])
-80023b3c: 8ec20000 lw v0,0(s6)
-80023b40: 24030001 li v1,1
-80023b44: 10430005 beq v0,v1,80023b5c <GameGuiAircraftList+0x2b0>
-80023b48: 24030002 li v1,2
-80023b4c: 10430004 beq v0,v1,80023b60 <GameGuiAircraftList+0x2b4>
-80023b50: 27c70550 addiu a3,s8,1360
- break;
- default:
- break;
- }
-
- FontSetFlags(&SmallFont, FONT_2HZ_FLASH);
-80023b54: 10000007 b 80023b74 <GameGuiAircraftList+0x2c8>
-80023b58: 24050010 li a1,16
- AIRCRAFT_DATA_DIRECTION_X,
- AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- "Arrival" );
- break;
- case DEPARTURE:
- FontPrintText( &SmallFont,
-80023b5c: 8fa70018 lw a3,24(sp)
-80023b60: 02403021 move a2,s2
-80023b64: 24050070 li a1,112
-80023b68: 0c008451 jal 80021144 <FontPrintText>
-80023b6c: 02602021 move a0,s3
- break;
- default:
- break;
- }
-
- FontSetFlags(&SmallFont, FONT_2HZ_FLASH);
-80023b70: 24050010 li a1,16
-80023b74: 0c008441 jal 80021104 <FontSetFlags>
-80023b78: 26848d38 addiu a0,s4,-29384
-
- switch(ptrFlightData->State[i])
-80023b7c: 8ec20204 lw v0,516(s6)
-80023b80: 24030005 li v1,5
-80023b84: 10430008 beq v0,v1,80023ba8 <GameGuiAircraftList+0x2fc>
-80023b88: 24030006 li v1,6
-80023b8c: 10430009 beq v0,v1,80023bb4 <GameGuiAircraftList+0x308>
-80023b90: 24030002 li v1,2
-80023b94: 1443000e bne v0,v1,80023bd0 <GameGuiAircraftList+0x324>
-80023b98: 00002821 move a1,zero
- AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- "Landing" );
- break;
-
- case STATE_TAXIING:
- FontPrintText( &SmallFont,
-80023b9c: 3c078004 lui a3,0x8004
-80023ba0: 10000006 b 80023bbc <GameGuiAircraftList+0x310>
-80023ba4: 24e7058c addiu a3,a3,1420
- FontSetFlags(&SmallFont, FONT_2HZ_FLASH);
-
- switch(ptrFlightData->State[i])
- {
- case STATE_FINAL:
- FontPrintText( &SmallFont,
-80023ba8: 3c078004 lui a3,0x8004
-80023bac: 10000003 b 80023bbc <GameGuiAircraftList+0x310>
-80023bb0: 24e7070c addiu a3,a3,1804
- AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- "Taxiing" );
- break;
-
- case STATE_LANDED:
- FontPrintText( &SmallFont,
-80023bb4: 3c078004 lui a3,0x8004
-80023bb8: 24e70714 addiu a3,a3,1812
-80023bbc: 02403021 move a2,s2
-80023bc0: 240500b0 li a1,176
-80023bc4: 0c008451 jal 80021144 <FontPrintText>
-80023bc8: 02602021 move a0,s3
-
- default:
- break;
- }
-
- FontSetFlags(&SmallFont, FONT_NOFLAGS);
-80023bcc: 00002821 move a1,zero
-80023bd0: 0c008441 jal 80021104 <FontSetFlags>
-80023bd4: 26848d38 addiu a0,s4,-29384
-
- FontPrintText( &SmallFont,
- AIRCRAFT_DATA_PASSENGERS_X,
- AIRCRAFT_DATA_PASSENGERS_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
- "%d pax.",
- ptrFlightData->Passengers[i] );
-80023bd8: 02b01021 addu v0,s5,s0
- break;
- }
-
- FontSetFlags(&SmallFont, FONT_NOFLAGS);
-
- FontPrintText( &SmallFont,
-80023bdc: 90420180 lbu v0,384(v0)
-80023be0: 3c078004 lui a3,0x8004
-80023be4: afa20010 sw v0,16(sp)
-80023be8: 24e7071c addiu a3,a3,1820
-80023bec: 02e03021 move a2,s7
-80023bf0: 240500b0 li a1,176
-80023bf4: 26848d38 addiu a0,s4,-29384
-80023bf8: 0c008451 jal 80021144 <FontPrintText>
-80023bfc: 26100001 addiu s0,s0,1
- uint8_t i;
- uint8_t j;
-
- FontSetFlags(&SmallFont,FONT_NOFLAGS);
-
- for(i = init_flight ; i < ptrPlayer->ActiveAircraft ; i++)
-80023c00: 321000ff andi s0,s0,0xff
-80023c04: 1000ffbd b 80023afc <GameGuiAircraftList+0x250>
-80023c08: 26520020 addiu s2,s2,32
- ( (AIRCRAFT_DATA_GSGPOLY4_Y2 - AIRCRAFT_DATA_GSGPOLY4_Y0) >> 1),
- "No flights!" );
- }
- }
-
-}
-80023c0c: 8fbf0044 lw ra,68(sp)
-80023c10: 8fbe0040 lw s8,64(sp)
-80023c14: 8fb7003c lw s7,60(sp)
-80023c18: 8fb60038 lw s6,56(sp)
-80023c1c: 8fb50034 lw s5,52(sp)
-80023c20: 8fb3002c lw s3,44(sp)
-80023c24: 8fb20028 lw s2,40(sp)
-80023c28: 8fb10024 lw s1,36(sp)
-80023c2c: 8fb00020 lw s0,32(sp)
-
- GameGuiShowAircraftData(ptrPlayer, ptrFlightData);
- }
- else
- {
- FontPrintText( &SmallFont,
-80023c30: 3c078004 lui a3,0x8004
-80023c34: 26848d38 addiu a0,s4,-29384
- ( (AIRCRAFT_DATA_GSGPOLY4_Y2 - AIRCRAFT_DATA_GSGPOLY4_Y0) >> 1),
- "No flights!" );
- }
- }
-
-}
-80023c38: 8fb40030 lw s4,48(sp)
-
- GameGuiShowAircraftData(ptrPlayer, ptrFlightData);
- }
- else
- {
- FontPrintText( &SmallFont,
-80023c3c: 24e70724 addiu a3,a3,1828
-80023c40: 24060078 li a2,120
-80023c44: 240500c0 li a1,192
-80023c48: 08008451 j 80021144 <FontPrintText>
-80023c4c: 27bd0048 addiu sp,sp,72
- ( (AIRCRAFT_DATA_GSGPOLY4_Y2 - AIRCRAFT_DATA_GSGPOLY4_Y0) >> 1),
- "No flights!" );
- }
- }
-
-}
-80023c50: 8fbf0044 lw ra,68(sp)
-80023c54: 8fbe0040 lw s8,64(sp)
-80023c58: 8fb7003c lw s7,60(sp)
-80023c5c: 8fb60038 lw s6,56(sp)
-80023c60: 8fb50034 lw s5,52(sp)
-80023c64: 8fb40030 lw s4,48(sp)
-80023c68: 8fb3002c lw s3,44(sp)
-80023c6c: 8fb20028 lw s2,40(sp)
-80023c70: 8fb10024 lw s1,36(sp)
-80023c74: 8fb00020 lw s0,32(sp)
-80023c78: 27bd0048 addiu sp,sp,72
-80023c7c: 03e00008 jr ra
-80023c80: 00000000 nop
-
-80023c84 <GameGuiBubble>:
- uint8_t i;
- static uint16_t BubbleVibrationTimer;
- static uint8_t FirstNotification;
- bool AtLeastOneEnabled = false;
-
- if(GameStartupFlag == true)
-80023c84: 3c028007 lui v0,0x8007
-80023c88: 90421d24 lbu v0,7460(v0)
- }
-
-}
-
-void GameGuiBubble(TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80023c8c: 27bdffc8 addiu sp,sp,-56
-80023c90: afb4002c sw s4,44(sp)
-80023c94: afbf0034 sw ra,52(sp)
-80023c98: afb50030 sw s5,48(sp)
-80023c9c: afb30028 sw s3,40(sp)
-80023ca0: afb20024 sw s2,36(sp)
-80023ca4: afb10020 sw s1,32(sp)
-80023ca8: afb0001c sw s0,28(sp)
- uint8_t i;
- static uint16_t BubbleVibrationTimer;
- static uint8_t FirstNotification;
- bool AtLeastOneEnabled = false;
-
- if(GameStartupFlag == true)
-80023cac: 10400004 beqz v0,80023cc0 <GameGuiBubble+0x3c>
-80023cb0: 3c148007 lui s4,0x8007
- {
- // Set initial values to static variables
- BubbleVibrationTimer = 0;
-80023cb4: 3c028007 lui v0,0x8007
-80023cb8: a4401c1c sh zero,7196(v0)
- FirstNotification = 0;
-80023cbc: a2801c1a sb zero,7194(s4)
- }
-
- for(i = FirstNotification ; i < ptrFlightData->nAircraft ; i++)
-80023cc0: 92911c1a lbu s1,7194(s4)
-80023cc4: 90830200 lbu v1,512(a0)
-80023cc8: 00000000 nop
-80023ccc: 0223102b sltu v0,s1,v1
-80023cd0: 10400045 beqz v0,80023de8 <GameGuiBubble+0x164>
-80023cd4: 00911021 addu v0,a0,s1
- {
- if(ptrFlightData->NotificationRequest[i] != 0)
-80023cd8: 90420284 lbu v0,644(v0)
-80023cdc: 00000000 nop
-80023ce0: 1040003f beqz v0,80023de0 <GameGuiBubble+0x15c>
-80023ce4: 26310001 addiu s1,s1,1
-80023ce8: 2631ffff addiu s1,s1,-1
- {
- AtLeastOneEnabled = true;
-
- BubbleSpr.x = BUBBLE_SPRITE_X;
-80023cec: 3c108004 lui s0,0x8004
-80023cf0: 2402012a li v0,298
-80023cf4: a6023c78 sh v0,15480(s0)
- BubbleSpr.y = BUBBLE_SPRITE_Y;
-80023cf8: 26123c78 addiu s2,s0,15480
-80023cfc: 24020020 li v0,32
-
- if(BubbleVibrationTimer >= BUBBLE_VIBRATION_TIMER_LIMIT)
-80023d00: 3c158007 lui s5,0x8007
- if(ptrFlightData->NotificationRequest[i] != 0)
- {
- AtLeastOneEnabled = true;
-
- BubbleSpr.x = BUBBLE_SPRITE_X;
- BubbleSpr.y = BUBBLE_SPRITE_Y;
-80023d04: a6420002 sh v0,2(s2)
-
- if(BubbleVibrationTimer >= BUBBLE_VIBRATION_TIMER_LIMIT)
-80023d08: 96a21c1c lhu v0,7196(s5)
-80023d0c: 00000000 nop
-80023d10: 2c420019 sltiu v0,v0,25
-80023d14: 10400012 beqz v0,80023d60 <GameGuiBubble+0xdc>
-80023d18: 00809821 move s3,a0
- BubbleVibrationTimer = 0;
- }
- }
- else
- {
- BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
-80023d1c: 24050003 li a1,3
-80023d20: 0c00a03d jal 800280f4 <SystemRand>
-80023d24: 2404fffd li a0,-3
-80023d28: 96033c78 lhu v1,15480(s0)
- BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
-80023d2c: 24050003 li a1,3
- BubbleVibrationTimer = 0;
- }
- }
- else
- {
- BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
-80023d30: 00431021 addu v0,v0,v1
- BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
-80023d34: 2404fffd li a0,-3
-80023d38: 0c00a03d jal 800280f4 <SystemRand>
-80023d3c: a6023c78 sh v0,15480(s0)
-80023d40: 96430002 lhu v1,2(s2)
-
- // Keep information about last aircraft notified...
- // so that it gets called on next cycle
- FirstNotification = i;
-80023d44: a2911c1a sb s1,7194(s4)
- }
- }
- else
- {
- BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
- BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
-80023d48: 00431021 addu v0,v0,v1
-80023d4c: a6420002 sh v0,2(s2)
-
- // Keep information about last aircraft notified...
- // so that it gets called on next cycle
- FirstNotification = i;
- BubbleVibrationTimer++;
-80023d50: 96a21c1c lhu v0,7196(s5)
-80023d54: 00000000 nop
-80023d58: 24420001 addiu v0,v0,1
-80023d5c: a6a21c1c sh v0,7196(s5)
- }
-
- GfxSortSprite(&BubbleSpr);
-80023d60: 26043c78 addiu a0,s0,15480
-80023d64: 0c0090d2 jal 80024348 <GfxSortSprite>
-80023d68: 3c118007 lui s1,0x8007
- FontSetFlags(&SmallFont, FONT_CENTERED);
-80023d6c: 26248d38 addiu a0,s1,-29384
-80023d70: 0c008441 jal 80021104 <FontSetFlags>
-80023d74: 24050001 li a1,1
- FontPrintText(&SmallFont,BubbleSpr.x + 8 , BubbleSpr.y + 2, "%d", ptrFlightData->ActiveAircraft);
-80023d78: 96460002 lhu a2,2(s2)
-80023d7c: 96053c78 lhu a1,15480(s0)
-80023d80: 92620201 lbu v0,513(s3)
-80023d84: 24c60002 addiu a2,a2,2
-80023d88: 24a50008 addiu a1,a1,8
-80023d8c: 3c078004 lui a3,0x8004
-80023d90: 00063400 sll a2,a2,0x10
-80023d94: 00052c00 sll a1,a1,0x10
-80023d98: 26248d38 addiu a0,s1,-29384
-80023d9c: afa20010 sw v0,16(sp)
-80023da0: 00063403 sra a2,a2,0x10
-80023da4: 00052c03 sra a1,a1,0x10
-80023da8: 0c008451 jal 80021144 <FontPrintText>
-80023dac: 24e70730 addiu a3,a3,1840
- {
- FirstNotification = 0;
- BubbleVibrationTimer = 0;
- }
- //dprintf("Bubble timer: %d\n",BubbleVibrationTimer);
-}
-80023db0: 8fbf0034 lw ra,52(sp)
-80023db4: 8fb50030 lw s5,48(sp)
-80023db8: 8fb4002c lw s4,44(sp)
-80023dbc: 8fb30028 lw s3,40(sp)
-80023dc0: 8fb20024 lw s2,36(sp)
-80023dc4: 8fb10020 lw s1,32(sp)
-80023dc8: 8fb0001c lw s0,28(sp)
-
- GfxSortSprite(&BubbleSpr);
- FontSetFlags(&SmallFont, FONT_CENTERED);
- FontPrintText(&SmallFont,BubbleSpr.x + 8 , BubbleSpr.y + 2, "%d", ptrFlightData->ActiveAircraft);
-
- GfxDrawButton(NOTIFICATION_BUTTON_X, NOTIFICATION_BUTTON_Y, PAD_CIRCLE);
-80023dcc: 24060020 li a2,32
-80023dd0: 24050030 li a1,48
-80023dd4: 24040142 li a0,322
-80023dd8: 0800914a j 80024528 <GfxDrawButton>
-80023ddc: 27bd0038 addiu sp,sp,56
- // Set initial values to static variables
- BubbleVibrationTimer = 0;
- FirstNotification = 0;
- }
-
- for(i = FirstNotification ; i < ptrFlightData->nAircraft ; i++)
-80023de0: 1000ffba b 80023ccc <GameGuiBubble+0x48>
-80023de4: 323100ff andi s1,s1,0xff
- {
- FirstNotification = 0;
- BubbleVibrationTimer = 0;
- }
- //dprintf("Bubble timer: %d\n",BubbleVibrationTimer);
-}
-80023de8: 8fbf0034 lw ra,52(sp)
- }
-
- if(AtLeastOneEnabled == false)
- {
- FirstNotification = 0;
- BubbleVibrationTimer = 0;
-80023dec: 3c028007 lui v0,0x8007
- }
- //dprintf("Bubble timer: %d\n",BubbleVibrationTimer);
-}
-80023df0: 8fb50030 lw s5,48(sp)
-80023df4: 8fb30028 lw s3,40(sp)
-80023df8: 8fb20024 lw s2,36(sp)
-80023dfc: 8fb10020 lw s1,32(sp)
-80023e00: 8fb0001c lw s0,28(sp)
- }
- }
-
- if(AtLeastOneEnabled == false)
- {
- FirstNotification = 0;
-80023e04: a2801c1a sb zero,7194(s4)
- BubbleVibrationTimer = 0;
-80023e08: a4401c1c sh zero,7196(v0)
- }
- //dprintf("Bubble timer: %d\n",BubbleVibrationTimer);
-}
-80023e0c: 8fb4002c lw s4,44(sp)
-80023e10: 03e00008 jr ra
-80023e14: 27bd0038 addiu sp,sp,56
-
-80023e18 <GameGuiClock>:
-
-void GameGuiClock(uint8_t hour, uint8_t min)
-{
- static char strClock[6]; // HH:MM + \0 (6 characters needed)
-
- if(GameStartupFlag || System1SecondTick() == true)
-80023e18: 3c028007 lui v0,0x8007
-80023e1c: 90421d24 lbu v0,7460(v0)
-
- strcat(strNotificationRequest, ".");
-}
-
-void GameGuiClock(uint8_t hour, uint8_t min)
-{
-80023e20: 27bdffd8 addiu sp,sp,-40
-80023e24: afb20020 sw s2,32(sp)
-80023e28: afb1001c sw s1,28(sp)
-80023e2c: afb00018 sw s0,24(sp)
-80023e30: afbf0024 sw ra,36(sp)
-80023e34: 309100ff andi s1,a0,0xff
-80023e38: 30b200ff andi s2,a1,0xff
- static char strClock[6]; // HH:MM + \0 (6 characters needed)
-
- if(GameStartupFlag || System1SecondTick() == true)
-80023e3c: 1040000e beqz v0,80023e78 <GameGuiClock+0x60>
-80023e40: 3c108007 lui s0,0x8007
- {
- memset(strClock, 0, 6);
-80023e44: 26041c14 addiu a0,s0,7188
-80023e48: 24060006 li a2,6
-80023e4c: 0c00d7ab jal 80035eac <memset>
-80023e50: 00002821 move a1,zero
- snprintf(strClock,6,"%02d:%02d",hour, min);
-80023e54: 3c068004 lui a2,0x8004
-80023e58: afb20010 sw s2,16(sp)
-80023e5c: 02203821 move a3,s1
-80023e60: 24c60734 addiu a2,a2,1844
-80023e64: 24050006 li a1,6
-80023e68: 0c00ecf4 jal 8003b3d0 <snprintf>
-80023e6c: 26041c14 addiu a0,s0,7188
- }
-
- RadioFont.flags = FONT_NOFLAGS;
-80023e70: 10000006 b 80023e8c <GameGuiClock+0x74>
-80023e74: 3c048007 lui a0,0x8007
-
-void GameGuiClock(uint8_t hour, uint8_t min)
-{
- static char strClock[6]; // HH:MM + \0 (6 characters needed)
-
- if(GameStartupFlag || System1SecondTick() == true)
-80023e78: 0c009fb6 jal 80027ed8 <System1SecondTick>
-80023e7c: 00000000 nop
-80023e80: 1440fff1 bnez v0,80023e48 <GameGuiClock+0x30>
-80023e84: 26041c14 addiu a0,s0,7188
- {
- memset(strClock, 0, 6);
- snprintf(strClock,6,"%02d:%02d",hour, min);
- }
-
- RadioFont.flags = FONT_NOFLAGS;
-80023e88: 3c048007 lui a0,0x8007
-80023e8c: 24848d78 addiu a0,a0,-29320
- RadioFont.max_ch_wrap = 0;
-80023e90: a0800032 sb zero,50(a0)
- FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock);
-}
-80023e94: 8fbf0024 lw ra,36(sp)
-80023e98: 8fb20020 lw s2,32(sp)
-80023e9c: 8fb1001c lw s1,28(sp)
- snprintf(strClock,6,"%02d:%02d",hour, min);
- }
-
- RadioFont.flags = FONT_NOFLAGS;
- RadioFont.max_ch_wrap = 0;
- FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock);
-80023ea0: 26071c14 addiu a3,s0,7188
-}
-80023ea4: 8fb00018 lw s0,24(sp)
- {
- memset(strClock, 0, 6);
- snprintf(strClock,6,"%02d:%02d",hour, min);
- }
-
- RadioFont.flags = FONT_NOFLAGS;
-80023ea8: ac800034 sw zero,52(a0)
- RadioFont.max_ch_wrap = 0;
- FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock);
-80023eac: 24060010 li a2,16
-80023eb0: 24050010 li a1,16
-80023eb4: 08008451 j 80021144 <FontPrintText>
-80023eb8: 27bd0028 addiu sp,sp,40
-
-80023ebc <GfxInitDrawEnv>:
-}
-
-
-void GfxInitDrawEnv(void)
-{
- DrawEnv.x = 0;
-80023ebc: 3c048004 lui a0,0x8004
-80023ec0: 24845ca4 addiu a0,a0,23716
- DrawEnv.y = 0;
- DrawEnv.draw_on_display = false;
- DrawEnv.w = X_SCREEN_RESOLUTION;
-80023ec4: 24020180 li v0,384
-80023ec8: a4820006 sh v0,6(a0)
- DrawEnv.h = Y_SCREEN_RESOLUTION;
-80023ecc: 240200f0 li v0,240
-}
-
-
-void GfxInitDrawEnv(void)
-{
- DrawEnv.x = 0;
-80023ed0: a4800002 sh zero,2(a0)
- DrawEnv.y = 0;
-80023ed4: a4800004 sh zero,4(a0)
- DrawEnv.draw_on_display = false;
-80023ed8: a0800001 sb zero,1(a0)
- DrawEnv.w = X_SCREEN_RESOLUTION;
- DrawEnv.h = Y_SCREEN_RESOLUTION;
-
- GsSetDrawEnv(&DrawEnv);
-80023edc: 0800bada j 8002eb68 <GsSetDrawEnv>
-80023ee0: a4820008 sh v0,8(a0)
-
-80023ee4 <GfxInitDispEnv>:
-}
-
-void GfxInitDispEnv(void)
-{
- DispEnv.x = 0;
-80023ee4: 3c048007 lui a0,0x8007
-80023ee8: a4801c2c sh zero,7212(a0)
- DispEnv.y = 0;
-80023eec: 24841c2c addiu a0,a0,7212
-
- GsSetDispEnv(&DispEnv);
-80023ef0: 0800bb71 j 8002edc4 <GsSetDispEnv>
-80023ef4: a4800002 sh zero,2(a0)
-
-80023ef8 <GfxSetPrimitiveList>:
-}
-
-void GfxSetPrimitiveList(void)
-{
- GsSetList(prim_list);
-80023ef8: 3c048004 lui a0,0x8004
-80023efc: 0800ae4f j 8002b93c <GsSetList>
-80023f00: 24843ca4 addiu a0,a0,15524
-
-80023f04 <GfxDrawScene_Fast>:
-//Dictates (R,G,B) brigthness to all sprites silently
-static uint8_t global_lum;
-
-void GfxSwapBuffers(void)
-{
- if(DrawEnv.h == Y_SCREEN_RESOLUTION)
-80023f04: 3c048004 lui a0,0x8004
-80023f08: 24825ca4 addiu v0,a0,23716
-80023f0c: 84450008 lh a1,8(v0)
-80023f10: 240300f0 li v1,240
-80023f14: 14a3001a bne a1,v1,80023f80 <GfxDrawScene_Fast+0x7c>
-80023f18: 00000000 nop
-{
- GsSetList(prim_list);
-}
-
-void GfxDrawScene_Fast(void)
-{
-80023f1c: 27bdffe8 addiu sp,sp,-24
-80023f20: afb00010 sw s0,16(sp)
-80023f24: 00808021 move s0,a0
-
-void GfxSwapBuffers(void)
-{
- if(DrawEnv.h == Y_SCREEN_RESOLUTION)
- {
- if(DispEnv.y == 0)
-80023f28: 3c048007 lui a0,0x8007
-80023f2c: 24851c2c addiu a1,a0,7212
-80023f30: 84a30002 lh v1,2(a1)
-80023f34: 00000000 nop
-80023f38: 14600005 bnez v1,80023f50 <GfxDrawScene_Fast+0x4c>
-80023f3c: afbf0014 sw ra,20(sp)
- {
- DispEnv.y = DOUBLE_BUFFERING_SWAP_Y;
-80023f40: 24030100 li v1,256
-80023f44: a4a30002 sh v1,2(a1)
- DrawEnv.y = 0;
-80023f48: 10000006 b 80023f64 <GfxDrawScene_Fast+0x60>
-80023f4c: a4400004 sh zero,4(v0)
- }
- else if(DispEnv.y == DOUBLE_BUFFERING_SWAP_Y)
-80023f50: 24060100 li a2,256
-80023f54: 14660003 bne v1,a2,80023f64 <GfxDrawScene_Fast+0x60>
-80023f58: 00000000 nop
- {
- DispEnv.y = 0;
-80023f5c: a4a00002 sh zero,2(a1)
- DrawEnv.y = DOUBLE_BUFFERING_SWAP_Y;
-80023f60: a4430004 sh v1,4(v0)
- }
-
- GsSetDispEnv(&DispEnv);
-80023f64: 0c00bb71 jal 8002edc4 <GsSetDispEnv>
-80023f68: 24841c2c addiu a0,a0,7212
- GsSetDrawEnv(&DrawEnv);
-80023f6c: 0c00bada jal 8002eb68 <GsSetDrawEnv>
-80023f70: 26045ca4 addiu a0,s0,23716
-
-void GfxDrawScene_Fast(void)
-{
- GfxSwapBuffers();
- GsDrawList();
-}
-80023f74: 8fbf0014 lw ra,20(sp)
-80023f78: 8fb00010 lw s0,16(sp)
-80023f7c: 27bd0018 addiu sp,sp,24
-}
-
-void GfxDrawScene_Fast(void)
-{
- GfxSwapBuffers();
- GsDrawList();
-80023f80: 0800ae5f j 8002b97c <GsDrawList>
-80023f84: 00000000 nop
-
-80023f88 <GfxDrawScene>:
-}
-
-void GfxDrawScene(void)
-{
-80023f88: 27bdffe8 addiu sp,sp,-24
-80023f8c: afb00010 sw s0,16(sp)
-80023f90: afbf0014 sw ra,20(sp)
- while( (SystemRefreshNeeded() == false)
- ||
-80023f94: 24100001 li s0,1
- GsDrawList();
-}
-
-void GfxDrawScene(void)
-{
- while( (SystemRefreshNeeded() == false)
-80023f98: 0c009f9a jal 80027e68 <SystemRefreshNeeded>
-80023f9c: 00000000 nop
-80023fa0: 1040fffd beqz v0,80023f98 <GfxDrawScene+0x10>
-80023fa4: 00000000 nop
- ||
- (GsIsDrawing() == true)
-80023fa8: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-80023fac: 00000000 nop
-}
-
-void GfxDrawScene(void)
-{
- while( (SystemRefreshNeeded() == false)
- ||
-80023fb0: 1050fff9 beq v0,s0,80023f98 <GfxDrawScene+0x10>
-80023fb4: 00000000 nop
- (GsIsDrawing() == true)
- ||
- (SystemDMAReady() == false) );
-80023fb8: 0c009f8b jal 80027e2c <SystemDMAReady>
-80023fbc: 00000000 nop
-void GfxDrawScene(void)
-{
- while( (SystemRefreshNeeded() == false)
- ||
- (GsIsDrawing() == true)
- ||
-80023fc0: 1040fff5 beqz v0,80023f98 <GfxDrawScene+0x10>
-80023fc4: 00000000 nop
- (SystemDMAReady() == false) );
-
- GfxDrawScene_Fast();
-80023fc8: 0c008fc1 jal 80023f04 <GfxDrawScene_Fast>
-80023fcc: 00000000 nop
-
- if(UpdatePads() == false)
-80023fd0: 0c009aec jal 80026bb0 <UpdatePads>
-80023fd4: 00000000 nop
-80023fd8: 10400002 beqz v0,80023fe4 <GfxDrawScene+0x5c>
-80023fdc: 24040001 li a0,1
- {
- SystemSetEmergencyMode(true);
- }
- else
- {
- SystemSetEmergencyMode(false);
-80023fe0: 00002021 move a0,zero
-80023fe4: 0c00a050 jal 80028140 <SystemSetEmergencyMode>
-80023fe8: 00000000 nop
- }
-
- SystemRunTimers();
-80023fec: 0c009fc2 jal 80027f08 <SystemRunTimers>
-80023ff0: 00000000 nop
-
- SystemUserTimersHandler();
-80023ff4: 0c00a0df jal 8002837c <SystemUserTimersHandler>
-80023ff8: 00000000 nop
-
- SystemDisableScreenRefresh();
-80023ffc: 0c009fb2 jal 80027ec8 <SystemDisableScreenRefresh>
-80024000: 00000000 nop
-
- MemCardHandler();
-80024004: 0c009747 jal 80025d1c <MemCardHandler>
-80024008: 00000000 nop
-
- SystemCheckStack();
-}
-8002400c: 8fbf0014 lw ra,20(sp)
-80024010: 8fb00010 lw s0,16(sp)
-
- SystemDisableScreenRefresh();
-
- MemCardHandler();
-
- SystemCheckStack();
-80024014: 0800a158 j 80028560 <SystemCheckStack>
-80024018: 27bd0018 addiu sp,sp,24
-
-8002401c <GfxGetGlobalLuminance>:
-}
-
-uint8_t GfxGetGlobalLuminance(void)
-{
- return global_lum;
-}
-8002401c: 3c028007 lui v0,0x8007
-80024020: 90421c2a lbu v0,7210(v0)
-80024024: 03e00008 jr ra
-80024028: 00000000 nop
-
-8002402c <GfxSetGlobalLuminance>:
-
-void GfxSetGlobalLuminance(uint8_t value)
-{
- global_lum = value;
-8002402c: 3c028007 lui v0,0x8007
-80024030: 03e00008 jr ra
-80024034: a0441c2a sb a0,7210(v0)
-
-80024038 <GfxIncreaseGlobalLuminance>:
-}
-
-void GfxIncreaseGlobalLuminance(int8_t step)
-{
- if( ( (global_lum + step) < MAX_LUMINANCE )
-80024038: 3c038007 lui v1,0x8007
-8002403c: 90621c2a lbu v0,7210(v1)
-{
- global_lum = value;
-}
-
-void GfxIncreaseGlobalLuminance(int8_t step)
-{
-80024040: 00042600 sll a0,a0,0x18
-80024044: 00042603 sra a0,a0,0x18
- if( ( (global_lum + step) < MAX_LUMINANCE )
-80024048: 00442021 addu a0,v0,a0
-8002404c: 2482ffff addiu v0,a0,-1
-80024050: 2c4200fe sltiu v0,v0,254
-80024054: 10400003 beqz v0,80024064 <GfxIncreaseGlobalLuminance+0x2c>
-80024058: 2402ffff li v0,-1
-8002405c: 03e00008 jr ra
-80024060: a0641c2a sb a0,7210(v1)
- {
- global_lum += step;
- }
- else
- {
- global_lum = MAX_LUMINANCE;
-80024064: 03e00008 jr ra
-80024068: a0621c2a sb v0,7210(v1)
-
-8002406c <GfxRotateFromDegrees>:
-}
-
-int GfxRotateFromDegrees(int deg)
-{
- return deg << ROTATE_BIT_SHIFT;
-}
-8002406c: 03e00008 jr ra
-80024070: 00041300 sll v0,a0,0xc
-
-80024074 <GfxIsGPUBusy>:
-
-bool GfxIsGPUBusy(void)
-{
-80024074: 27bdffe8 addiu sp,sp,-24
-80024078: afbf0014 sw ra,20(sp)
- return (GsIsDrawing() || gfx_busy || SystemDMABusy() );
-8002407c: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-80024080: 00000000 nop
-80024084: 1440000a bnez v0,800240b0 <GfxIsGPUBusy+0x3c>
-80024088: 24030001 li v1,1
-8002408c: 3c028007 lui v0,0x8007
-80024090: 90421c2b lbu v0,7211(v0)
-80024094: 00000000 nop
-80024098: 304200ff andi v0,v0,0xff
-8002409c: 14400004 bnez v0,800240b0 <GfxIsGPUBusy+0x3c>
-800240a0: 00000000 nop
-800240a4: 0c009f91 jal 80027e44 <SystemDMABusy>
-800240a8: 00000000 nop
-800240ac: 00401821 move v1,v0
-}
-800240b0: 8fbf0014 lw ra,20(sp)
-800240b4: 30620001 andi v0,v1,0x1
-800240b8: 03e00008 jr ra
-800240bc: 27bd0018 addiu sp,sp,24
-
-800240c0 <GfxDrawScene_Slow>:
-
- SystemCheckStack();
-}
-
-void GfxDrawScene_Slow(void)
-{
-800240c0: 27bdffe8 addiu sp,sp,-24
-800240c4: afbf0014 sw ra,20(sp)
- GfxDrawScene();
-800240c8: 0c008fe2 jal 80023f88 <GfxDrawScene>
-800240cc: 00000000 nop
- while(GfxIsGPUBusy() == true);
-800240d0: 0c00901d jal 80024074 <GfxIsGPUBusy>
-800240d4: 00000000 nop
-800240d8: 1440fffd bnez v0,800240d0 <GfxDrawScene_Slow+0x10>
-800240dc: 00000000 nop
-}
-800240e0: 8fbf0014 lw ra,20(sp)
-800240e4: 00000000 nop
-800240e8: 03e00008 jr ra
-800240ec: 27bd0018 addiu sp,sp,24
-
-800240f0 <GfxSpriteFromFile>:
-{
- return (GsIsDrawing() || gfx_busy || SystemDMABusy() );
-}
-
-bool GfxSpriteFromFile(char * fname, GsSprite * spr)
-{
-800240f0: 27bdffb0 addiu sp,sp,-80
-800240f4: afb20048 sw s2,72(sp)
-800240f8: afb00040 sw s0,64(sp)
-800240fc: afbf004c sw ra,76(sp)
-80024100: afb10044 sw s1,68(sp)
- GsImage gsi;
-
- if(SystemLoadFile(fname) == false)
-80024104: 0c00a022 jal 80028088 <SystemLoadFile>
-80024108: 00a09021 move s2,a1
-8002410c: 10400011 beqz v0,80024154 <GfxSpriteFromFile+0x64>
-80024110: 00408021 move s0,v0
- {
- return false;
- }
-
- while(GfxIsGPUBusy() == true);
-80024114: 0c00901d jal 80024074 <GfxIsGPUBusy>
-80024118: 00000000 nop
-8002411c: 1440fffd bnez v0,80024114 <GfxSpriteFromFile+0x24>
-80024120: 3c118007 lui s1,0x8007
-
- gfx_busy = true;
-80024124: 24020001 li v0,1
-80024128: a2221c2b sb v0,7211(s1)
-
- GsImageFromTim(&gsi,SystemGetBufferAddress() );
-8002412c: 0c00a027 jal 8002809c <SystemGetBufferAddress>
-80024130: 00000000 nop
-80024134: 00402821 move a1,v0
-80024138: 0c00bda9 jal 8002f6a4 <GsImageFromTim>
-8002413c: 27a40010 addiu a0,sp,16
-
- GsSpriteFromImage(spr,&gsi,UPLOAD_IMAGE_FLAG);
-80024140: 24060001 li a2,1
-80024144: 27a50010 addiu a1,sp,16
-80024148: 0c00bea4 jal 8002fa90 <GsSpriteFromImage>
-8002414c: 02402021 move a0,s2
- gfx_busy = false;
-80024150: a2201c2b sb zero,7211(s1)
-
- return true;
-}
-80024154: 8fbf004c lw ra,76(sp)
-80024158: 02001021 move v0,s0
-8002415c: 8fb20048 lw s2,72(sp)
-80024160: 8fb10044 lw s1,68(sp)
-80024164: 8fb00040 lw s0,64(sp)
-80024168: 03e00008 jr ra
-8002416c: 27bd0050 addiu sp,sp,80
-
-80024170 <GfxCLUTFromFile>:
-
-bool GfxCLUTFromFile(char * fname)
-{
-80024170: 27bdffb0 addiu sp,sp,-80
-80024174: afb00044 sw s0,68(sp)
-80024178: afbf004c sw ra,76(sp)
- GsImage gsi;
-
- if(SystemLoadFile(fname) == false)
-8002417c: 0c00a022 jal 80028088 <SystemLoadFile>
-80024180: afb10048 sw s1,72(sp)
-80024184: 1040000f beqz v0,800241c4 <GfxCLUTFromFile+0x54>
-80024188: 00408021 move s0,v0
- {
- return false;
- }
-
- while(GfxIsGPUBusy() == true);
-8002418c: 0c00901d jal 80024074 <GfxIsGPUBusy>
-80024190: 00000000 nop
-80024194: 1440fffd bnez v0,8002418c <GfxCLUTFromFile+0x1c>
-80024198: 24020001 li v0,1
-
- gfx_busy = true;
-8002419c: 3c118007 lui s1,0x8007
-800241a0: a2221c2b sb v0,7211(s1)
-
- GsImageFromTim(&gsi,SystemGetBufferAddress() );
-800241a4: 0c00a027 jal 8002809c <SystemGetBufferAddress>
-800241a8: 00000000 nop
-800241ac: 00402821 move a1,v0
-800241b0: 0c00bda9 jal 8002f6a4 <GsImageFromTim>
-800241b4: 27a40010 addiu a0,sp,16
-
- GsUploadCLUT(&gsi);
-800241b8: 0c00be81 jal 8002fa04 <GsUploadCLUT>
-800241bc: 27a40010 addiu a0,sp,16
-
- gfx_busy = false;
-800241c0: a2201c2b sb zero,7211(s1)
-
- return true;
-}
-800241c4: 8fbf004c lw ra,76(sp)
-800241c8: 02001021 move v0,s0
-800241cc: 8fb10048 lw s1,72(sp)
-800241d0: 8fb00044 lw s0,68(sp)
-800241d4: 03e00008 jr ra
-800241d8: 27bd0050 addiu sp,sp,80
-
-800241dc <GfxIsInsideScreenArea>:
-
-bool GfxIsInsideScreenArea(short x, short y, short w, short h)
-{
-800241dc: 00042400 sll a0,a0,0x10
-800241e0: 00063400 sll a2,a2,0x10
-800241e4: 00042403 sra a0,a0,0x10
-800241e8: 00063403 sra a2,a2,0x10
-800241ec: 00052c00 sll a1,a1,0x10
-800241f0: 00073c00 sll a3,a3,0x10
- if( ( (x + w) >= 0)
-800241f4: 00863021 addu a2,a0,a2
-
- return true;
-}
-
-bool GfxIsInsideScreenArea(short x, short y, short w, short h)
-{
-800241f8: 00052c03 sra a1,a1,0x10
-800241fc: 00073c03 sra a3,a3,0x10
- if( ( (x + w) >= 0)
-80024200: 04c00007 bltz a2,80024220 <GfxIsInsideScreenArea+0x44>
-80024204: 00001021 move v0,zero
- &&
-80024208: 28840180 slti a0,a0,384
-8002420c: 10800004 beqz a0,80024220 <GfxIsInsideScreenArea+0x44>
-80024210: 00a73821 addu a3,a1,a3
- (x < X_SCREEN_RESOLUTION)
- &&
-80024214: 04e00002 bltz a3,80024220 <GfxIsInsideScreenArea+0x44>
-80024218: 00000000 nop
- ( (y + h) >= 0)
- &&
-8002421c: 28a200f0 slti v0,a1,240
- {
- return true;
- }
-
- return false;
-}
-80024220: 03e00008 jr ra
-80024224: 00000000 nop
-
-80024228 <GfxIsSpriteInsideScreenArea>:
-
-bool GfxIsSpriteInsideScreenArea(GsSprite * spr)
-{
- return GfxIsInsideScreenArea(spr->x, spr->y, spr->w, spr->h);
-80024228: 84870008 lh a3,8(a0)
-8002422c: 84860006 lh a2,6(a0)
-80024230: 84850002 lh a1,2(a0)
-80024234: 84840000 lh a0,0(a0)
-80024238: 08009077 j 800241dc <GfxIsInsideScreenArea>
-8002423c: 00000000 nop
-
-80024240 <GfxSaveDisplayData>:
-}
-
-void GfxSaveDisplayData(GsSprite *spr)
-{
- MoveImage( DispEnv.x,
- DispEnv.y,
-80024240: 3c028007 lui v0,0x8007
-
- GfxSortSprite(&PSXButtons);
-}
-
-void GfxSaveDisplayData(GsSprite *spr)
-{
-80024244: 27bdffd8 addiu sp,sp,-40
- MoveImage( DispEnv.x,
- DispEnv.y,
-80024248: 24431c2c addiu v1,v0,7212
- GfxSortSprite(&PSXButtons);
-}
-
-void GfxSaveDisplayData(GsSprite *spr)
-{
- MoveImage( DispEnv.x,
-8002424c: 84650002 lh a1,2(v1)
-
- GfxSortSprite(&PSXButtons);
-}
-
-void GfxSaveDisplayData(GsSprite *spr)
-{
-80024250: afb20020 sw s2,32(sp)
-80024254: afb1001c sw s1,28(sp)
-80024258: afb00018 sw s0,24(sp)
- MoveImage( DispEnv.x,
-8002425c: 241100f0 li s1,240
-
- GfxSortSprite(&PSXButtons);
-}
-
-void GfxSaveDisplayData(GsSprite *spr)
-{
-80024260: 00808021 move s0,a0
- MoveImage( DispEnv.x,
-80024264: 24120180 li s2,384
-80024268: 84441c2c lh a0,7212(v0)
-8002426c: afb10014 sw s1,20(sp)
-80024270: afb20010 sw s2,16(sp)
-80024274: 24070100 li a3,256
-
- GfxSortSprite(&PSXButtons);
-}
-
-void GfxSaveDisplayData(GsSprite *spr)
-{
-80024278: afbf0024 sw ra,36(sp)
- MoveImage( DispEnv.x,
-8002427c: 0c00ba20 jal 8002e880 <MoveImage>
-80024280: 24060180 li a2,384
- X_SCREEN_RESOLUTION,
- Y_SCREEN_RESOLUTION);
-
- spr->x = 0;
- spr->y = 0;
- spr->tpage = GFX_SECOND_DISPLAY_TPAGE;
-80024284: 24020016 li v0,22
-80024288: a2020011 sb v0,17(s0)
- spr->attribute |= COLORMODE(COLORMODE_16BPP);
-8002428c: 8e020014 lw v0,20(s0)
- spr->u = 0;
- spr->v = 0;
- spr->r = NORMAL_LUMINANCE;
- spr->g = NORMAL_LUMINANCE;
- spr->b = NORMAL_LUMINANCE;
-}
-80024290: 8fbf0024 lw ra,36(sp)
- Y_SCREEN_RESOLUTION);
-
- spr->x = 0;
- spr->y = 0;
- spr->tpage = GFX_SECOND_DISPLAY_TPAGE;
- spr->attribute |= COLORMODE(COLORMODE_16BPP);
-80024294: 34420002 ori v0,v0,0x2
-80024298: ae020014 sw v0,20(s0)
- spr->w = X_SCREEN_RESOLUTION;
- spr->h = Y_SCREEN_RESOLUTION;
- spr->u = 0;
- spr->v = 0;
- spr->r = NORMAL_LUMINANCE;
-8002429c: 2402ff80 li v0,-128
-
- spr->x = 0;
- spr->y = 0;
- spr->tpage = GFX_SECOND_DISPLAY_TPAGE;
- spr->attribute |= COLORMODE(COLORMODE_16BPP);
- spr->w = X_SCREEN_RESOLUTION;
-800242a0: a6120006 sh s2,6(s0)
- spr->h = Y_SCREEN_RESOLUTION;
-800242a4: a6110008 sh s1,8(s0)
- spr->u = 0;
- spr->v = 0;
- spr->r = NORMAL_LUMINANCE;
- spr->g = NORMAL_LUMINANCE;
- spr->b = NORMAL_LUMINANCE;
-}
-800242a8: 8fb20020 lw s2,32(sp)
-800242ac: 8fb1001c lw s1,28(sp)
- GFX_SECOND_DISPLAY_X,
- GFX_SECOND_DISPLAY_Y,
- X_SCREEN_RESOLUTION,
- Y_SCREEN_RESOLUTION);
-
- spr->x = 0;
-800242b0: a6000000 sh zero,0(s0)
- spr->y = 0;
-800242b4: a6000002 sh zero,2(s0)
- spr->tpage = GFX_SECOND_DISPLAY_TPAGE;
- spr->attribute |= COLORMODE(COLORMODE_16BPP);
- spr->w = X_SCREEN_RESOLUTION;
- spr->h = Y_SCREEN_RESOLUTION;
- spr->u = 0;
-800242b8: a2000004 sb zero,4(s0)
- spr->v = 0;
-800242bc: a2000005 sb zero,5(s0)
- spr->r = NORMAL_LUMINANCE;
-800242c0: a202000e sb v0,14(s0)
- spr->g = NORMAL_LUMINANCE;
-800242c4: a202000f sb v0,15(s0)
- spr->b = NORMAL_LUMINANCE;
-800242c8: a2020010 sb v0,16(s0)
-}
-800242cc: 8fb00018 lw s0,24(sp)
-800242d0: 03e00008 jr ra
-800242d4: 27bd0028 addiu sp,sp,40
-
-800242d8 <Gfx1HzFlash>:
-
-bool Gfx1HzFlash(void)
-{
-800242d8: 27bdffe8 addiu sp,sp,-24
-800242dc: afbf0014 sw ra,20(sp)
- static bool show = false;
-
- if(System1SecondTick() == true)
-800242e0: 0c009fb6 jal 80027ed8 <System1SecondTick>
-800242e4: 00000000 nop
-800242e8: 10400005 beqz v0,80024300 <Gfx1HzFlash+0x28>
-800242ec: 3c038007 lui v1,0x8007
- {
- show = show? false:true;
-800242f0: 90621c25 lbu v0,7205(v1)
-800242f4: 00000000 nop
-800242f8: 38420001 xori v0,v0,0x1
-800242fc: a0621c25 sb v0,7205(v1)
- }
-
- return show;
-}
-80024300: 8fbf0014 lw ra,20(sp)
-80024304: 90621c25 lbu v0,7205(v1)
-80024308: 03e00008 jr ra
-8002430c: 27bd0018 addiu sp,sp,24
-
-80024310 <Gfx2HzFlash>:
-
-bool Gfx2HzFlash(void)
-{
-80024310: 27bdffe8 addiu sp,sp,-24
-80024314: afbf0014 sw ra,20(sp)
- static bool show = false;
-
- if(System500msTick() == true)
-80024318: 0c009fbe jal 80027ef8 <System500msTick>
-8002431c: 00000000 nop
-80024320: 10400005 beqz v0,80024338 <Gfx2HzFlash+0x28>
-80024324: 3c038007 lui v1,0x8007
- {
- show = show? false:true;
-80024328: 90621c24 lbu v0,7204(v1)
-8002432c: 00000000 nop
-80024330: 38420001 xori v0,v0,0x1
-80024334: a0621c24 sb v0,7204(v1)
- }
-
- return show;
-}
-80024338: 8fbf0014 lw ra,20(sp)
-8002433c: 90621c24 lbu v0,7204(v1)
-80024340: 03e00008 jr ra
-80024344: 27bd0018 addiu sp,sp,24
-
-80024348 <GfxSortSprite>:
- GfxDrawScene();
- while(GfxIsGPUBusy() == true);
-}
-
-void GfxSortSprite(GsSprite * spr)
-{
-80024348: 27bdffc8 addiu sp,sp,-56
-8002434c: afb10018 sw s1,24(sp)
- uint8_t aux_r = spr->r;
- uint8_t aux_g = spr->g;
- uint8_t aux_b = spr->b;
- unsigned char aux_tpage = spr->tpage;
- short aux_w = spr->w;
-80024350: 84910006 lh s1,6(a0)
- GfxDrawScene();
- while(GfxIsGPUBusy() == true);
-}
-
-void GfxSortSprite(GsSprite * spr)
-{
-80024354: afbf0034 sw ra,52(sp)
-80024358: afb70030 sw s7,48(sp)
-8002435c: afb6002c sw s6,44(sp)
-80024360: afb50028 sw s5,40(sp)
-80024364: afb40024 sw s4,36(sp)
-80024368: afb30020 sw s3,32(sp)
-8002436c: afb2001c sw s2,28(sp)
- short aux_w = spr->w;
- short aux_x = spr->x;
- bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH;
- bool has_2hz_flash = spr->attribute & GFX_2HZ_FLASH;
-
- if( (spr->w <= 0) || (spr->h <= 0) )
-80024370: 1a200062 blez s1,800244fc <GfxSortSprite+0x1b4>
-80024374: afb00014 sw s0,20(sp)
-80024378: 84820008 lh v0,8(a0)
-8002437c: 00000000 nop
-80024380: 1840005e blez v0,800244fc <GfxSortSprite+0x1b4>
-80024384: 00808021 move s0,a0
- {
- // Invalid width or heigth
- return;
- }
-
- if(GfxIsSpriteInsideScreenArea(spr) == false)
-80024388: 0c00908a jal 80024228 <GfxIsSpriteInsideScreenArea>
-8002438c: 00000000 nop
-80024390: 1040005a beqz v0,800244fc <GfxSortSprite+0x1b4>
-80024394: 00000000 nop
- uint8_t aux_g = spr->g;
- uint8_t aux_b = spr->b;
- unsigned char aux_tpage = spr->tpage;
- short aux_w = spr->w;
- short aux_x = spr->x;
- bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH;
-80024398: 8e170014 lw s7,20(s0)
- while(GfxIsGPUBusy() == true);
-}
-
-void GfxSortSprite(GsSprite * spr)
-{
- uint8_t aux_r = spr->r;
-8002439c: 9214000e lbu s4,14(s0)
-
- if(GfxIsSpriteInsideScreenArea(spr) == false)
- {
- return;
- }
- else if(has_2hz_flash && Gfx2HzFlash() == false)
-800243a0: 32e20100 andi v0,s7,0x100
-}
-
-void GfxSortSprite(GsSprite * spr)
-{
- uint8_t aux_r = spr->r;
- uint8_t aux_g = spr->g;
-800243a4: 9213000f lbu s3,15(s0)
- uint8_t aux_b = spr->b;
-800243a8: 92120010 lbu s2,16(s0)
- unsigned char aux_tpage = spr->tpage;
-800243ac: 92160011 lbu s6,17(s0)
- short aux_w = spr->w;
- short aux_x = spr->x;
-800243b0: 86150000 lh s5,0(s0)
-
- if(GfxIsSpriteInsideScreenArea(spr) == false)
- {
- return;
- }
- else if(has_2hz_flash && Gfx2HzFlash() == false)
-800243b4: 14400007 bnez v0,800243d4 <GfxSortSprite+0x8c>
-800243b8: 3c028007 lui v0,0x8007
- {
- return;
- }
-
- if(global_lum != NORMAL_LUMINANCE)
-800243bc: 90421c2a lbu v0,7210(v0)
-800243c0: 24030080 li v1,128
-800243c4: 14430009 bne v0,v1,800243ec <GfxSortSprite+0xa4>
-800243c8: 00000000 nop
- uint8_t aux_g = spr->g;
- uint8_t aux_b = spr->b;
- unsigned char aux_tpage = spr->tpage;
- short aux_w = spr->w;
- short aux_x = spr->x;
- bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH;
-800243cc: 10000023 b 8002445c <GfxSortSprite+0x114>
-800243d0: 32f70080 andi s7,s7,0x80
-
- if(GfxIsSpriteInsideScreenArea(spr) == false)
- {
- return;
- }
- else if(has_2hz_flash && Gfx2HzFlash() == false)
-800243d4: 0c0090c4 jal 80024310 <Gfx2HzFlash>
-800243d8: 00000000 nop
-800243dc: 1440fff7 bnez v0,800243bc <GfxSortSprite+0x74>
-800243e0: 3c028007 lui v0,0x8007
-800243e4: 10000045 b 800244fc <GfxSortSprite+0x1b4>
-800243e8: 00000000 nop
- return;
- }
-
- if(global_lum != NORMAL_LUMINANCE)
- {
- if(spr->r < NORMAL_LUMINANCE - global_lum)
-800243ec: 9204000e lbu a0,14(s0)
-800243f0: 00621823 subu v1,v1,v0
-800243f4: 0083282a slt a1,a0,v1
-800243f8: 10a00003 beqz a1,80024408 <GfxSortSprite+0xc0>
-800243fc: 00442021 addu a0,v0,a0
-80024400: 10000003 b 80024410 <GfxSortSprite+0xc8>
-80024404: a200000e sb zero,14(s0)
- {
- spr->r = 0;
- }
- else
- {
- spr->r -= NORMAL_LUMINANCE - global_lum;
-80024408: 2484ff80 addiu a0,a0,-128
-8002440c: a204000e sb a0,14(s0)
- }
-
- if(spr->g < NORMAL_LUMINANCE - global_lum)
-80024410: 9204000f lbu a0,15(s0)
-80024414: 00000000 nop
-80024418: 0083282a slt a1,a0,v1
-8002441c: 10a00003 beqz a1,8002442c <GfxSortSprite+0xe4>
-80024420: 00442021 addu a0,v0,a0
-80024424: 10000003 b 80024434 <GfxSortSprite+0xec>
-80024428: a200000f sb zero,15(s0)
- {
- spr->g = 0;
- }
- else
- {
- spr->g -= NORMAL_LUMINANCE - global_lum;
-8002442c: 2484ff80 addiu a0,a0,-128
-80024430: a204000f sb a0,15(s0)
- }
-
- if(spr->b < NORMAL_LUMINANCE - global_lum)
-80024434: 92040010 lbu a0,16(s0)
-80024438: 00000000 nop
-8002443c: 0083182a slt v1,a0,v1
-80024440: 10600003 beqz v1,80024450 <GfxSortSprite+0x108>
-80024444: 00441021 addu v0,v0,a0
-80024448: 10000003 b 80024458 <GfxSortSprite+0x110>
-8002444c: a2000010 sb zero,16(s0)
- {
- spr->b = 0;
- }
- else
- {
- spr->b -= NORMAL_LUMINANCE - global_lum;
-80024450: 2442ff80 addiu v0,v0,-128
-80024454: a2020010 sb v0,16(s0)
- uint8_t aux_g = spr->g;
- uint8_t aux_b = spr->b;
- unsigned char aux_tpage = spr->tpage;
- short aux_w = spr->w;
- short aux_x = spr->x;
- bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH;
-80024458: 32f70080 andi s7,s7,0x80
- {
- spr->b -= NORMAL_LUMINANCE - global_lum;
- }
- }
-
- if(has_1hz_flash == true)
-8002445c: 12e00005 beqz s7,80024474 <GfxSortSprite+0x12c>
-80024460: 2403ff7f li v1,-129
- {
- spr->attribute &= ~(GFX_1HZ_FLASH);
-80024464: 8e020014 lw v0,20(s0)
-80024468: 00000000 nop
-8002446c: 00431024 and v0,v0,v1
-80024470: ae020014 sw v0,20(s0)
- }
-
- if(spr->w > MAX_SIZE_FOR_GSSPRITE)
-80024474: 86020006 lh v0,6(s0)
-80024478: 00000000 nop
-8002447c: 28420101 slti v0,v0,257
-80024480: 14400013 bnez v0,800244d0 <GfxSortSprite+0x188>
-80024484: 24020100 li v0,256
- {
- // GsSprites can't be bigger than 256x256, so since display
- // resolution is 384x240, it must be split into two primitives.
-
- spr->w = MAX_SIZE_FOR_GSSPRITE;
-80024488: a6020006 sh v0,6(s0)
- GsSortSprite(spr);
-8002448c: 0c00b356 jal 8002cd58 <GsSortSprite>
-80024490: 02002021 move a0,s0
-
- spr->x += MAX_SIZE_FOR_GSSPRITE;
-80024494: 96020000 lhu v0,0(s0)
- spr->w = X_SCREEN_RESOLUTION - MAX_SIZE_FOR_GSSPRITE;
- spr->tpage += MAX_SIZE_FOR_GSSPRITE / GFX_TPAGE_WIDTH;
- GsSortSprite(spr);
-80024498: 02002021 move a0,s0
- // resolution is 384x240, it must be split into two primitives.
-
- spr->w = MAX_SIZE_FOR_GSSPRITE;
- GsSortSprite(spr);
-
- spr->x += MAX_SIZE_FOR_GSSPRITE;
-8002449c: 24420100 addiu v0,v0,256
-800244a0: a6020000 sh v0,0(s0)
- spr->w = X_SCREEN_RESOLUTION - MAX_SIZE_FOR_GSSPRITE;
-800244a4: 24020080 li v0,128
-800244a8: a6020006 sh v0,6(s0)
- spr->tpage += MAX_SIZE_FOR_GSSPRITE / GFX_TPAGE_WIDTH;
-800244ac: 92020011 lbu v0,17(s0)
-800244b0: 00000000 nop
-800244b4: 24420004 addiu v0,v0,4
- GsSortSprite(spr);
-800244b8: 0c00b356 jal 8002cd58 <GsSortSprite>
-800244bc: a2020011 sb v0,17(s0)
-
- // Restore original values after sorting
- spr->w = aux_w;
-800244c0: a6110006 sh s1,6(s0)
- spr->tpage = aux_tpage;
-800244c4: a2160011 sb s6,17(s0)
-800244c8: 10000003 b 800244d8 <GfxSortSprite+0x190>
-800244cc: a6150000 sh s5,0(s0)
- spr->x = aux_x;
- }
- else
- {
- GsSortSprite(spr);
-800244d0: 0c00b356 jal 8002cd58 <GsSortSprite>
-800244d4: 02002021 move a0,s0
- }
-
- if(has_1hz_flash == true)
-800244d8: 12e00005 beqz s7,800244f0 <GfxSortSprite+0x1a8>
-800244dc: 00000000 nop
- {
- spr->attribute |= GFX_1HZ_FLASH;
-800244e0: 8e020014 lw v0,20(s0)
-800244e4: 00000000 nop
-800244e8: 34420080 ori v0,v0,0x80
-800244ec: ae020014 sw v0,20(s0)
- }
-
- spr->r = aux_r;
-800244f0: a214000e sb s4,14(s0)
- spr->g = aux_g;
-800244f4: a213000f sb s3,15(s0)
- spr->b = aux_b;
-800244f8: a2120010 sb s2,16(s0)
-}
-800244fc: 8fbf0034 lw ra,52(sp)
-80024500: 8fb70030 lw s7,48(sp)
-80024504: 8fb6002c lw s6,44(sp)
-80024508: 8fb50028 lw s5,40(sp)
-8002450c: 8fb40024 lw s4,36(sp)
-80024510: 8fb30020 lw s3,32(sp)
-80024514: 8fb2001c lw s2,28(sp)
-80024518: 8fb10018 lw s1,24(sp)
-8002451c: 8fb00014 lw s0,20(sp)
-80024520: 03e00008 jr ra
-80024524: 27bd0038 addiu sp,sp,56
-
-80024528 <GfxDrawButton>:
-{
- static bool first_entered = true;
- static short orig_u;
- static short orig_v;
-
- if(first_entered == true)
-80024528: 3c028004 lui v0,0x8004
-8002452c: 90431460 lbu v1,5216(v0)
-{
- return GfxIsInsideScreenArea(spr->x, spr->y, spr->w, spr->h);
-}
-
-void GfxDrawButton(short x, short y, unsigned short btn)
-{
-80024530: 00045400 sll t2,a0,0x10
-80024534: 00052c00 sll a1,a1,0x10
-80024538: 3c098007 lui t1,0x8007
-8002453c: 000a5403 sra t2,t2,0x10
-80024540: 00052c03 sra a1,a1,0x10
-80024544: 30c6ffff andi a2,a2,0xffff
-80024548: 3c088007 lui t0,0x8007
-8002454c: 25248fa0 addiu a0,t1,-28768
- static bool first_entered = true;
- static short orig_u;
- static short orig_v;
-
- if(first_entered == true)
-80024550: 10600008 beqz v1,80024574 <GfxDrawButton+0x4c>
-80024554: 3c078007 lui a3,0x8007
- {
- first_entered = false;
-80024558: a0401460 sb zero,5216(v0)
- orig_u = PSXButtons.u;
-8002455c: 90820004 lbu v0,4(a0)
-80024560: 00000000 nop
-80024564: a5021c28 sh v0,7208(t0)
- orig_v = PSXButtons.v;
-80024568: 90820005 lbu v0,5(a0)
-8002456c: 00000000 nop
-80024570: a4e21c26 sh v0,7206(a3)
- }
-
- PSXButtons.w = BUTTON_SIZE;
- PSXButtons.h = BUTTON_SIZE;
-
- PSXButtons.r = NORMAL_LUMINANCE;
-80024574: 2403ff80 li v1,-128
- first_entered = false;
- orig_u = PSXButtons.u;
- orig_v = PSXButtons.v;
- }
-
- PSXButtons.w = BUTTON_SIZE;
-80024578: 24020010 li v0,16
- PSXButtons.h = BUTTON_SIZE;
-
- PSXButtons.r = NORMAL_LUMINANCE;
-8002457c: a083000e sb v1,14(a0)
- PSXButtons.g = NORMAL_LUMINANCE;
-80024580: a083000f sb v1,15(a0)
- PSXButtons.b = NORMAL_LUMINANCE;
-80024584: a0830010 sb v1,16(a0)
-
- PSXButtons.x = x;
- PSXButtons.y = y;
-
- switch(btn)
-80024588: 24030020 li v1,32
- first_entered = false;
- orig_u = PSXButtons.u;
- orig_v = PSXButtons.v;
- }
-
- PSXButtons.w = BUTTON_SIZE;
-8002458c: a4820006 sh v0,6(a0)
- PSXButtons.h = BUTTON_SIZE;
-80024590: a4820008 sh v0,8(a0)
-
- PSXButtons.r = NORMAL_LUMINANCE;
- PSXButtons.g = NORMAL_LUMINANCE;
- PSXButtons.b = NORMAL_LUMINANCE;
-
- PSXButtons.x = x;
-80024594: a52a8fa0 sh t2,-28768(t1)
- PSXButtons.y = y;
-
- switch(btn)
-80024598: 10c30010 beq a2,v1,800245dc <GfxDrawButton+0xb4>
-8002459c: a4850002 sh a1,2(a0)
-800245a0: 2cc20021 sltiu v0,a2,33
-800245a4: 10400006 beqz v0,800245c0 <GfxDrawButton+0x98>
-800245a8: 24020040 li v0,64
-800245ac: 24020010 li v0,16
-800245b0: 14c2000d bne a2,v0,800245e8 <GfxDrawButton+0xc0>
-800245b4: 00000000 nop
- PSXButtons.u = BUTTON_SQUARE_U;
- PSXButtons.v = BUTTON_SQUARE_V;
- break;
-
- case PAD_TRIANGLE:
- PSXButtons.u = BUTTON_TRIANGLE_U;
-800245b8: 10000009 b 800245e0 <GfxDrawButton+0xb8>
-800245bc: a0830004 sb v1,4(a0)
- PSXButtons.b = NORMAL_LUMINANCE;
-
- PSXButtons.x = x;
- PSXButtons.y = y;
-
- switch(btn)
-800245c0: 10c20005 beq a2,v0,800245d8 <GfxDrawButton+0xb0>
-800245c4: 24020080 li v0,128
-800245c8: 14c20007 bne a2,v0,800245e8 <GfxDrawButton+0xc0>
-800245cc: 00000000 nop
- PSXButtons.u = BUTTON_CROSS_U;
- PSXButtons.v = BUTTON_CROSS_V;
- break;
-
- case PAD_SQUARE:
- PSXButtons.u = BUTTON_SQUARE_U;
-800245d0: 10000003 b 800245e0 <GfxDrawButton+0xb8>
-800245d4: a0800004 sb zero,4(a0)
- PSXButtons.y = y;
-
- switch(btn)
- {
- case PAD_CROSS:
- PSXButtons.u = BUTTON_CROSS_U;
-800245d8: 24020030 li v0,48
- PSXButtons.u = BUTTON_TRIANGLE_U;
- PSXButtons.v = BUTTON_TRIANGLE_V;
- break;
-
- case PAD_CIRCLE:
- PSXButtons.u = BUTTON_CIRCLE_U;
-800245dc: a0820004 sb v0,4(a0)
- break;
-
- case PAD_SQUARE:
- PSXButtons.u = BUTTON_SQUARE_U;
- PSXButtons.v = BUTTON_SQUARE_V;
- break;
-800245e0: 10000003 b 800245f0 <GfxDrawButton+0xc8>
-800245e4: a0800005 sb zero,5(a0)
- case PAD_R2:
- case PAD_SELECT:
- case PAD_START:
- default:
- // Set null width and height so that sprite doesn't get sorted
- PSXButtons.w = 0;
-800245e8: a4800006 sh zero,6(a0)
- PSXButtons.h = 0;
-800245ec: a4800008 sh zero,8(a0)
- break;
- }
-
- PSXButtons.u += orig_u;
-800245f0: 90820004 lbu v0,4(a0)
-800245f4: 91031c28 lbu v1,7208(t0)
-800245f8: 00000000 nop
-800245fc: 00431021 addu v0,v0,v1
-80024600: a0820004 sb v0,4(a0)
- PSXButtons.v += orig_v;
-80024604: 90e31c26 lbu v1,7206(a3)
-80024608: 90820005 lbu v0,5(a0)
-8002460c: 00000000 nop
-80024610: 00431021 addu v0,v0,v1
-
- GfxSortSprite(&PSXButtons);
-80024614: 080090d2 j 80024348 <GfxSortSprite>
-80024618: a0820005 sb v0,5(a0)
-
-8002461c <GfxTPageOffsetFromVRAMPosition>:
-
- return show;
-}
-
-bool GfxTPageOffsetFromVRAMPosition(GsSprite * spr, short x, short y)
-{
-8002461c: 00051400 sll v0,a1,0x10
-80024620: 00021403 sra v0,v0,0x10
- if( (x >= VRAM_W) || (x < 0) || (y >= VRAM_H) || (y < 0) )
-80024624: 3043ffff andi v1,v0,0xffff
-80024628: 2c630400 sltiu v1,v1,1024
-8002462c: 1060001e beqz v1,800246a8 <GfxTPageOffsetFromVRAMPosition+0x8c>
-80024630: 00063400 sll a2,a2,0x10
-80024634: 00063403 sra a2,a2,0x10
-80024638: 30c3ffff andi v1,a2,0xffff
-8002463c: 2c630200 sltiu v1,v1,512
-80024640: 10600019 beqz v1,800246a8 <GfxTPageOffsetFromVRAMPosition+0x8c>
-80024644: 00062a03 sra a1,a2,0x8
- {
- return false;
- }
-
- spr->tpage = x / GFX_TPAGE_WIDTH;
- spr->tpage += (short)(VRAM_W / GFX_TPAGE_WIDTH) * (short)(y / GFX_TPAGE_HEIGHT);
-80024648: 00021983 sra v1,v0,0x6
-8002464c: 00052900 sll a1,a1,0x4
-80024650: 00652821 addu a1,v1,a1
-
- spr->u = (x % GFX_TPAGE_WIDTH);
-
- if(spr->attribute & COLORMODE(COLORMODE_8BPP))
-80024654: 8c830014 lw v1,20(a0)
-
- return show;
-}
-
-bool GfxTPageOffsetFromVRAMPosition(GsSprite * spr, short x, short y)
-{
-80024658: 27bdffe8 addiu sp,sp,-24
- {
- return false;
- }
-
- spr->tpage = x / GFX_TPAGE_WIDTH;
- spr->tpage += (short)(VRAM_W / GFX_TPAGE_WIDTH) * (short)(y / GFX_TPAGE_HEIGHT);
-8002465c: 30a500ff andi a1,a1,0xff
-
- spr->u = (x % GFX_TPAGE_WIDTH);
-80024660: 3042003f andi v0,v0,0x3f
-
- if(spr->attribute & COLORMODE(COLORMODE_8BPP))
-80024664: 30630001 andi v1,v1,0x1
-
- return show;
-}
-
-bool GfxTPageOffsetFromVRAMPosition(GsSprite * spr, short x, short y)
-{
-80024668: afbf0014 sw ra,20(sp)
- {
- return false;
- }
-
- spr->tpage = x / GFX_TPAGE_WIDTH;
- spr->tpage += (short)(VRAM_W / GFX_TPAGE_WIDTH) * (short)(y / GFX_TPAGE_HEIGHT);
-8002466c: a0850011 sb a1,17(a0)
-
- spr->u = (x % GFX_TPAGE_WIDTH);
-
- if(spr->attribute & COLORMODE(COLORMODE_8BPP))
-80024670: 10600003 beqz v1,80024680 <GfxTPageOffsetFromVRAMPosition+0x64>
-80024674: a0820004 sb v0,4(a0)
- {
- // On 8bpp images, it looks like U offset needs to be multiplied by 2.
- spr->u <<= 1;
-80024678: 00021040 sll v0,v0,0x1
-8002467c: a0820004 sb v0,4(a0)
- }
-
- spr->v = (y % GFX_TPAGE_HEIGHT);
-80024680: a0860005 sb a2,5(a0)
-
- dprintf("Sprite:\n\tTPAGE: %d\n\tU=%d\n\tV=%d\n",spr->tpage,spr->u, spr->v);
-80024684: 30c700ff andi a3,a2,0xff
-80024688: 90860004 lbu a2,4(a0)
-8002468c: 3c048004 lui a0,0x8004
-80024690: 0c00ed8f jal 8003b63c <printf>
-80024694: 248407a8 addiu a0,a0,1960
-
- return false;
-}
-80024698: 8fbf0014 lw ra,20(sp)
-8002469c: 00001021 move v0,zero
-800246a0: 03e00008 jr ra
-800246a4: 27bd0018 addiu sp,sp,24
-800246a8: 03e00008 jr ra
-800246ac: 00001021 move v0,zero
-
-800246b0 <GfxIsometricToCartesian>:
-
-TYPE_CARTESIAN_POS GfxIsometricToCartesian(TYPE_ISOMETRIC_POS * ptrIsoPos)
-{
- TYPE_CARTESIAN_POS retCartPos;
-
- retCartPos.x = ptrIsoPos->x - (ptrIsoPos->x >> 1);
-800246b0: 84a30000 lh v1,0(a1)
- retCartPos.x -= ptrIsoPos->y >> 1;
-800246b4: 84a70002 lh a3,2(a1)
-
- return false;
-}
-
-TYPE_CARTESIAN_POS GfxIsometricToCartesian(TYPE_ISOMETRIC_POS * ptrIsoPos)
-{
-800246b8: 00801021 move v0,a0
- retCartPos.x = ptrIsoPos->x - (ptrIsoPos->x >> 1);
- retCartPos.x -= ptrIsoPos->y >> 1;
-
- retCartPos.y = ptrIsoPos->y >> 2;
- retCartPos.y += ptrIsoPos->x >> 2;
- retCartPos.y -= ptrIsoPos->z;
-800246bc: 00073083 sra a2,a3,0x2
-800246c0: 00032083 sra a0,v1,0x2
-800246c4: 00c43021 addu a2,a2,a0
-800246c8: 94a50004 lhu a1,4(a1)
-
- return retCartPos;
-800246cc: 00032043 sra a0,v1,0x1
-800246d0: 00641823 subu v1,v1,a0
-800246d4: 00073843 sra a3,a3,0x1
- retCartPos.x = ptrIsoPos->x - (ptrIsoPos->x >> 1);
- retCartPos.x -= ptrIsoPos->y >> 1;
-
- retCartPos.y = ptrIsoPos->y >> 2;
- retCartPos.y += ptrIsoPos->x >> 2;
- retCartPos.y -= ptrIsoPos->z;
-800246d8: 00c52823 subu a1,a2,a1
-
- return retCartPos;
-800246dc: 00671823 subu v1,v1,a3
-800246e0: a4430000 sh v1,0(v0)
-}
-800246e4: 03e00008 jr ra
-800246e8: a4450002 sh a1,2(v0)
-
-800246ec <GfxIsometricFix16ToCartesian>:
-
-TYPE_CARTESIAN_POS GfxIsometricFix16ToCartesian(TYPE_ISOMETRIC_FIX16_POS * ptrIso16Pos)
-{
- TYPE_ISOMETRIC_POS IsoPos;
-
- IsoPos.x = (short)fix16_to_int(ptrIso16Pos->x);
-800246ec: 8ca30000 lw v1,0(a1)
-
- return retCartPos;
-}
-
-TYPE_CARTESIAN_POS GfxIsometricFix16ToCartesian(TYPE_ISOMETRIC_FIX16_POS * ptrIso16Pos)
-{
-800246f0: 27bdffe0 addiu sp,sp,-32
-800246f4: 00804021 move t0,a0
-static inline int fix16_to_int(fix16_t a)
-{
-#ifdef FIXMATH_NO_ROUNDING
- return a >> 16;
-#else
- if (a >= 0)
-800246f8: 04600004 bltz v1,8002470c <GfxIsometricFix16ToCartesian+0x20>
-800246fc: afbf001c sw ra,28(sp)
- return (a + fix16_one / 2) / fix16_one;
-80024700: 34028000 li v0,0x8000
-80024704: 10000002 b 80024710 <GfxIsometricFix16ToCartesian+0x24>
-80024708: 00621821 addu v1,v1,v0
- else
- return (a - fix16_one / 2) / fix16_one;
-8002470c: 24638000 addiu v1,v1,-32768
-80024710: 000327c3 sra a0,v1,0x1f
-80024714: 3084ffff andi a0,a0,0xffff
-80024718: 00831821 addu v1,a0,v1
-8002471c: 00031c03 sra v1,v1,0x10
- TYPE_ISOMETRIC_POS IsoPos;
-
- IsoPos.x = (short)fix16_to_int(ptrIso16Pos->x);
-80024720: a7a30010 sh v1,16(sp)
- IsoPos.y = (short)fix16_to_int(ptrIso16Pos->y);
-80024724: 8ca30004 lw v1,4(a1)
-80024728: 00000000 nop
-static inline int fix16_to_int(fix16_t a)
-{
-#ifdef FIXMATH_NO_ROUNDING
- return a >> 16;
-#else
- if (a >= 0)
-8002472c: 04600003 bltz v1,8002473c <GfxIsometricFix16ToCartesian+0x50>
-80024730: 34028000 li v0,0x8000
- return (a + fix16_one / 2) / fix16_one;
-80024734: 10000002 b 80024740 <GfxIsometricFix16ToCartesian+0x54>
-80024738: 00621821 addu v1,v1,v0
- else
- return (a - fix16_one / 2) / fix16_one;
-8002473c: 24638000 addiu v1,v1,-32768
-80024740: 000327c3 sra a0,v1,0x1f
-80024744: 3084ffff andi a0,a0,0xffff
-80024748: 00831821 addu v1,a0,v1
-8002474c: 00031c03 sra v1,v1,0x10
-80024750: a7a30012 sh v1,18(sp)
- IsoPos.z = (short)fix16_to_int(ptrIso16Pos->z);
-80024754: 8ca30008 lw v1,8(a1)
-80024758: 00000000 nop
-static inline int fix16_to_int(fix16_t a)
-{
-#ifdef FIXMATH_NO_ROUNDING
- return a >> 16;
-#else
- if (a >= 0)
-8002475c: 04600003 bltz v1,8002476c <GfxIsometricFix16ToCartesian+0x80>
-80024760: 34028000 li v0,0x8000
- return (a + fix16_one / 2) / fix16_one;
-80024764: 10000002 b 80024770 <GfxIsometricFix16ToCartesian+0x84>
-80024768: 00621821 addu v1,v1,v0
- else
- return (a - fix16_one / 2) / fix16_one;
-8002476c: 24638000 addiu v1,v1,-32768
-80024770: 000327c3 sra a0,v1,0x1f
-80024774: 3084ffff andi a0,a0,0xffff
-80024778: 00831821 addu v1,a0,v1
-8002477c: 00031c03 sra v1,v1,0x10
-
- return GfxIsometricToCartesian(&IsoPos);
-80024780: 27a50010 addiu a1,sp,16
-80024784: 01002021 move a0,t0
-80024788: 0c0091ac jal 800246b0 <GfxIsometricToCartesian>
-8002478c: a7a30014 sh v1,20(sp)
-}
-80024790: 8fbf001c lw ra,28(sp)
-80024794: 01001021 move v0,t0
-80024798: 03e00008 jr ra
-8002479c: 27bd0020 addiu sp,sp,32
-
-800247a0 <GfxCartesianToIsometric>:
-
-TYPE_ISOMETRIC_POS GfxCartesianToIsometric(TYPE_CARTESIAN_POS * ptrCartPos)
-{
-800247a0: 00801021 move v0,a0
- TYPE_ISOMETRIC_POS IsoPos;
-
- /*isoX = cartX - cartY;
- isoY = (cartX + cartY) / 2;*/
- IsoPos.x = ptrCartPos->x + (ptrCartPos->y << 1);
-800247a4: 94a40000 lhu a0,0(a1)
-800247a8: 94a50002 lhu a1,2(a1)
- IsoPos.y = (ptrCartPos->y << 1) - ptrCartPos->x;
-
- // Explicitely suppose z = 0
- IsoPos.z = 0;
-
- return IsoPos;
-800247ac: a4400004 sh zero,4(v0)
-{
- TYPE_ISOMETRIC_POS IsoPos;
-
- /*isoX = cartX - cartY;
- isoY = (cartX + cartY) / 2;*/
- IsoPos.x = ptrCartPos->x + (ptrCartPos->y << 1);
-800247b0: 00052840 sll a1,a1,0x1
-800247b4: 30a3ffff andi v1,a1,0xffff
- IsoPos.y = (ptrCartPos->y << 1) - ptrCartPos->x;
-
- // Explicitely suppose z = 0
- IsoPos.z = 0;
-
- return IsoPos;
-800247b8: 00832821 addu a1,a0,v1
-800247bc: 00641823 subu v1,v1,a0
-800247c0: a4450000 sh a1,0(v0)
-}
-800247c4: 03e00008 jr ra
-800247c8: a4430002 sh v1,2(v0)
-
-800247cc <ISR_LoadMenuVBlank>:
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-}
-
-void ISR_LoadMenuVBlank(void)
-{
-800247cc: 27bdffe0 addiu sp,sp,-32
-800247d0: afbf001c sw ra,28(sp)
-800247d4: afb20018 sw s2,24(sp)
-800247d8: afb10014 sw s1,20(sp)
- uint8_t i;
-
- if( (SystemIsBusy() == true) || (GfxIsGPUBusy() == true) )
-800247dc: 0c00a057 jal 8002815c <SystemIsBusy>
-800247e0: afb00010 sw s0,16(sp)
-800247e4: 1440010e bnez v0,80024c20 <ISR_LoadMenuVBlank+0x454>
-800247e8: 00000000 nop
-800247ec: 0c00901d jal 80024074 <GfxIsGPUBusy>
-800247f0: 00000000 nop
-800247f4: 1440010a bnez v0,80024c20 <ISR_LoadMenuVBlank+0x454>
-800247f8: 3c028007 lui v0,0x8007
- {
- return;
- }
-
- if(startup_flag == true)
-800247fc: 90451c35 lbu a1,7221(v0)
-80024800: 00401821 move v1,v0
-80024804: 30a500ff andi a1,a1,0xff
-80024808: 3c108004 lui s0,0x8004
-8002480c: 3c048004 lui a0,0x8004
-80024810: 3c128004 lui s2,0x8004
-80024814: 10a0005a beqz a1,80024980 <ISR_LoadMenuVBlank+0x1b4>
-80024818: 3c118004 lui s1,0x8004
- {
- // "Loading..." text
- if(LoadMenuTitleSpr.r < LOADING_TITLE_LUMINANCE_TARGET)
-8002481c: 26025d00 addiu v0,s0,23808
-80024820: 9045000e lbu a1,14(v0)
-80024824: 00000000 nop
-80024828: 00053600 sll a2,a1,0x18
-8002482c: 00063603 sra a2,a2,0x18
-80024830: 04c0000a bltz a2,8002485c <ISR_LoadMenuVBlank+0x90>
-80024834: 24a5000a addiu a1,a1,10
- {
- LoadMenuTitleSpr.r += LOADING_TITLE_LUMINANCE_STEP;
-80024838: a045000e sb a1,14(v0)
- LoadMenuTitleSpr.g += LOADING_TITLE_LUMINANCE_STEP;
-8002483c: 9045000f lbu a1,15(v0)
-80024840: 00000000 nop
-80024844: 24a5000a addiu a1,a1,10
-80024848: a045000f sb a1,15(v0)
- LoadMenuTitleSpr.b += LOADING_TITLE_LUMINANCE_STEP;
-8002484c: 90450010 lbu a1,16(v0)
-80024850: 00000000 nop
-80024854: 24a5000a addiu a1,a1,10
-80024858: a0450010 sb a1,16(v0)
-
- loadMenuBg.b[0] += BG_INCREASE_STEP;
- loadMenuBg.b[1] += BG_INCREASE_STEP;
- }
- // Blue background
- if(loadMenuBg.b[2] < BG_BLUE_TARGET_VALUE)
-8002485c: 24825d58 addiu v0,a0,23896
-80024860: 9045000a lbu a1,10(v0)
-80024864: 00000000 nop
-80024868: 2ca600c0 sltiu a2,a1,192
-8002486c: 10c00006 beqz a2,80024888 <ISR_LoadMenuVBlank+0xbc>
-80024870: 24a50010 addiu a1,a1,16
- {
- loadMenuBg.b[2] += BG_INCREASE_STEP;
-80024874: a045000a sb a1,10(v0)
- loadMenuBg.b[3] += BG_INCREASE_STEP;
-80024878: 9045000b lbu a1,11(v0)
-8002487c: 00000000 nop
-80024880: 24a50010 addiu a1,a1,16
-80024884: a045000b sb a1,11(v0)
- }
-
- if(LoadMenuBarRect.r < LOADING_BAR_LUMINANCE_TARGET)
-80024888: 26425cb0 addiu v0,s2,23728
-8002488c: 90450008 lbu a1,8(v0)
-80024890: 00000000 nop
-80024894: 00053600 sll a2,a1,0x18
-80024898: 00063603 sra a2,a2,0x18
-8002489c: 04c0000d bltz a2,800248d4 <ISR_LoadMenuVBlank+0x108>
-800248a0: 00000000 nop
- {
- LoadMenuBarRect.r += LOADING_BAR_LUMINANCE_STEP;
- LoadMenuBarRect.g += LOADING_BAR_LUMINANCE_STEP;
-800248a4: 90430009 lbu v1,9(v0)
- loadMenuBg.b[3] += BG_INCREASE_STEP;
- }
-
- if(LoadMenuBarRect.r < LOADING_BAR_LUMINANCE_TARGET)
- {
- LoadMenuBarRect.r += LOADING_BAR_LUMINANCE_STEP;
-800248a8: 24a5000a addiu a1,a1,10
- LoadMenuBarRect.g += LOADING_BAR_LUMINANCE_STEP;
-800248ac: 2463000a addiu v1,v1,10
-800248b0: a0430009 sb v1,9(v0)
- LoadMenuBarRect.b += LOADING_BAR_LUMINANCE_STEP;
-800248b4: 9043000a lbu v1,10(v0)
- loadMenuBg.b[3] += BG_INCREASE_STEP;
- }
-
- if(LoadMenuBarRect.r < LOADING_BAR_LUMINANCE_TARGET)
- {
- LoadMenuBarRect.r += LOADING_BAR_LUMINANCE_STEP;
-800248b8: a0450008 sb a1,8(v0)
- LoadMenuBarRect.g += LOADING_BAR_LUMINANCE_STEP;
- LoadMenuBarRect.b += LOADING_BAR_LUMINANCE_STEP;
-800248bc: 2463000a addiu v1,v1,10
-800248c0: a043000a sb v1,10(v0)
-800248c4: 3c058004 lui a1,0x8004
-800248c8: 26225cc0 addiu v0,s1,23744
-800248cc: 1000000a b 800248f8 <ISR_LoadMenuVBlank+0x12c>
-800248d0: 24a55d00 addiu a1,a1,23808
- }
- else
- {
- startup_flag = false;
-800248d4: a0601c35 sb zero,7221(v1)
- isr_started = true;
-800248d8: 3c028007 lui v0,0x8007
-800248dc: 24030001 li v1,1
-800248e0: a0431c34 sb v1,7220(v0)
-800248e4: 1000fff8 b 800248c8 <ISR_LoadMenuVBlank+0xfc>
-800248e8: 3c058004 lui a1,0x8004
-800248ec: 24420010 addiu v0,v0,16
- }
-
- for(i = 0;i < LOADING_BAR_N_LINES ; i++)
-800248f0: 10450011 beq v0,a1,80024938 <ISR_LoadMenuVBlank+0x16c>
-800248f4: 00000000 nop
- {
- if(LoadMenuBarLines[i].r < LOADING_BAR_LUMINANCE_TARGET)
-800248f8: 90430000 lbu v1,0(v0)
-800248fc: 00000000 nop
-80024900: 00033600 sll a2,v1,0x18
-80024904: 00063603 sra a2,a2,0x18
-80024908: 04c0fff8 bltz a2,800248ec <ISR_LoadMenuVBlank+0x120>
-8002490c: 2463000a addiu v1,v1,10
- {
- LoadMenuBarLines[i].r += LOADING_BAR_LUMINANCE_STEP;
-80024910: a0430000 sb v1,0(v0)
- LoadMenuBarLines[i].g += LOADING_BAR_LUMINANCE_STEP;
-80024914: 90430001 lbu v1,1(v0)
-80024918: 00000000 nop
-8002491c: 2463000a addiu v1,v1,10
-80024920: a0430001 sb v1,1(v0)
- LoadMenuBarLines[i].b += LOADING_BAR_LUMINANCE_STEP;
-80024924: 90430002 lbu v1,2(v0)
-80024928: 00000000 nop
-8002492c: 2463000a addiu v1,v1,10
-80024930: 1000ffee b 800248ec <ISR_LoadMenuVBlank+0x120>
-80024934: a0430002 sb v1,2(v0)
- }
- }
-
- if(LoadMenuPlaneSpr.r < PLANE_LUMINANCE_TARGET_VALUE)
-80024938: 3c028004 lui v0,0x8004
-8002493c: 24425d2c addiu v0,v0,23852
-80024940: 9043000e lbu v1,14(v0)
-80024944: 00000000 nop
-80024948: 00032e00 sll a1,v1,0x18
-8002494c: 00052e03 sra a1,a1,0x18
-80024950: 04a00079 bltz a1,80024b38 <ISR_LoadMenuVBlank+0x36c>
-80024954: 24630010 addiu v1,v1,16
- {
- LoadMenuPlaneSpr.r += PLANE_LUMINANCE_STEP;
-80024958: a043000e sb v1,14(v0)
- LoadMenuPlaneSpr.g += PLANE_LUMINANCE_STEP;
-8002495c: 9043000f lbu v1,15(v0)
-80024960: 00000000 nop
-80024964: 24630010 addiu v1,v1,16
-80024968: a043000f sb v1,15(v0)
- LoadMenuPlaneSpr.b += PLANE_LUMINANCE_STEP;
-8002496c: 90430010 lbu v1,16(v0)
-80024970: 00000000 nop
-80024974: 24630010 addiu v1,v1,16
-80024978: 1000006f b 80024b38 <ISR_LoadMenuVBlank+0x36c>
-8002497c: a0430010 sb v1,16(v0)
- }
-
- }
- else if(end_flag == true)
-80024980: 3c038007 lui v1,0x8007
-80024984: 90621c33 lbu v0,7219(v1)
-80024988: 00000000 nop
-8002498c: 304200ff andi v0,v0,0xff
-80024990: 10400069 beqz v0,80024b38 <ISR_LoadMenuVBlank+0x36c>
-80024994: 26025d00 addiu v0,s0,23808
- {
- LoadMenuTitleSpr.r -= LOADING_TITLE_LUMINANCE_STEP;
-80024998: 9045000e lbu a1,14(v0)
-8002499c: 00000000 nop
-800249a0: 24a5fff6 addiu a1,a1,-10
-800249a4: a045000e sb a1,14(v0)
- LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP;
-800249a8: 9045000f lbu a1,15(v0)
-800249ac: 00000000 nop
-800249b0: 24a5fff6 addiu a1,a1,-10
-800249b4: a045000f sb a1,15(v0)
- LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-800249b8: 90450010 lbu a1,16(v0)
-800249bc: 00000000 nop
-800249c0: 24a5fff6 addiu a1,a1,-10
-800249c4: a0450010 sb a1,16(v0)
-
- if(loadMenuBg.g[0] > 0)
-800249c8: 24825d58 addiu v0,a0,23896
-800249cc: 90450004 lbu a1,4(v0)
-800249d0: 00000000 nop
-800249d4: 10a00011 beqz a1,80024a1c <ISR_LoadMenuVBlank+0x250>
-800249d8: 24a5fff0 addiu a1,a1,-16
- {
- loadMenuBg.r[0] -= BG_INCREASE_STEP;
- loadMenuBg.r[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.g[0] -= BG_INCREASE_STEP;
-800249dc: a0450004 sb a1,4(v0)
- loadMenuBg.g[1] -= BG_INCREASE_STEP;
-800249e0: 90450005 lbu a1,5(v0)
- LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP;
- LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-
- if(loadMenuBg.g[0] > 0)
- {
- loadMenuBg.r[0] -= BG_INCREASE_STEP;
-800249e4: 90865d58 lbu a2,23896(a0)
- loadMenuBg.r[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.g[0] -= BG_INCREASE_STEP;
- loadMenuBg.g[1] -= BG_INCREASE_STEP;
-800249e8: 24a5fff0 addiu a1,a1,-16
-800249ec: a0450005 sb a1,5(v0)
-
- loadMenuBg.b[0] -= BG_INCREASE_STEP;
-800249f0: 90450008 lbu a1,8(v0)
- LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP;
- LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-
- if(loadMenuBg.g[0] > 0)
- {
- loadMenuBg.r[0] -= BG_INCREASE_STEP;
-800249f4: 24c6fff0 addiu a2,a2,-16
- loadMenuBg.r[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.g[0] -= BG_INCREASE_STEP;
- loadMenuBg.g[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.b[0] -= BG_INCREASE_STEP;
-800249f8: 24a5fff0 addiu a1,a1,-16
- LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP;
- LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-
- if(loadMenuBg.g[0] > 0)
- {
- loadMenuBg.r[0] -= BG_INCREASE_STEP;
-800249fc: a0865d58 sb a2,23896(a0)
- loadMenuBg.r[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.g[0] -= BG_INCREASE_STEP;
- loadMenuBg.g[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.b[0] -= BG_INCREASE_STEP;
-80024a00: a0450008 sb a1,8(v0)
- LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-
- if(loadMenuBg.g[0] > 0)
- {
- loadMenuBg.r[0] -= BG_INCREASE_STEP;
- loadMenuBg.r[1] -= BG_INCREASE_STEP;
-80024a04: 90460001 lbu a2,1(v0)
-
- loadMenuBg.g[0] -= BG_INCREASE_STEP;
- loadMenuBg.g[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.b[0] -= BG_INCREASE_STEP;
- loadMenuBg.b[1] -= BG_INCREASE_STEP;
-80024a08: 90450009 lbu a1,9(v0)
- LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-
- if(loadMenuBg.g[0] > 0)
- {
- loadMenuBg.r[0] -= BG_INCREASE_STEP;
- loadMenuBg.r[1] -= BG_INCREASE_STEP;
-80024a0c: 24c6fff0 addiu a2,a2,-16
-
- loadMenuBg.g[0] -= BG_INCREASE_STEP;
- loadMenuBg.g[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.b[0] -= BG_INCREASE_STEP;
- loadMenuBg.b[1] -= BG_INCREASE_STEP;
-80024a10: 24a5fff0 addiu a1,a1,-16
- LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP;
-
- if(loadMenuBg.g[0] > 0)
- {
- loadMenuBg.r[0] -= BG_INCREASE_STEP;
- loadMenuBg.r[1] -= BG_INCREASE_STEP;
-80024a14: a0460001 sb a2,1(v0)
-
- loadMenuBg.g[0] -= BG_INCREASE_STEP;
- loadMenuBg.g[1] -= BG_INCREASE_STEP;
-
- loadMenuBg.b[0] -= BG_INCREASE_STEP;
- loadMenuBg.b[1] -= BG_INCREASE_STEP;
-80024a18: a0450009 sb a1,9(v0)
- }
-
- if(loadMenuBg.b[2] > 0)
-80024a1c: 9045000a lbu a1,10(v0)
-80024a20: 00000000 nop
-80024a24: 10a00006 beqz a1,80024a40 <ISR_LoadMenuVBlank+0x274>
-80024a28: 24a5fff0 addiu a1,a1,-16
- {
- loadMenuBg.b[2] -= BG_INCREASE_STEP;
-80024a2c: a045000a sb a1,10(v0)
- loadMenuBg.b[3] -= BG_INCREASE_STEP;
-80024a30: 9045000b lbu a1,11(v0)
-80024a34: 00000000 nop
-80024a38: 24a5fff0 addiu a1,a1,-16
-80024a3c: a045000b sb a1,11(v0)
- }
-
- if(loadMenuBg.b[2] == 0)
-80024a40: 9042000a lbu v0,10(v0)
-80024a44: 00000000 nop
-80024a48: 14400005 bnez v0,80024a60 <ISR_LoadMenuVBlank+0x294>
-80024a4c: 00000000 nop
- {
- end_flag = false;
-80024a50: a0601c33 sb zero,7219(v1)
- isr_ended = true;
-80024a54: 3c028007 lui v0,0x8007
-80024a58: 24030001 li v1,1
-80024a5c: a0431c32 sb v1,7218(v0)
- }
-
- if(LoadMenuPlaneSpr.r > 0)
-80024a60: 3c038004 lui v1,0x8004
-80024a64: 24625d2c addiu v0,v1,23852
-80024a68: 9045000e lbu a1,14(v0)
-80024a6c: 00000000 nop
-80024a70: 10a0000a beqz a1,80024a9c <ISR_LoadMenuVBlank+0x2d0>
-80024a74: 24a5fff0 addiu a1,a1,-16
- {
- LoadMenuPlaneSpr.r -= PLANE_LUMINANCE_STEP;
-80024a78: a045000e sb a1,14(v0)
- LoadMenuPlaneSpr.g -= PLANE_LUMINANCE_STEP;
-80024a7c: 9045000f lbu a1,15(v0)
-80024a80: 00000000 nop
-80024a84: 24a5fff0 addiu a1,a1,-16
-80024a88: a045000f sb a1,15(v0)
- LoadMenuPlaneSpr.b -= PLANE_LUMINANCE_STEP;
-80024a8c: 90450010 lbu a1,16(v0)
-80024a90: 00000000 nop
-80024a94: 24a5fff0 addiu a1,a1,-16
-80024a98: a0450010 sb a1,16(v0)
- }
-
- LoadMenuPlaneSpr.x = (PLANE_START_X + LOADING_BAR_WIDTH);
-80024a9c: 24050138 li a1,312
-80024aa0: a4655d2c sh a1,23852(v1)
- LoadMenuPlaneSpr.y = PLANE_START_Y;
-80024aa4: 240300c8 li v1,200
-80024aa8: a4430002 sh v1,2(v0)
-
- LoadMenuBarRect.w = LOADING_BAR_WIDTH;
-80024aac: 26425cb0 addiu v0,s2,23728
-80024ab0: 24030100 li v1,256
-80024ab4: a4430004 sh v1,4(v0)
-
- if(LoadMenuBarRect.r > 0)
-80024ab8: 90430008 lbu v1,8(v0)
-80024abc: 00000000 nop
-80024ac0: 1060000b beqz v1,80024af0 <ISR_LoadMenuVBlank+0x324>
-80024ac4: 3c058004 lui a1,0x8004
- {
- LoadMenuBarRect.r -= LOADING_BAR_LUMINANCE_STEP;
-80024ac8: 2463fff6 addiu v1,v1,-10
-80024acc: a0430008 sb v1,8(v0)
- LoadMenuBarRect.g -= LOADING_BAR_LUMINANCE_STEP;
-80024ad0: 90430009 lbu v1,9(v0)
-80024ad4: 00000000 nop
-80024ad8: 2463fff6 addiu v1,v1,-10
-80024adc: a0430009 sb v1,9(v0)
- LoadMenuBarRect.b -= LOADING_BAR_LUMINANCE_STEP;
-80024ae0: 9043000a lbu v1,10(v0)
-80024ae4: 00000000 nop
-80024ae8: 2463fff6 addiu v1,v1,-10
-80024aec: a043000a sb v1,10(v0)
-80024af0: 26225cc0 addiu v0,s1,23744
-80024af4: 24a55d00 addiu a1,a1,23808
- }
-
- for(i = 0;i < LOADING_BAR_N_LINES ; i++)
- {
- if(LoadMenuBarLines[i].r > 0)
-80024af8: 90430000 lbu v1,0(v0)
-80024afc: 00000000 nop
-80024b00: 1060000a beqz v1,80024b2c <ISR_LoadMenuVBlank+0x360>
-80024b04: 2463fff6 addiu v1,v1,-10
- {
- LoadMenuBarLines[i].r -= LOADING_BAR_LUMINANCE_STEP;
-80024b08: a0430000 sb v1,0(v0)
- LoadMenuBarLines[i].g -= LOADING_BAR_LUMINANCE_STEP;
-80024b0c: 90430001 lbu v1,1(v0)
-80024b10: 00000000 nop
-80024b14: 2463fff6 addiu v1,v1,-10
-80024b18: a0430001 sb v1,1(v0)
- LoadMenuBarLines[i].b -= LOADING_BAR_LUMINANCE_STEP;
-80024b1c: 90430002 lbu v1,2(v0)
-80024b20: 00000000 nop
-80024b24: 2463fff6 addiu v1,v1,-10
-80024b28: a0430002 sb v1,2(v0)
-80024b2c: 24420010 addiu v0,v0,16
- LoadMenuBarRect.r -= LOADING_BAR_LUMINANCE_STEP;
- LoadMenuBarRect.g -= LOADING_BAR_LUMINANCE_STEP;
- LoadMenuBarRect.b -= LOADING_BAR_LUMINANCE_STEP;
- }
-
- for(i = 0;i < LOADING_BAR_N_LINES ; i++)
-80024b30: 1445fff1 bne v0,a1,80024af8 <ISR_LoadMenuVBlank+0x32c>
-80024b34: 00000000 nop
- LoadMenuBarLines[i].b -= LOADING_BAR_LUMINANCE_STEP;
- }
- }
- }
-
- GsSortGPoly4(&loadMenuBg);
-80024b38: 0c00b0e6 jal 8002c398 <GsSortGPoly4>
-80024b3c: 24845d58 addiu a0,a0,23896
-
- GsSortRectangle(&LoadMenuBarRect);
-80024b40: 0c00b762 jal 8002dd88 <GsSortRectangle>
-80024b44: 26445cb0 addiu a0,s2,23728
-
- for(i = 0 ; i < LOADING_BAR_N_LINES ; i++)
- {
- GsSortLine(&LoadMenuBarLines[i]);
-80024b48: 0c00b18e jal 8002c638 <GsSortLine>
-80024b4c: 26245cc0 addiu a0,s1,23744
-80024b50: 3c048004 lui a0,0x8004
-80024b54: 0c00b18e jal 8002c638 <GsSortLine>
-80024b58: 24845cd0 addiu a0,a0,23760
-80024b5c: 3c048004 lui a0,0x8004
-80024b60: 0c00b18e jal 8002c638 <GsSortLine>
-80024b64: 24845ce0 addiu a0,a0,23776
-80024b68: 3c048004 lui a0,0x8004
-80024b6c: 0c00b18e jal 8002c638 <GsSortLine>
-80024b70: 24845cf0 addiu a0,a0,23792
- }
-
- GsSortSprite(&LoadMenuTitleSpr);
-80024b74: 0c00b356 jal 8002cd58 <GsSortSprite>
-80024b78: 26045d00 addiu a0,s0,23808
-
- LoadMenuPlaneSpr.w = PLANE_SIZE;
-80024b7c: 3c048004 lui a0,0x8004
-80024b80: 24845d2c addiu a0,a0,23852
-80024b84: 24020010 li v0,16
- LoadMenuPlaneSpr.u = PLANE_U;
- LoadMenuPlaneSpr.v = PLANE_V;
-
- GsSortSprite(&LoadMenuPlaneSpr);
-
- FontSetFlags(&SmallFont, FONT_BLEND_EFFECT);
-80024b88: 3c108007 lui s0,0x8007
- GsSortLine(&LoadMenuBarLines[i]);
- }
-
- GsSortSprite(&LoadMenuTitleSpr);
-
- LoadMenuPlaneSpr.w = PLANE_SIZE;
-80024b8c: a4820006 sh v0,6(a0)
- LoadMenuPlaneSpr.h = PLANE_SIZE;
-80024b90: a4820008 sh v0,8(a0)
-
- LoadMenuPlaneSpr.u = PLANE_U;
- LoadMenuPlaneSpr.v = PLANE_V;
-80024b94: 24020020 li v0,32
-80024b98: a0820005 sb v0,5(a0)
-
- GsSortSprite(&LoadMenuPlaneSpr);
-80024b9c: 0c00b356 jal 8002cd58 <GsSortSprite>
-80024ba0: a0800004 sb zero,4(a0)
-
- FontSetFlags(&SmallFont, FONT_BLEND_EFFECT);
-80024ba4: 26048d38 addiu a0,s0,-29384
-80024ba8: 0c008441 jal 80021104 <FontSetFlags>
-80024bac: 24050004 li a1,4
-
- FontPrintText( &SmallFont,
-80024bb0: 3c028007 lui v0,0x8007
-80024bb4: 8c471c38 lw a3,7224(v0)
-80024bb8: 26048d38 addiu a0,s0,-29384
-80024bbc: 240600e0 li a2,224
-80024bc0: 0c008451 jal 80021144 <FontPrintText>
-80024bc4: 24050038 li a1,56
- LOADING_BAR_X - 8,
- LOADING_BAR_Y + LOADING_BAR_HEIGHT + 8,
- strCurrentFile );
-
- FontSetFlags(&SmallFont, FONT_NOFLAGS);
-80024bc8: 26048d38 addiu a0,s0,-29384
-80024bcc: 0c008441 jal 80021104 <FontSetFlags>
-80024bd0: 00002821 move a1,zero
-
- small_font_lum -= 8;
-80024bd4: 3c028007 lui v0,0x8007
-80024bd8: 90431c3c lbu v1,7228(v0)
-
- SmallFont.spr.r = small_font_lum;
-80024bdc: 26108d38 addiu s0,s0,-29384
- LOADING_BAR_Y + LOADING_BAR_HEIGHT + 8,
- strCurrentFile );
-
- FontSetFlags(&SmallFont, FONT_NOFLAGS);
-
- small_font_lum -= 8;
-80024be0: 2463fff8 addiu v1,v1,-8
-80024be4: 306300ff andi v1,v1,0xff
-80024be8: a0431c3c sb v1,7228(v0)
-
- SmallFont.spr.r = small_font_lum;
-80024bec: 90431c3c lbu v1,7228(v0)
-80024bf0: 00000000 nop
-80024bf4: a203000e sb v1,14(s0)
- SmallFont.spr.g = small_font_lum;
-80024bf8: 90431c3c lbu v1,7228(v0)
- SmallFont.spr.b = small_font_lum;
-80024bfc: 90421c3c lbu v0,7228(v0)
- FontSetFlags(&SmallFont, FONT_NOFLAGS);
-
- small_font_lum -= 8;
-
- SmallFont.spr.r = small_font_lum;
- SmallFont.spr.g = small_font_lum;
-80024c00: a203000f sb v1,15(s0)
- SmallFont.spr.b = small_font_lum;
-80024c04: a2020010 sb v0,16(s0)
-
- GfxDrawScene_Fast();
-}
-80024c08: 8fbf001c lw ra,28(sp)
-80024c0c: 8fb20018 lw s2,24(sp)
-80024c10: 8fb10014 lw s1,20(sp)
-80024c14: 8fb00010 lw s0,16(sp)
-
- SmallFont.spr.r = small_font_lum;
- SmallFont.spr.g = small_font_lum;
- SmallFont.spr.b = small_font_lum;
-
- GfxDrawScene_Fast();
-80024c18: 08008fc1 j 80023f04 <GfxDrawScene_Fast>
-80024c1c: 27bd0020 addiu sp,sp,32
-}
-80024c20: 8fbf001c lw ra,28(sp)
-80024c24: 8fb20018 lw s2,24(sp)
-80024c28: 8fb10014 lw s1,20(sp)
-80024c2c: 8fb00010 lw s0,16(sp)
-80024c30: 03e00008 jr ra
-80024c34: 27bd0020 addiu sp,sp,32
-
-80024c38 <LoadMenuLoadFileList.part.1>:
-
- LoadMenuLoadFileList(fileList,dest,szFileList,szDestList);
-
-}
-
-void LoadMenuLoadFileList( char * fileList[], void * dest[],
-80024c38: 27bdff60 addiu sp,sp,-160
-80024c3c: afb50090 sw s5,144(sp)
-80024c40: afb30088 sw s3,136(sp)
-
- //We want to get file extension, so split into tokens
- strtok(fileList[fileLoadedCount],".;");
- extension = strtok(NULL,".;");
-
- dprintf("File extension: .%s\n",extension);
-80024c44: 3c158004 lui s5,0x8004
-
- // Backup original file path
- strncpy(aux_file_name,fileList[fileLoadedCount],100);
-
- //We want to get file extension, so split into tokens
- strtok(fileList[fileLoadedCount],".;");
-80024c48: 3c138004 lui s3,0x8004
-
- LoadMenuLoadFileList(fileList,dest,szFileList,szDestList);
-
-}
-
-void LoadMenuLoadFileList( char * fileList[], void * dest[],
-80024c4c: afb60094 sw s6,148(sp)
-80024c50: afb4008c sw s4,140(sp)
-80024c54: afb20084 sw s2,132(sp)
-80024c58: afb10080 sw s1,128(sp)
-80024c5c: afb0007c sw s0,124(sp)
-80024c60: afbf009c sw ra,156(sp)
-80024c64: afb70098 sw s7,152(sp)
-80024c68: 00c0a021 move s4,a2
-80024c6c: 00808021 move s0,a0
-80024c70: 00a08821 move s1,a1
-80024c74: 00009021 move s2,zero
- if(fileList[fileLoadedCount] == NULL)
- {
- continue;
- }
-
- strCurrentFile = fileList[fileLoadedCount];
-80024c78: 3c168007 lui s6,0x8007
-
- // Backup original file path
- strncpy(aux_file_name,fileList[fileLoadedCount],100);
-
- //We want to get file extension, so split into tokens
- strtok(fileList[fileLoadedCount],".;");
-80024c7c: 267307c8 addiu s3,s3,1992
- extension = strtok(NULL,".;");
-
- dprintf("File extension: .%s\n",extension);
-80024c80: 26b507cc addiu s5,s5,1996
- dprintf("File list size different from dest list size! %d vs %d\n",
- szFileList, szDestList);
- return;
- }
-
- for(fileLoadedCount = 0; fileLoadedCount < szFileList ; fileLoadedCount++)
-80024c84: 1254007e beq s2,s4,80024e80 <LoadMenuLoadFileList.part.1+0x248>
-80024c88: 00000000 nop
- {
- if(fileList[fileLoadedCount] == NULL)
-80024c8c: 8e050000 lw a1,0(s0)
-80024c90: 00000000 nop
-80024c94: 10a00076 beqz a1,80024e70 <LoadMenuLoadFileList.part.1+0x238>
-80024c98: 24020100 li v0,256
-
- x_increment = (short)(LOADING_BAR_WIDTH / szFileList);
-
- // Calculate new X position for loading menu plane sprite.
- // This is not calculated on ISR as to avoid longer ISR time.
- LoadMenuPlaneSpr.x = (PLANE_START_X + (fileLoadedCount* x_increment) );
-80024c9c: 16800002 bnez s4,80024ca8 <LoadMenuLoadFileList.part.1+0x70>
-80024ca0: 0054001a div zero,v0,s4
-80024ca4: 0007000d break 0x7
-80024ca8: 3c038004 lui v1,0x8004
- LoadMenuBarRect.w = fileLoadedCount* x_increment;
-
- //dprintf("Files %d / %d loaded. New plane X = %d.\n",fileLoadedCount,szFileList,LoadMenuPlaneSpr.x);
-
- // Backup original file path
- strncpy(aux_file_name,fileList[fileLoadedCount],100);
-80024cac: 24060064 li a2,100
- if(fileList[fileLoadedCount] == NULL)
- {
- continue;
- }
-
- strCurrentFile = fileList[fileLoadedCount];
-80024cb0: aec51c38 sw a1,7224(s6)
-
- x_increment = (short)(LOADING_BAR_WIDTH / szFileList);
-
- // Calculate new X position for loading menu plane sprite.
- // This is not calculated on ISR as to avoid longer ISR time.
- LoadMenuPlaneSpr.x = (PLANE_START_X + (fileLoadedCount* x_increment) );
-80024cb4: 00001012 mflo v0
- ...
-80024cc0: 00520018 mult v0,s2
-80024cc4: 00001012 mflo v0
-80024cc8: 3042ffff andi v0,v0,0xffff
-80024ccc: 24440038 addiu a0,v0,56
-80024cd0: a4645d2c sh a0,23852(v1)
-
- LoadMenuBarRect.w = fileLoadedCount* x_increment;
-80024cd4: 3c038004 lui v1,0x8004
-
- //dprintf("Files %d / %d loaded. New plane X = %d.\n",fileLoadedCount,szFileList,LoadMenuPlaneSpr.x);
-
- // Backup original file path
- strncpy(aux_file_name,fileList[fileLoadedCount],100);
-80024cd8: 27a40010 addiu a0,sp,16
-80024cdc: 0c00d860 jal 80036180 <strncpy>
-80024ce0: a4625cb4 sh v0,23732(v1)
-
- //We want to get file extension, so split into tokens
- strtok(fileList[fileLoadedCount],".;");
-80024ce4: 8e040000 lw a0,0(s0)
-80024ce8: 0c00ddea jal 800377a8 <strtok>
-80024cec: 02602821 move a1,s3
- extension = strtok(NULL,".;");
-80024cf0: 02602821 move a1,s3
-80024cf4: 0c00ddea jal 800377a8 <strtok>
-80024cf8: 00002021 move a0,zero
-
- dprintf("File extension: .%s\n",extension);
-80024cfc: 00402821 move a1,v0
-80024d00: 02a02021 move a0,s5
-80024d04: 0c00ed8f jal 8003b63c <printf>
-80024d08: 0040b821 move s7,v0
- //Restore original file path in order to load file
- strncpy(fileList[fileLoadedCount],aux_file_name,100);
-80024d0c: 8e040000 lw a0,0(s0)
-80024d10: 24060064 li a2,100
-80024d14: 0c00d860 jal 80036180 <strncpy>
-80024d18: 27a50010 addiu a1,sp,16
-
- if(strncmp(extension,"TIM",3) == 0)
-80024d1c: 3c058004 lui a1,0x8004
-80024d20: 24060003 li a2,3
-80024d24: 24a507e4 addiu a1,a1,2020
-80024d28: 0c00d9dd jal 80036774 <strncmp>
-80024d2c: 02e02021 move a0,s7
-80024d30: 1440000a bnez v0,80024d5c <LoadMenuLoadFileList.part.1+0x124>
-80024d34: 3c058004 lui a1,0x8004
- {
- if(GfxSpriteFromFile(fileList[fileLoadedCount], dest[fileLoadedCount]) == false)
-80024d38: 8e250000 lw a1,0(s1)
-80024d3c: 8e040000 lw a0,0(s0)
-80024d40: 0c00903c jal 800240f0 <GfxSpriteFromFile>
-80024d44: 00000000 nop
-80024d48: 14400049 bnez v0,80024e70 <LoadMenuLoadFileList.part.1+0x238>
-80024d4c: 3c048004 lui a0,0x8004
- {
- dprintf("Could not load image file \"%s\"!\n",fileList[fileLoadedCount]);
-80024d50: 8e050000 lw a1,0(s0)
-80024d54: 10000044 b 80024e68 <LoadMenuLoadFileList.part.1+0x230>
-80024d58: 248407e8 addiu a0,a0,2024
- }
- }
- else if(strncmp(extension,"CLT",3) == 0)
-80024d5c: 24060003 li a2,3
-80024d60: 24a5080c addiu a1,a1,2060
-80024d64: 0c00d9dd jal 80036774 <strncmp>
-80024d68: 02e02021 move a0,s7
-80024d6c: 1440000f bnez v0,80024dac <LoadMenuLoadFileList.part.1+0x174>
-80024d70: 3c058004 lui a1,0x8004
- {
- if(dest[fileLoadedCount] != NULL)
-80024d74: 8e250000 lw a1,0(s1)
-80024d78: 00000000 nop
-80024d7c: 10a00003 beqz a1,80024d8c <LoadMenuLoadFileList.part.1+0x154>
-80024d80: 3c048004 lui a0,0x8004
- {
- dprintf("WARNING: File %s linked to non-NULL destination pointer!\n", dest[fileLoadedCount]);
-80024d84: 0c00ed8f jal 8003b63c <printf>
-80024d88: 24840810 addiu a0,a0,2064
- }
-
- if(GfxCLUTFromFile(fileList[fileLoadedCount]) == false)
-80024d8c: 8e040000 lw a0,0(s0)
-80024d90: 0c00905c jal 80024170 <GfxCLUTFromFile>
-80024d94: 00000000 nop
-80024d98: 14400035 bnez v0,80024e70 <LoadMenuLoadFileList.part.1+0x238>
-80024d9c: 3c048004 lui a0,0x8004
- {
- dprintf("Could not load CLUT file \"%s\"!\n",fileList[fileLoadedCount]);
-80024da0: 8e050000 lw a1,0(s0)
-80024da4: 10000030 b 80024e68 <LoadMenuLoadFileList.part.1+0x230>
-80024da8: 2484084c addiu a0,a0,2124
- }
- }
- else if(strncmp(extension,"VAG",3) == 0)
-80024dac: 24060003 li a2,3
-80024db0: 24a5086c addiu a1,a1,2156
-80024db4: 0c00d9dd jal 80036774 <strncmp>
-80024db8: 02e02021 move a0,s7
-80024dbc: 1440000a bnez v0,80024de8 <LoadMenuLoadFileList.part.1+0x1b0>
-80024dc0: 3c058004 lui a1,0x8004
- {
- if(SfxUploadSound(fileList[fileLoadedCount], dest[fileLoadedCount]) == false)
-80024dc4: 8e250000 lw a1,0(s1)
-80024dc8: 8e040000 lw a0,0(s0)
-80024dcc: 0c009eef jal 80027bbc <SfxUploadSound>
-80024dd0: 00000000 nop
-80024dd4: 14400026 bnez v0,80024e70 <LoadMenuLoadFileList.part.1+0x238>
-80024dd8: 3c048004 lui a0,0x8004
- {
- dprintf("Could not load sound file \"%s\"!\n",fileList[fileLoadedCount]);
-80024ddc: 8e050000 lw a1,0(s0)
-80024de0: 10000021 b 80024e68 <LoadMenuLoadFileList.part.1+0x230>
-80024de4: 24840870 addiu a0,a0,2160
- }
- }
- else if(strncmp(extension,"FNT",3) == 0)
-80024de8: 24060003 li a2,3
-80024dec: 24a50894 addiu a1,a1,2196
-80024df0: 0c00d9dd jal 80036774 <strncmp>
-80024df4: 02e02021 move a0,s7
-80024df8: 1440000a bnez v0,80024e24 <LoadMenuLoadFileList.part.1+0x1ec>
-80024dfc: 3c058004 lui a1,0x8004
- {
- if(FontLoadImage(fileList[fileLoadedCount], dest[fileLoadedCount]) == false)
-80024e00: 8e250000 lw a1,0(s1)
-80024e04: 8e040000 lw a0,0(s0)
-80024e08: 0c008411 jal 80021044 <FontLoadImage>
-80024e0c: 00000000 nop
-80024e10: 14400017 bnez v0,80024e70 <LoadMenuLoadFileList.part.1+0x238>
-80024e14: 3c048004 lui a0,0x8004
- {
- dprintf("Could not load font file \"%s\"!\n",fileList[fileLoadedCount]);
-80024e18: 8e050000 lw a1,0(s0)
-80024e1c: 10000012 b 80024e68 <LoadMenuLoadFileList.part.1+0x230>
-80024e20: 24840898 addiu a0,a0,2200
- }
- }
- else if(strncmp(extension,"PLT",3) == 0)
-80024e24: 24060003 li a2,3
-80024e28: 24a508b8 addiu a1,a1,2232
-80024e2c: 0c00d9dd jal 80036774 <strncmp>
-80024e30: 02e02021 move a0,s7
-80024e34: 1440000a bnez v0,80024e60 <LoadMenuLoadFileList.part.1+0x228>
-80024e38: 3c048004 lui a0,0x8004
- {
- if(PltParserLoadFile(fileList[fileLoadedCount], dest[fileLoadedCount]) == false)
-80024e3c: 8e250000 lw a1,0(s1)
-80024e40: 8e040000 lw a0,0(s0)
-80024e44: 0c009bbb jal 80026eec <PltParserLoadFile>
-80024e48: 00000000 nop
-80024e4c: 14400008 bnez v0,80024e70 <LoadMenuLoadFileList.part.1+0x238>
-80024e50: 3c048004 lui a0,0x8004
- {
- dprintf("Could not load pilots file \"%s\"!\n",fileList[fileLoadedCount]);
-80024e54: 8e050000 lw a1,0(s0)
-80024e58: 10000003 b 80024e68 <LoadMenuLoadFileList.part.1+0x230>
-80024e5c: 248408bc addiu a0,a0,2236
- }
- }
- else
- {
- dprintf("LoadMenu does not recognize following extension: %s\n",extension);
-80024e60: 02e02821 move a1,s7
-80024e64: 248408e0 addiu a0,a0,2272
-80024e68: 0c00ed8f jal 8003b63c <printf>
-80024e6c: 00000000 nop
-80024e70: 26520001 addiu s2,s2,1
-80024e74: 26100004 addiu s0,s0,4
-80024e78: 1000ff82 b 80024c84 <LoadMenuLoadFileList.part.1+0x4c>
-80024e7c: 26310004 addiu s1,s1,4
- }
- }
-}
-80024e80: 8fbf009c lw ra,156(sp)
-80024e84: 8fb70098 lw s7,152(sp)
-80024e88: 8fb60094 lw s6,148(sp)
-80024e8c: 8fb50090 lw s5,144(sp)
-80024e90: 8fb4008c lw s4,140(sp)
-80024e94: 8fb30088 lw s3,136(sp)
-80024e98: 8fb20084 lw s2,132(sp)
-80024e9c: 8fb10080 lw s1,128(sp)
-80024ea0: 8fb0007c lw s0,124(sp)
-80024ea4: 03e00008 jr ra
-80024ea8: 27bd00a0 addiu sp,sp,160
-
-80024eac <LoadMenuEnd>:
- SetVBlankHandler(&ISR_LoadMenuVBlank);
-}
-
-void LoadMenuEnd(void)
-{
- end_flag = true;
-80024eac: 24030001 li v1,1
-80024eb0: 3c028007 lui v0,0x8007
-80024eb4: a0431c33 sb v1,7219(v0)
- load_menu_running = false;
-80024eb8: 3c028007 lui v0,0x8007
-80024ebc: a0401c31 sb zero,7217(v0)
- GfxDrawScene_Fast();
-}
-
-bool LoadMenuISRHasEnded(void)
-{
- return isr_ended;
-80024ec0: 3c038007 lui v1,0x8007
-80024ec4: 90621c32 lbu v0,7218(v1)
-80024ec8: 00000000 nop
-80024ecc: 304200ff andi v0,v0,0xff
-void LoadMenuEnd(void)
-{
- end_flag = true;
- load_menu_running = false;
-
- while(LoadMenuISRHasEnded() == false);
-80024ed0: 1040fffc beqz v0,80024ec4 <LoadMenuEnd+0x18>
-80024ed4: 3c048004 lui a0,0x8004
-
- SetVBlankHandler(&ISR_LoadMenuVBlank);
-}
-
-void LoadMenuEnd(void)
-{
-80024ed8: 27bdffe8 addiu sp,sp,-24
-80024edc: afbf0014 sw ra,20(sp)
- end_flag = true;
- load_menu_running = false;
-
- while(LoadMenuISRHasEnded() == false);
- dprintf("Set default VBlank handler.\n");
-80024ee0: 0c00ed8f jal 8003b63c <printf>
-80024ee4: 24840918 addiu a0,a0,2328
- SetVBlankHandler(&ISR_SystemDefaultVBlank);
-80024ee8: 3c048002 lui a0,0x8002
-80024eec: 0c00d35e jal 80034d78 <SetVBlankHandler>
-80024ef0: 24847ea0 addiu a0,a0,32416
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-}
-80024ef4: 8fbf0014 lw ra,20(sp)
-
- while(LoadMenuISRHasEnded() == false);
- dprintf("Set default VBlank handler.\n");
- SetVBlankHandler(&ISR_SystemDefaultVBlank);
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-80024ef8: 24040080 li a0,128
-80024efc: 0800900b j 8002402c <GfxSetGlobalLuminance>
-80024f00: 27bd0018 addiu sp,sp,24
-
-80024f04 <LoadMenu>:
-}
-
-void LoadMenu( char * fileList[],
- void * dest[],
- uint8_t szFileList , uint8_t szDestList)
-{
-80024f04: 27bdffd0 addiu sp,sp,-48
-80024f08: afb00010 sw s0,16(sp)
-
- if(load_menu_running == false)
-80024f0c: 3c108007 lui s0,0x8007
-80024f10: 92021c31 lbu v0,7217(s0)
-}
-
-void LoadMenu( char * fileList[],
- void * dest[],
- uint8_t szFileList , uint8_t szDestList)
-{
-80024f14: afb40020 sw s4,32(sp)
-80024f18: afb3001c sw s3,28(sp)
-80024f1c: afb20018 sw s2,24(sp)
-80024f20: afb10014 sw s1,20(sp)
-80024f24: afbf002c sw ra,44(sp)
-80024f28: afb60028 sw s6,40(sp)
-80024f2c: afb50024 sw s5,36(sp)
-80024f30: 00809821 move s3,a0
-80024f34: 00a0a021 move s4,a1
-80024f38: 30d100ff andi s1,a2,0xff
-
- if(load_menu_running == false)
-80024f3c: 1040000f beqz v0,80024f7c <LoadMenu+0x78>
-80024f40: 30f200ff andi s2,a3,0xff
- char aux_file_name[100];
- char * extension;
- short x_increment;
- uint8_t fileLoadedCount;
-
- if(szFileList != szDestList)
-80024f44: 16320093 bne s1,s2,80025194 <LoadMenu+0x290>
-80024f48: 02203021 move a2,s1
- while(LoadMenuISRHasStarted() == false);
- }
-
- LoadMenuLoadFileList(fileList,dest,szFileList,szDestList);
-
-}
-80024f4c: 8fbf002c lw ra,44(sp)
-80024f50: 8fb60028 lw s6,40(sp)
-80024f54: 8fb50024 lw s5,36(sp)
-80024f58: 8fb20018 lw s2,24(sp)
-80024f5c: 8fb00010 lw s0,16(sp)
-80024f60: 02802821 move a1,s4
-80024f64: 8fb10014 lw s1,20(sp)
-80024f68: 8fb40020 lw s4,32(sp)
-80024f6c: 02602021 move a0,s3
-80024f70: 8fb3001c lw s3,28(sp)
-80024f74: 0800930e j 80024c38 <LoadMenuLoadFileList.part.1>
-80024f78: 27bd0030 addiu sp,sp,48
-void LoadMenuInit(void)
-{
- int i;
- static bool first_load = false;
-
- if(first_load == false)
-80024f7c: 3c028007 lui v0,0x8007
-80024f80: 90431c30 lbu v1,7216(v0)
-80024f84: 00000000 nop
-80024f88: 1460000a bnez v1,80024fb4 <LoadMenu+0xb0>
-80024f8c: 3c158007 lui s5,0x8007
-80024f90: 3c058004 lui a1,0x8004
-80024f94: 3c048004 lui a0,0x8004
- {
- first_load = true;
-80024f98: 24030001 li v1,1
-80024f9c: 24060003 li a2,3
-80024fa0: 24a51464 addiu a1,a1,5220
-80024fa4: 24841470 addiu a0,a0,5232
-80024fa8: 0c00930e jal 80024c38 <LoadMenuLoadFileList.part.1>
-80024fac: a0431c30 sb v1,7216(v0)
- LoadMenuDest,
- sizeof(LoadMenuFiles) / sizeof(char*),
- sizeof(LoadMenuDest) / sizeof(void*));
- }
-
- FontSetSize(&SmallFont, SMALL_FONT_SIZE);
-80024fb0: 3c158007 lui s5,0x8007
-80024fb4: 26a48d38 addiu a0,s5,-29384
-80024fb8: 0c008443 jal 8002110c <FontSetSize>
-80024fbc: 24050008 li a1,8
-
- LoadMenuPlaneSpr.r = 0;
-80024fc0: 3c028004 lui v0,0x8004
- LoadMenuPlaneSpr.g = 0;
- LoadMenuPlaneSpr.b = 0;
-
- LoadMenuPlaneSpr.x = PLANE_START_X;
-80024fc4: 24040038 li a0,56
- sizeof(LoadMenuDest) / sizeof(void*));
- }
-
- FontSetSize(&SmallFont, SMALL_FONT_SIZE);
-
- LoadMenuPlaneSpr.r = 0;
-80024fc8: 24435d2c addiu v1,v0,23852
- LoadMenuPlaneSpr.g = 0;
- LoadMenuPlaneSpr.b = 0;
-
- LoadMenuPlaneSpr.x = PLANE_START_X;
-80024fcc: a4445d2c sh a0,23852(v0)
- LoadMenuPlaneSpr.y = PLANE_START_Y;
-80024fd0: 240200c8 li v0,200
-80024fd4: a4620002 sh v0,2(v1)
-
- LoadMenuTitleSpr.r = 0;
- LoadMenuTitleSpr.g = 0;
- LoadMenuTitleSpr.b = 0;
-
- LoadMenuTitleSpr.x = LOADING_TITLE_X;
-80024fd8: 24040080 li a0,128
- sizeof(LoadMenuDest) / sizeof(void*));
- }
-
- FontSetSize(&SmallFont, SMALL_FONT_SIZE);
-
- LoadMenuPlaneSpr.r = 0;
-80024fdc: a060000e sb zero,14(v1)
- LoadMenuPlaneSpr.g = 0;
-80024fe0: a060000f sb zero,15(v1)
- LoadMenuPlaneSpr.b = 0;
-80024fe4: a0600010 sb zero,16(v1)
- LoadMenuPlaneSpr.x = PLANE_START_X;
- LoadMenuPlaneSpr.y = PLANE_START_Y;
-
- // "Loading..." title init
-
- LoadMenuTitleSpr.r = 0;
-80024fe8: 3c038004 lui v1,0x8004
-80024fec: 24625d00 addiu v0,v1,23808
- LoadMenuTitleSpr.g = 0;
- LoadMenuTitleSpr.b = 0;
-
- LoadMenuTitleSpr.x = LOADING_TITLE_X;
-80024ff0: a4645d00 sh a0,23808(v1)
- LoadMenuTitleSpr.y = LOADING_TITLE_Y;
-80024ff4: 24030020 li v1,32
-80024ff8: a4430002 sh v1,2(v0)
-
- LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X;
- LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y;
-80024ffc: 240401f0 li a0,496
- LoadMenuTitleSpr.b = 0;
-
- LoadMenuTitleSpr.x = LOADING_TITLE_X;
- LoadMenuTitleSpr.y = LOADING_TITLE_Y;
-
- LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X;
-80025000: 24030180 li v1,384
- LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y;
-80025004: a444000c sh a0,12(v0)
- LoadMenuPlaneSpr.x = PLANE_START_X;
- LoadMenuPlaneSpr.y = PLANE_START_Y;
-
- // "Loading..." title init
-
- LoadMenuTitleSpr.r = 0;
-80025008: a040000e sb zero,14(v0)
- LoadMenuTitleSpr.g = 0;
-8002500c: a040000f sb zero,15(v0)
- LoadMenuTitleSpr.b = 0;
-80025010: a0400010 sb zero,16(v0)
-
- LoadMenuTitleSpr.x = LOADING_TITLE_X;
- LoadMenuTitleSpr.y = LOADING_TITLE_Y;
-
- LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X;
-80025014: a443000a sh v1,10(v0)
- LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y;
- LoadMenuTitleSpr.u = LOADING_TITLE_U;
- LoadMenuTitleSpr.v = LOADING_TITLE_V;
-
- startup_flag = true;
-80025018: 24040001 li a0,1
- LoadMenuTitleSpr.x = LOADING_TITLE_X;
- LoadMenuTitleSpr.y = LOADING_TITLE_Y;
-
- LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X;
- LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y;
- LoadMenuTitleSpr.u = LOADING_TITLE_U;
-8002501c: a0400004 sb zero,4(v0)
- LoadMenuTitleSpr.v = LOADING_TITLE_V;
-80025020: a0400005 sb zero,5(v0)
-
- startup_flag = true;
-80025024: 3c028007 lui v0,0x8007
-80025028: a0441c35 sb a0,7221(v0)
- isr_started = false;
-8002502c: 3c048007 lui a0,0x8007
- end_flag = false;
-80025030: 3c028007 lui v0,0x8007
- LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y;
- LoadMenuTitleSpr.u = LOADING_TITLE_U;
- LoadMenuTitleSpr.v = LOADING_TITLE_V;
-
- startup_flag = true;
- isr_started = false;
-80025034: a0801c34 sb zero,7220(a0)
- end_flag = false;
-80025038: a0401c33 sb zero,7219(v0)
- isr_ended = false;
-8002503c: 3c028007 lui v0,0x8007
-80025040: a0401c32 sb zero,7218(v0)
-
- // Background init
-
- loadMenuBg.x[0] = 0;
-80025044: 3c028004 lui v0,0x8004
-80025048: 24425d58 addiu v0,v0,23896
- loadMenuBg.x[1] = X_SCREEN_RESOLUTION;
-8002504c: a443000e sh v1,14(v0)
- loadMenuBg.x[2] = 0;
- loadMenuBg.x[3] = X_SCREEN_RESOLUTION;
-80025050: a4430012 sh v1,18(v0)
-
- loadMenuBg.y[0] = 0;
- loadMenuBg.y[1] = 0;
- loadMenuBg.y[2] = Y_SCREEN_RESOLUTION;
-80025054: 240300f0 li v1,240
-80025058: a4430018 sh v1,24(v0)
- loadMenuBg.y[3] = Y_SCREEN_RESOLUTION;
-8002505c: a443001a sh v1,26(v0)
-80025060: 0080b021 move s6,a0
- end_flag = false;
- isr_ended = false;
-
- // Background init
-
- loadMenuBg.x[0] = 0;
-80025064: a440000c sh zero,12(v0)
- loadMenuBg.x[1] = X_SCREEN_RESOLUTION;
- loadMenuBg.x[2] = 0;
-80025068: a4400010 sh zero,16(v0)
- loadMenuBg.x[3] = X_SCREEN_RESOLUTION;
-
- loadMenuBg.y[0] = 0;
-8002506c: a4400014 sh zero,20(v0)
- loadMenuBg.y[1] = 0;
-80025070: a4400016 sh zero,22(v0)
- loadMenuBg.y[2] = Y_SCREEN_RESOLUTION;
- loadMenuBg.y[3] = Y_SCREEN_RESOLUTION;
-
- // Colour components adjustment (default to zero)
- for(i = 0; i < 4 ; i++)
-80025074: 00001821 move v1,zero
-80025078: 24040004 li a0,4
-8002507c: 24630001 addiu v1,v1,1
- {
- loadMenuBg.r[i] = 0;
-80025080: a0400000 sb zero,0(v0)
- loadMenuBg.g[i] = 0;
-80025084: a0400004 sb zero,4(v0)
- loadMenuBg.b[i] = 0;
-80025088: a0400008 sb zero,8(v0)
- loadMenuBg.y[1] = 0;
- loadMenuBg.y[2] = Y_SCREEN_RESOLUTION;
- loadMenuBg.y[3] = Y_SCREEN_RESOLUTION;
-
- // Colour components adjustment (default to zero)
- for(i = 0; i < 4 ; i++)
-8002508c: 1464fffb bne v1,a0,8002507c <LoadMenu+0x178>
-80025090: 24420001 addiu v0,v0,1
- loadMenuBg.b[i] = 0;
- }
-
- // "Loading" bar line 0 (up left - up right)
-
- LoadMenuBarLines[0].x[0] = LOADING_BAR_X;
-80025094: 3c028004 lui v0,0x8004
-80025098: 24425cc0 addiu v0,v0,23744
-
- LoadMenuBarLines[1].x[0] = LOADING_BAR_X;
- LoadMenuBarLines[1].x[1] = LOADING_BAR_X;
-
- LoadMenuBarLines[1].y[0] = LOADING_BAR_Y;
- LoadMenuBarLines[1].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-8002509c: 240300d8 li v1,216
- loadMenuBg.b[i] = 0;
- }
-
- // "Loading" bar line 0 (up left - up right)
-
- LoadMenuBarLines[0].x[0] = LOADING_BAR_X;
-800250a0: 24060040 li a2,64
- LoadMenuBarLines[0].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-800250a4: 24050140 li a1,320
-
- LoadMenuBarLines[0].y[0] = LOADING_BAR_Y;
-800250a8: 240400c8 li a0,200
-
- LoadMenuBarLines[1].x[0] = LOADING_BAR_X;
- LoadMenuBarLines[1].x[1] = LOADING_BAR_X;
-
- LoadMenuBarLines[1].y[0] = LOADING_BAR_Y;
- LoadMenuBarLines[1].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-800250ac: a443001a sh v1,26(v0)
- // "Loading" bar line 2 (down left - down right)
-
- LoadMenuBarLines[2].x[0] = LOADING_BAR_X;
- LoadMenuBarLines[2].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-
- LoadMenuBarLines[2].y[0] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-800250b0: a4430028 sh v1,40(v0)
- LoadMenuBarLines[2].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-800250b4: a443002a sh v1,42(v0)
-
- LoadMenuBarLines[3].x[0] = LOADING_BAR_X + LOADING_BAR_WIDTH;
- LoadMenuBarLines[3].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-
- LoadMenuBarLines[3].y[0] = LOADING_BAR_Y;
- LoadMenuBarLines[3].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-800250b8: a443003a sh v1,58(v0)
-800250bc: 3c038004 lui v1,0x8004
- loadMenuBg.b[i] = 0;
- }
-
- // "Loading" bar line 0 (up left - up right)
-
- LoadMenuBarLines[0].x[0] = LOADING_BAR_X;
-800250c0: a4460004 sh a2,4(v0)
- LoadMenuBarLines[0].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-800250c4: a4450006 sh a1,6(v0)
-
- LoadMenuBarLines[0].y[0] = LOADING_BAR_Y;
-800250c8: a4440008 sh a0,8(v0)
- LoadMenuBarLines[0].y[1] = LOADING_BAR_Y;
-800250cc: a444000a sh a0,10(v0)
-
- // "Loading" bar line 1 (up left - down left)
-
- LoadMenuBarLines[1].x[0] = LOADING_BAR_X;
-800250d0: a4460014 sh a2,20(v0)
- LoadMenuBarLines[1].x[1] = LOADING_BAR_X;
-800250d4: a4460016 sh a2,22(v0)
-
- LoadMenuBarLines[1].y[0] = LOADING_BAR_Y;
-800250d8: a4440018 sh a0,24(v0)
- LoadMenuBarLines[1].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-
- // "Loading" bar line 2 (down left - down right)
-
- LoadMenuBarLines[2].x[0] = LOADING_BAR_X;
-800250dc: a4460024 sh a2,36(v0)
- LoadMenuBarLines[2].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-800250e0: a4450026 sh a1,38(v0)
- LoadMenuBarLines[2].y[0] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
- LoadMenuBarLines[2].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-
- // "Loading" bar line 3 (up right - down right)
-
- LoadMenuBarLines[3].x[0] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-800250e4: a4450034 sh a1,52(v0)
- LoadMenuBarLines[3].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-800250e8: a4450036 sh a1,54(v0)
-
- LoadMenuBarLines[3].y[0] = LOADING_BAR_Y;
-800250ec: a4440038 sh a0,56(v0)
-800250f0: 24635d00 addiu v1,v1,23808
- LoadMenuBarLines[3].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-
- for(i = 0; i < LOADING_BAR_N_LINES ; i++)
- {
- LoadMenuBarLines[i].r = 0;
-800250f4: a0400000 sb zero,0(v0)
- LoadMenuBarLines[i].g = 0;
-800250f8: a0400001 sb zero,1(v0)
- LoadMenuBarLines[i].b = 0;
-800250fc: a0400002 sb zero,2(v0)
-80025100: 24420010 addiu v0,v0,16
- LoadMenuBarLines[3].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH;
-
- LoadMenuBarLines[3].y[0] = LOADING_BAR_Y;
- LoadMenuBarLines[3].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT;
-
- for(i = 0; i < LOADING_BAR_N_LINES ; i++)
-80025104: 1443fffb bne v0,v1,800250f4 <LoadMenu+0x1f0>
-80025108: 24040040 li a0,64
- LoadMenuBarLines[i].r = 0;
- LoadMenuBarLines[i].g = 0;
- LoadMenuBarLines[i].b = 0;
- }
-
- LoadMenuBarRect.r = 0;
-8002510c: 3c038004 lui v1,0x8004
-80025110: 24625cb0 addiu v0,v1,23728
- LoadMenuBarRect.g = 0;
- LoadMenuBarRect.b = 0;
-
- // LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- LoadMenuBarRect.x = LOADING_BAR_X;
-80025114: a4645cb0 sh a0,23728(v1)
- LoadMenuBarRect.y = LOADING_BAR_Y;
-80025118: 240300c8 li v1,200
-8002511c: a4430002 sh v1,2(v0)
- LoadMenuBarRect.w = 0;
- LoadMenuBarRect.h = LOADING_BAR_HEIGHT;
-80025120: 24030010 li v1,16
-80025124: a4430006 sh v1,6(v0)
-
- LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80025128: 8c43000c lw v1,12(v0)
- LoadMenuBarLines[i].r = 0;
- LoadMenuBarLines[i].g = 0;
- LoadMenuBarLines[i].b = 0;
- }
-
- LoadMenuBarRect.r = 0;
-8002512c: a0400008 sb zero,8(v0)
- LoadMenuBarRect.x = LOADING_BAR_X;
- LoadMenuBarRect.y = LOADING_BAR_Y;
- LoadMenuBarRect.w = 0;
- LoadMenuBarRect.h = LOADING_BAR_HEIGHT;
-
- LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80025130: 34630010 ori v1,v1,0x10
-80025134: ac43000c sw v1,12(v0)
- LoadMenuBarLines[i].g = 0;
- LoadMenuBarLines[i].b = 0;
- }
-
- LoadMenuBarRect.r = 0;
- LoadMenuBarRect.g = 0;
-80025138: a0400009 sb zero,9(v0)
- LoadMenuBarRect.b = 0;
-8002513c: a040000a sb zero,10(v0)
-
- // LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- LoadMenuBarRect.x = LOADING_BAR_X;
- LoadMenuBarRect.y = LOADING_BAR_Y;
- LoadMenuBarRect.w = 0;
-80025140: a4400004 sh zero,4(v0)
- LoadMenuBarRect.h = LOADING_BAR_HEIGHT;
-
- LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- load_menu_running = true;
-80025144: 24020001 li v0,1
-80025148: a2021c31 sb v0,7217(s0)
-
- small_font_lum = 0;
-8002514c: 3c028007 lui v0,0x8007
-80025150: a0401c3c sb zero,7228(v0)
-
- SmallFont.spr.r = 0;
- SmallFont.spr.g = 0;
- SmallFont.spr.b = 0;
-
- GfxSetGlobalLuminance(0);
-80025154: 00002021 move a0,zero
-
- load_menu_running = true;
-
- small_font_lum = 0;
-
- SmallFont.spr.r = 0;
-80025158: 26a28d38 addiu v0,s5,-29384
-8002515c: a040000e sb zero,14(v0)
- SmallFont.spr.g = 0;
-80025160: a040000f sb zero,15(v0)
- SmallFont.spr.b = 0;
-
- GfxSetGlobalLuminance(0);
-80025164: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-80025168: a0400010 sb zero,16(v0)
-
- SetVBlankHandler(&ISR_LoadMenuVBlank);
-8002516c: 3c048002 lui a0,0x8002
-80025170: 0c00d35e jal 80034d78 <SetVBlankHandler>
-80025174: 248447cc addiu a0,a0,18380
- return isr_ended;
-}
-
-bool LoadMenuISRHasStarted(void)
-{
- return isr_started;
-80025178: 92c21c34 lbu v0,7220(s6)
-8002517c: 00000000 nop
-80025180: 304200ff andi v0,v0,0xff
-
- if(load_menu_running == false)
- {
- LoadMenuInit();
-
- while(LoadMenuISRHasStarted() == false);
-80025184: 1040fffc beqz v0,80025178 <LoadMenu+0x274>
-80025188: 00000000 nop
-8002518c: 1000ff6d b 80024f44 <LoadMenu+0x40>
-80025190: 00000000 nop
- }
-
- LoadMenuLoadFileList(fileList,dest,szFileList,szDestList);
-
-}
-80025194: 8fbf002c lw ra,44(sp)
-80025198: 8fb60028 lw s6,40(sp)
-8002519c: 8fb50024 lw s5,36(sp)
-800251a0: 8fb40020 lw s4,32(sp)
-800251a4: 8fb3001c lw s3,28(sp)
-800251a8: 8fb00010 lw s0,16(sp)
- short x_increment;
- uint8_t fileLoadedCount;
-
- if(szFileList != szDestList)
- {
- dprintf("File list size different from dest list size! %d vs %d\n",
-800251ac: 02403021 move a2,s2
-800251b0: 02202821 move a1,s1
- while(LoadMenuISRHasStarted() == false);
- }
-
- LoadMenuLoadFileList(fileList,dest,szFileList,szDestList);
-
-}
-800251b4: 8fb20018 lw s2,24(sp)
-800251b8: 8fb10014 lw s1,20(sp)
- short x_increment;
- uint8_t fileLoadedCount;
-
- if(szFileList != szDestList)
- {
- dprintf("File list size different from dest list size! %d vs %d\n",
-800251bc: 3c048004 lui a0,0x8004
-800251c0: 24840938 addiu a0,a0,2360
-800251c4: 0800ed8f j 8003b63c <printf>
-800251c8: 27bd0030 addiu sp,sp,48
-
-800251cc <main>:
-/* *************************************
- * Local Prototypes
- * *************************************/
-
-int main(void)
-{
-800251cc: 27bdffe8 addiu sp,sp,-24
-800251d0: afbf0014 sw ra,20(sp)
-
- //System initialization
- SystemInit();
-800251d4: 0c00a0a8 jal 800282a0 <SystemInit>
-800251d8: 00000000 nop
-
- MainMenu();
-800251dc: 0c009900 jal 80026400 <MainMenu>
-800251e0: 00000000 nop
-
- return 0;
-
-}
-800251e4: 8fbf0014 lw ra,20(sp)
-800251e8: 00001021 move v0,zero
-800251ec: 03e00008 jr ra
-800251f0: 27bd0018 addiu sp,sp,24
-
-800251f4 <MemCardReadSector>:
-
- return true;
-}
-
-bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector)
-{
-800251f4: 27bdffe0 addiu sp,sp,-32
- uint8_t result;
-
- MemCardErrors.Block = ptrBlockData->Block;
-800251f8: 8c860004 lw a2,4(a0)
-
- return true;
-}
-
-bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector)
-{
-800251fc: afb10014 sw s1,20(sp)
-80025200: afb00010 sw s0,16(sp)
- uint8_t result;
-
- MemCardErrors.Block = ptrBlockData->Block;
-80025204: 3c118004 lui s1,0x8004
-
- return true;
-}
-
-bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector)
-{
-80025208: 00808021 move s0,a0
- uint8_t result;
-
- MemCardErrors.Block = ptrBlockData->Block;
- MemCardErrors.Slot = ptrBlockData->Slot;
-8002520c: 8c840000 lw a0,0(a0)
-
-bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector)
-{
- uint8_t result;
-
- MemCardErrors.Block = ptrBlockData->Block;
-80025210: 26225e14 addiu v0,s1,24084
-
- return true;
-}
-
-bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector)
-{
-80025214: afbf001c sw ra,28(sp)
-80025218: afb20018 sw s2,24(sp)
- uint8_t result;
-
- MemCardErrors.Block = ptrBlockData->Block;
-8002521c: ac460008 sw a2,8(v0)
- MemCardErrors.Slot = ptrBlockData->Slot;
-80025220: ac440004 sw a0,4(v0)
-
- if( (ptrBlockData->Slot != 0)
-80025224: 2c820002 sltiu v0,a0,2
-80025228: 14400008 bnez v0,8002524c <MemCardReadSector+0x58>
-8002522c: 24020053 li v0,83
- &&
- (ptrBlockData->Slot != 1) )
- {
- MemCardErrors.ErrorByte = 'S';
-
- dprintf("Incorrect slot %d! Block %d?\n",
-80025230: 00802821 move a1,a0
-80025234: 3c048004 lui a0,0x8004
-80025238: 248409d4 addiu a0,a0,2516
-8002523c: 0c00ed8f jal 8003b63c <printf>
-80025240: a2225e14 sb v0,24084(s1)
- return false;
-
- case MEMCARD_BAD_SECTOR:
- dprintf("Invalid memory card sector %d. Only values between"
- " 0 and 511 are allowed!\n", sector);
- return false;
-80025244: 1000001f b 800252c4 <MemCardReadSector+0xd0>
-80025248: 00001021 move v0,zero
- ptrBlockData->Block);
-
- return false;
- }
-
- if((sector < 0) || (sector > MEMCARD_MAXIMUM_SECTOR))
-8002524c: 2ca20200 sltiu v0,a1,512
-80025250: 14400004 bnez v0,80025264 <MemCardReadSector+0x70>
-80025254: 00a09021 move s2,a1
- {
- MemCardErrors.ErrorByte = 'T';
-80025258: 24020054 li v0,84
-8002525c: 10000015 b 800252b4 <MemCardReadSector+0xc0>
-80025260: a2225e14 sb v0,24084(s1)
- dprintf("Invalid memory card sector %d. Only values between"
- " 0 and 511 are allowed!\n", sector);
- return false;
- }
-
- result = McReadSector(ptrBlockData->Slot, sector, DataBuffer);
-80025264: 3c068004 lui a2,0x8004
-80025268: 0c00ca8f jal 80032a3c <McReadSector>
-8002526c: 24c65e20 addiu a2,a2,24096
-
- // Fill char "MemCardErrors" for further error description.
- MemCardErrors.ErrorByte = result;
-
- switch(result)
-80025270: 2403004e li v1,78
-80025274: 10430006 beq v0,v1,80025290 <MemCardReadSector+0x9c>
-80025278: a2225e14 sb v0,24084(s1)
-8002527c: 240300ff li v1,255
-80025280: 1043000b beq v0,v1,800252b0 <MemCardReadSector+0xbc>
-80025284: 38420047 xori v0,v0,0x47
- {
- case '1':
- case '2':
- case 'L':
- case 'M':
- return false;
-80025288: 1000000e b 800252c4 <MemCardReadSector+0xd0>
-8002528c: 2c420001 sltiu v0,v0,1
-
- case MEMCARD_INVALID_CHECKSUM:
- dprintf("Invalid checksum for memory card sector %d"
-80025290: 8e070000 lw a3,0(s0)
-80025294: 8e060004 lw a2,4(s0)
-80025298: 3c048004 lui a0,0x8004
-8002529c: 02402821 move a1,s2
-800252a0: 0c00ed8f jal 8003b63c <printf>
-800252a4: 24840a40 addiu a0,a0,2624
- return false;
-
- case MEMCARD_BAD_SECTOR:
- dprintf("Invalid memory card sector %d. Only values between"
- " 0 and 511 are allowed!\n", sector);
- return false;
-800252a8: 10000006 b 800252c4 <MemCardReadSector+0xd0>
-800252ac: 00001021 move v0,zero
- ptrBlockData->Block,
- ptrBlockData->Slot );
- return false;
-
- case MEMCARD_BAD_SECTOR:
- dprintf("Invalid memory card sector %d. Only values between"
-800252b0: 02402821 move a1,s2
-800252b4: 3c048004 lui a0,0x8004
-800252b8: 0c00ed8f jal 8003b63c <printf>
-800252bc: 248409f4 addiu a0,a0,2548
- " 0 and 511 are allowed!\n", sector);
- return false;
-800252c0: 00001021 move v0,zero
- default:
- return false;
- }
-
- return true;
-}
-800252c4: 8fbf001c lw ra,28(sp)
-800252c8: 8fb20018 lw s2,24(sp)
-800252cc: 8fb10014 lw s1,20(sp)
-800252d0: 8fb00010 lw s0,16(sp)
-800252d4: 03e00008 jr ra
-800252d8: 27bd0020 addiu sp,sp,32
-
-800252dc <ISR_MemCardDataHandling>:
-void ISR_MemCardDataHandling(void)
-{
-
- uint8_t i;
-
- ISR_TimesAccessed++;
-800252dc: 3c038007 lui v1,0x8007
-800252e0: 8c621c50 lw v0,7248(v1)
-
- bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) );
-}
-
-void ISR_MemCardDataHandling(void)
-{
-800252e4: 27bdffe0 addiu sp,sp,-32
-
- uint8_t i;
-
- ISR_TimesAccessed++;
-800252e8: 24420001 addiu v0,v0,1
-800252ec: ac621c50 sw v0,7248(v1)
-
- bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) );
-}
-
-void ISR_MemCardDataHandling(void)
-{
-800252f0: afbf001c sw ra,28(sp)
-800252f4: afb20018 sw s2,24(sp)
-800252f8: afb10014 sw s1,20(sp)
-
- uint8_t i;
-
- ISR_TimesAccessed++;
-
- if( (GfxIsGPUBusy() == true) || (SystemIsBusy() == true) )
-800252fc: 0c00901d jal 80024074 <GfxIsGPUBusy>
-80025300: afb00010 sw s0,16(sp)
-80025304: 1440007d bnez v0,800254fc <ISR_MemCardDataHandling+0x220>
-80025308: 00000000 nop
-8002530c: 0c00a057 jal 8002815c <SystemIsBusy>
-80025310: 00000000 nop
-80025314: 14400079 bnez v0,800254fc <ISR_MemCardDataHandling+0x220>
-80025318: 3c048004 lui a0,0x8004
- {
- return;
- }
-
- SecondDisplay.r = NORMAL_LUMINANCE;
-8002531c: 2405ff80 li a1,-128
-80025320: 24825de8 addiu v0,a0,24040
- SecondDisplay.g = NORMAL_LUMINANCE;
- SecondDisplay.b = NORMAL_LUMINANCE;
-
- MemCardRect.x[0] = MEMCARD_BG_X;
-80025324: 3c038004 lui v1,0x8004
- if( (GfxIsGPUBusy() == true) || (SystemIsBusy() == true) )
- {
- return;
- }
-
- SecondDisplay.r = NORMAL_LUMINANCE;
-80025328: a045000e sb a1,14(v0)
- SecondDisplay.g = NORMAL_LUMINANCE;
-8002532c: a045000f sb a1,15(v0)
- SecondDisplay.b = NORMAL_LUMINANCE;
-80025330: a0450010 sb a1,16(v0)
-
- MemCardRect.x[0] = MEMCARD_BG_X;
-80025334: 24625dc8 addiu v0,v1,24008
- MemCardRect.r[2] = MEMCARD_BG_R2;
- MemCardRect.r[3] = MEMCARD_BG_R3;
-
- MemCardRect.g[0] = MEMCARD_BG_G0;
- MemCardRect.g[1] = MEMCARD_BG_G1;
- MemCardRect.g[2] = MEMCARD_BG_G2;
-80025338: a0450006 sb a1,6(v0)
- MemCardRect.g[3] = MEMCARD_BG_G3;
-8002533c: a0450007 sb a1,7(v0)
- MemCardRect.b[0] = MEMCARD_BG_B0;
- MemCardRect.b[1] = MEMCARD_BG_B1;
- MemCardRect.b[2] = MEMCARD_BG_B2;
- MemCardRect.b[3] = MEMCARD_BG_B3;
-
- MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80025340: 8c45001c lw a1,28(v0)
- SecondDisplay.r = NORMAL_LUMINANCE;
- SecondDisplay.g = NORMAL_LUMINANCE;
- SecondDisplay.b = NORMAL_LUMINANCE;
-
- MemCardRect.x[0] = MEMCARD_BG_X;
- MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W;
-80025344: 24070140 li a3,320
-80025348: a447000e sh a3,14(v0)
- MemCardRect.x[2] = MEMCARD_BG_X;
- MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W;
-8002534c: a4470012 sh a3,18(v0)
- MemCardRect.b[0] = MEMCARD_BG_B0;
- MemCardRect.b[1] = MEMCARD_BG_B1;
- MemCardRect.b[2] = MEMCARD_BG_B2;
- MemCardRect.b[3] = MEMCARD_BG_B3;
-
- MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80025350: 34a50010 ori a1,a1,0x10
- MemCardRect.x[0] = MEMCARD_BG_X;
- MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W;
- MemCardRect.x[2] = MEMCARD_BG_X;
- MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W;
-
- MemCardRect.y[0] = MEMCARD_BG_Y;
-80025354: 2407001c li a3,28
-
- SecondDisplay.r = NORMAL_LUMINANCE;
- SecondDisplay.g = NORMAL_LUMINANCE;
- SecondDisplay.b = NORMAL_LUMINANCE;
-
- MemCardRect.x[0] = MEMCARD_BG_X;
-80025358: 24060040 li a2,64
- MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W;
- MemCardRect.x[2] = MEMCARD_BG_X;
- MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W;
-
- MemCardRect.y[0] = MEMCARD_BG_Y;
-8002535c: a4470014 sh a3,20(v0)
- MemCardRect.y[1] = MEMCARD_BG_Y;
-80025360: a4470016 sh a3,22(v0)
- MemCardRect.b[0] = MEMCARD_BG_B0;
- MemCardRect.b[1] = MEMCARD_BG_B1;
- MemCardRect.b[2] = MEMCARD_BG_B2;
- MemCardRect.b[3] = MEMCARD_BG_B3;
-
- MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-80025364: ac45001c sw a1,28(v0)
- MemCardRect.x[2] = MEMCARD_BG_X;
- MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W;
-
- MemCardRect.y[0] = MEMCARD_BG_Y;
- MemCardRect.y[1] = MEMCARD_BG_Y;
- MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H;
-80025368: 240700d4 li a3,212
-
- MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- // "Loading" bar line 0 (up left - up right)
-
- MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X;
-8002536c: 3c058004 lui a1,0x8004
- MemCardRect.x[2] = MEMCARD_BG_X;
- MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W;
-
- MemCardRect.y[0] = MEMCARD_BG_Y;
- MemCardRect.y[1] = MEMCARD_BG_Y;
- MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H;
-80025370: a4470018 sh a3,24(v0)
- MemCardRect.g[2] = MEMCARD_BG_G2;
- MemCardRect.g[3] = MEMCARD_BG_G3;
-
- MemCardRect.b[0] = MEMCARD_BG_B0;
- MemCardRect.b[1] = MEMCARD_BG_B1;
- MemCardRect.b[2] = MEMCARD_BG_B2;
-80025374: a046000a sb a2,10(v0)
- MemCardRect.b[3] = MEMCARD_BG_B3;
-80025378: a046000b sb a2,11(v0)
-
- MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- // "Loading" bar line 0 (up left - up right)
-
- MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X;
-8002537c: 24090056 li t1,86
- MemCardProgressBarLines[0].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-80025380: 24080138 li t0,312
-
- SecondDisplay.r = NORMAL_LUMINANCE;
- SecondDisplay.g = NORMAL_LUMINANCE;
- SecondDisplay.b = NORMAL_LUMINANCE;
-
- MemCardRect.x[0] = MEMCARD_BG_X;
-80025384: a446000c sh a2,12(v0)
- MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W;
- MemCardRect.x[2] = MEMCARD_BG_X;
-80025388: a4460010 sh a2,16(v0)
- MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W;
-
- MemCardRect.y[0] = MEMCARD_BG_Y;
- MemCardRect.y[1] = MEMCARD_BG_Y;
- MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H;
- MemCardRect.y[3] = MEMCARD_BG_Y + MEMCARD_BG_H;
-8002538c: a447001a sh a3,26(v0)
-
- MemCardProgressBarLines[1].x[0] = MEMCARD_PROGRESS_BAR_X;
- MemCardProgressBarLines[1].x[1] = MEMCARD_PROGRESS_BAR_X;
-
- MemCardProgressBarLines[1].y[0] = MEMCARD_PROGRESS_BAR_Y;
- MemCardProgressBarLines[1].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-80025390: 240600a4 li a2,164
- // "Loading" bar line 0 (up left - up right)
-
- MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X;
- MemCardProgressBarLines[0].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-
- MemCardProgressBarLines[0].y[0] = MEMCARD_PROGRESS_BAR_Y;
-80025394: 24070094 li a3,148
- MemCardRect.r[0] = MEMCARD_BG_R0;
- MemCardRect.r[1] = MEMCARD_BG_R1;
- MemCardRect.r[2] = MEMCARD_BG_R2;
- MemCardRect.r[3] = MEMCARD_BG_R3;
-
- MemCardRect.g[0] = MEMCARD_BG_G0;
-80025398: a0400004 sb zero,4(v0)
- MemCardRect.g[1] = MEMCARD_BG_G1;
-8002539c: a0400005 sb zero,5(v0)
- MemCardRect.g[2] = MEMCARD_BG_G2;
- MemCardRect.g[3] = MEMCARD_BG_G3;
-
- MemCardRect.b[0] = MEMCARD_BG_B0;
-800253a0: a0400008 sb zero,8(v0)
- MemCardRect.b[1] = MEMCARD_BG_B1;
-800253a4: a0400009 sb zero,9(v0)
- MemCardRect.y[1] = MEMCARD_BG_Y;
- MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H;
- MemCardRect.y[3] = MEMCARD_BG_Y + MEMCARD_BG_H;
-
- MemCardRect.r[0] = MEMCARD_BG_R0;
- MemCardRect.r[1] = MEMCARD_BG_R1;
-800253a8: a0400001 sb zero,1(v0)
- MemCardRect.r[2] = MEMCARD_BG_R2;
-800253ac: a0400002 sb zero,2(v0)
- MemCardRect.r[3] = MEMCARD_BG_R3;
-800253b0: a0400003 sb zero,3(v0)
-
- MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- // "Loading" bar line 0 (up left - up right)
-
- MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X;
-800253b4: 24a25d78 addiu v0,a1,23928
- MemCardRect.y[0] = MEMCARD_BG_Y;
- MemCardRect.y[1] = MEMCARD_BG_Y;
- MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H;
- MemCardRect.y[3] = MEMCARD_BG_Y + MEMCARD_BG_H;
-
- MemCardRect.r[0] = MEMCARD_BG_R0;
-800253b8: a0605dc8 sb zero,24008(v1)
-
- MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
-
- // "Loading" bar line 0 (up left - up right)
-
- MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X;
-800253bc: a4490004 sh t1,4(v0)
- MemCardProgressBarLines[0].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-800253c0: a4480006 sh t0,6(v0)
-
- MemCardProgressBarLines[0].y[0] = MEMCARD_PROGRESS_BAR_Y;
-800253c4: a4470008 sh a3,8(v0)
- MemCardProgressBarLines[0].y[1] = MEMCARD_PROGRESS_BAR_Y;
-800253c8: a447000a sh a3,10(v0)
-
- // "Loading" bar line 1 (up left - down left)
-
- MemCardProgressBarLines[1].x[0] = MEMCARD_PROGRESS_BAR_X;
-800253cc: a4490014 sh t1,20(v0)
- MemCardProgressBarLines[1].x[1] = MEMCARD_PROGRESS_BAR_X;
-800253d0: a4490016 sh t1,22(v0)
-
- MemCardProgressBarLines[1].y[0] = MEMCARD_PROGRESS_BAR_Y;
-800253d4: a4470018 sh a3,24(v0)
- MemCardProgressBarLines[1].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-800253d8: a446001a sh a2,26(v0)
- // "Loading" bar line 2 (down left - down right)
-
- MemCardProgressBarLines[2].x[0] = MEMCARD_PROGRESS_BAR_X;
- MemCardProgressBarLines[2].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-
- MemCardProgressBarLines[2].y[0] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-800253dc: a4460028 sh a2,40(v0)
- MemCardProgressBarLines[2].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-800253e0: a446002a sh a2,42(v0)
-
- MemCardProgressBarLines[3].x[0] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
- MemCardProgressBarLines[3].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-
- MemCardProgressBarLines[3].y[0] = MEMCARD_PROGRESS_BAR_Y;
- MemCardProgressBarLines[3].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-800253e4: a446003a sh a2,58(v0)
-800253e8: 3c068004 lui a2,0x8004
-800253ec: 00a09021 move s2,a1
- MemCardProgressBarLines[1].y[0] = MEMCARD_PROGRESS_BAR_Y;
- MemCardProgressBarLines[1].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-
- // "Loading" bar line 2 (down left - down right)
-
- MemCardProgressBarLines[2].x[0] = MEMCARD_PROGRESS_BAR_X;
-800253f0: a4490024 sh t1,36(v0)
- MemCardProgressBarLines[2].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-800253f4: a4480026 sh t0,38(v0)
- MemCardProgressBarLines[2].y[0] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
- MemCardProgressBarLines[2].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-
- // "Loading" bar line 3 (up right - down right)
-
- MemCardProgressBarLines[3].x[0] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-800253f8: a4480034 sh t0,52(v0)
- MemCardProgressBarLines[3].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-800253fc: a4480036 sh t0,54(v0)
-
- MemCardProgressBarLines[3].y[0] = MEMCARD_PROGRESS_BAR_Y;
-80025400: a4470038 sh a3,56(v0)
-80025404: 24c65db8 addiu a2,a2,23992
-80025408: 00608821 move s1,v1
- MemCardProgressBarLines[3].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-
- for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++)
- {
- MemCardProgressBarLines[i].r = NORMAL_LUMINANCE;
-8002540c: 2405ff80 li a1,-128
-80025410: a0450000 sb a1,0(v0)
- MemCardProgressBarLines[i].g = NORMAL_LUMINANCE;
-80025414: a0450001 sb a1,1(v0)
- MemCardProgressBarLines[i].b = NORMAL_LUMINANCE;
-80025418: a0450002 sb a1,2(v0)
-8002541c: 24420010 addiu v0,v0,16
- MemCardProgressBarLines[3].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W;
-
- MemCardProgressBarLines[3].y[0] = MEMCARD_PROGRESS_BAR_Y;
- MemCardProgressBarLines[3].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H;
-
- for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++)
-80025420: 1446fffb bne v0,a2,80025410 <ISR_MemCardDataHandling+0x134>
-80025424: 2403ff80 li v1,-128
- MemCardProgressBarLines[i].b = NORMAL_LUMINANCE;
- }
-
- // Set progress bar attributes
-
- MemCardProgressBar.x = MEMCARD_PROGRESS_BAR_X;
-80025428: 3c108004 lui s0,0x8004
-8002542c: 24020056 li v0,86
-80025430: a6025db8 sh v0,23992(s0)
- MemCardProgressBar.y = MEMCARD_PROGRESS_BAR_Y;
-80025434: 26105db8 addiu s0,s0,23992
-80025438: 24020094 li v0,148
-8002543c: a6020002 sh v0,2(s0)
-
- MemCardProgressBar.w = ProgressBarXOffset;
-80025440: 3c028007 lui v0,0x8007
-80025444: 94421c48 lhu v0,7240(v0)
-
- MemCardProgressBar.r = MEMCARD_PROGRESS_BAR_R;
- MemCardProgressBar.g = MEMCARD_PROGRESS_BAR_G;
- MemCardProgressBar.b = MEMCARD_PROGRESS_BAR_B;
-
- GfxSortSprite(&SecondDisplay);
-80025448: 24845de8 addiu a0,a0,24040
- // Set progress bar attributes
-
- MemCardProgressBar.x = MEMCARD_PROGRESS_BAR_X;
- MemCardProgressBar.y = MEMCARD_PROGRESS_BAR_Y;
-
- MemCardProgressBar.w = ProgressBarXOffset;
-8002544c: a6020004 sh v0,4(s0)
- MemCardProgressBar.h = MEMCARD_PROGRESS_BAR_H;
-80025450: 24020010 li v0,16
-80025454: a6020006 sh v0,6(s0)
-
- MemCardProgressBar.r = MEMCARD_PROGRESS_BAR_R;
-80025458: a2030008 sb v1,8(s0)
- MemCardProgressBar.g = MEMCARD_PROGRESS_BAR_G;
-8002545c: a2030009 sb v1,9(s0)
- MemCardProgressBar.b = MEMCARD_PROGRESS_BAR_B;
-
- GfxSortSprite(&SecondDisplay);
-80025460: 0c0090d2 jal 80024348 <GfxSortSprite>
-80025464: a203000a sb v1,10(s0)
- GsSortGPoly4(&MemCardRect);
-80025468: 0c00b0e6 jal 8002c398 <GsSortGPoly4>
-8002546c: 26245dc8 addiu a0,s1,24008
- GsSortRectangle(&MemCardProgressBar);
-80025470: 0c00b762 jal 8002dd88 <GsSortRectangle>
-80025474: 02002021 move a0,s0
-
- for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++)
- {
- GsSortLine(&MemCardProgressBarLines[i]);
-80025478: 0c00b18e jal 8002c638 <GsSortLine>
-8002547c: 26445d78 addiu a0,s2,23928
-80025480: 3c048004 lui a0,0x8004
-80025484: 0c00b18e jal 8002c638 <GsSortLine>
-80025488: 24845d88 addiu a0,a0,23944
-8002548c: 3c048004 lui a0,0x8004
-80025490: 0c00b18e jal 8002c638 <GsSortLine>
-80025494: 24845d98 addiu a0,a0,23960
-80025498: 3c048004 lui a0,0x8004
-8002549c: 0c00b18e jal 8002c638 <GsSortLine>
-800254a0: 24845da8 addiu a0,a0,23976
- }
-
- GfxSetGlobalLuminance(0);
-
- FontSetFlags(&SmallFont, FONT_BLEND_EFFECT);
-800254a4: 3c108007 lui s0,0x8007
- for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++)
- {
- GsSortLine(&MemCardProgressBarLines[i]);
- }
-
- GfxSetGlobalLuminance(0);
-800254a8: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-800254ac: 00002021 move a0,zero
-
- FontSetFlags(&SmallFont, FONT_BLEND_EFFECT);
-800254b0: 24050004 li a1,4
-800254b4: 0c008441 jal 80021104 <FontSetFlags>
-800254b8: 26048d38 addiu a0,s0,-29384
-
- FontPrintText(&SmallFont, MEMCARD_LOAD_DATA_TEXT_X, MEMCARD_LOAD_DATA_TEXT_Y, "Loading memory card data...");
-800254bc: 3c078004 lui a3,0x8004
-800254c0: 24e70a84 addiu a3,a3,2692
-800254c4: 240600c0 li a2,192
-800254c8: 24050060 li a1,96
-800254cc: 0c008451 jal 80021144 <FontPrintText>
-800254d0: 26048d38 addiu a0,s0,-29384
-
- FontSetFlags(&SmallFont, FONT_NOFLAGS);
-800254d4: 00002821 move a1,zero
-800254d8: 0c008441 jal 80021104 <FontSetFlags>
-800254dc: 26048d38 addiu a0,s0,-29384
-
- GfxDrawScene_Fast();
-800254e0: 0c008fc1 jal 80023f04 <GfxDrawScene_Fast>
-800254e4: 00000000 nop
-
- ISR_TimesExecuted++;
-800254e8: 3c038007 lui v1,0x8007
-800254ec: 8c621c4c lw v0,7244(v1)
-800254f0: 00000000 nop
-800254f4: 24420001 addiu v0,v0,1
-800254f8: ac621c4c sw v0,7244(v1)
-}
-800254fc: 8fbf001c lw ra,28(sp)
-80025500: 8fb20018 lw s2,24(sp)
-80025504: 8fb10014 lw s1,20(sp)
-80025508: 8fb00010 lw s0,16(sp)
-8002550c: 03e00008 jr ra
-80025510: 27bd0020 addiu sp,sp,32
-
-80025514 <MemCardInit>:
- * *************************************/
-
-TYPE_BLOCK_DATA MemCardData[MEMCARD_BLOCKS_PER_CARD][MEMCARD_NUMBER_OF_SLOTS];
-
-void MemCardInit(void)
-{
-80025514: 3c028007 lui v0,0x8007
-80025518: 24428fcc addiu v0,v0,-28724
-8002551c: 3c048007 lui a0,0x8007
-80025520: 2484d16c addiu a0,a0,-11924
-80025524: 00401821 move v1,v0
- {
- for(i = BLOCK_1; i <= BLOCK_15; i++)
- {
- ptrBlockData = &MemCardData[i - BLOCK_1][j];
-
- ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE;
-80025528: 2405ff80 li a1,-128
-8002552c: a0650218 sb a1,536(v1)
- ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE;
-80025530: a0650219 sb a1,537(v1)
- ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE;
-80025534: a065021a sb a1,538(v1)
-80025538: 24630460 addiu v1,v1,1120
- uint8_t i;
- uint8_t j;
-
- for(j = SLOT_ONE; j <= SLOT_TWO; j++)
- {
- for(i = BLOCK_1; i <= BLOCK_15; i++)
-8002553c: 1483fffb bne a0,v1,8002552c <MemCardInit+0x18>
-80025540: 00000000 nop
- {
- ptrBlockData = &MemCardData[i - BLOCK_1][j];
-
- ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE;
-80025544: 2403ff80 li v1,-128
-80025548: a0430448 sb v1,1096(v0)
- ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE;
-8002554c: a0430449 sb v1,1097(v0)
- ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE;
-80025550: a043044a sb v1,1098(v0)
-80025554: 24420460 addiu v0,v0,1120
- uint8_t i;
- uint8_t j;
-
- for(j = SLOT_ONE; j <= SLOT_TWO; j++)
- {
- for(i = BLOCK_1; i <= BLOCK_15; i++)
-80025558: 1482fffb bne a0,v0,80025548 <MemCardInit+0x34>
-8002555c: 2406000c li a2,12
- ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE;
- ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE;
- }
- }
-
- ISR_TimesAccessed = 0;
-80025560: 3c028007 lui v0,0x8007
- ISR_TimesExecuted = 0;
-
- bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) );
-80025564: 3c048004 lui a0,0x8004
- ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE;
- ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE;
- }
- }
-
- ISR_TimesAccessed = 0;
-80025568: ac401c50 sw zero,7248(v0)
- ISR_TimesExecuted = 0;
-8002556c: 3c028007 lui v0,0x8007
-
- bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) );
-80025570: 00002821 move a1,zero
-80025574: 24845e14 addiu a0,a0,24084
-80025578: 0800d7ab j 80035eac <memset>
-8002557c: ac401c4c sw zero,7244(v0)
-
-80025580 <MemCardResetBlockData>:
-
- ISR_TimesExecuted++;
-}
-
-void MemCardResetBlockData(TYPE_BLOCK_DATA * ptrBlockData)
-{
-80025580: 27bdffe8 addiu sp,sp,-24
- bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA));
-80025584: 24060230 li a2,560
-80025588: 00002821 move a1,zero
-
- ISR_TimesExecuted++;
-}
-
-void MemCardResetBlockData(TYPE_BLOCK_DATA * ptrBlockData)
-{
-8002558c: afbf0014 sw ra,20(sp)
-80025590: afb00010 sw s0,16(sp)
- bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA));
-80025594: 0c00d7ab jal 80035eac <memset>
-80025598: 00808021 move s0,a0
-
- ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK;
-8002559c: 24020001 li v0,1
-
- IconIndex = 0;
-}
-800255a0: 8fbf0014 lw ra,20(sp)
-
-void MemCardResetBlockData(TYPE_BLOCK_DATA * ptrBlockData)
-{
- bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA));
-
- ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK;
-800255a4: ae020020 sw v0,32(s0)
-
- IconIndex = 0;
-800255a8: 3c028007 lui v0,0x8007
-}
-800255ac: 8fb00010 lw s0,16(sp)
-{
- bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA));
-
- ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK;
-
- IconIndex = 0;
-800255b0: a0401c54 sb zero,7252(v0)
-}
-800255b4: 03e00008 jr ra
-800255b8: 27bd0018 addiu sp,sp,24
-
-800255bc <MemCardUploadToGPU>:
-
- return false;
-}
-
-bool MemCardUploadToGPU(TYPE_BLOCK_DATA * ptrBlockData)
-{
-800255bc: 27bdff98 addiu sp,sp,-104
-800255c0: afbf0064 sw ra,100(sp)
-800255c4: afb60060 sw s6,96(sp)
-800255c8: afb5005c sw s5,92(sp)
-800255cc: afb40058 sw s4,88(sp)
-800255d0: afb30054 sw s3,84(sp)
-800255d4: afb20050 sw s2,80(sp)
-800255d8: afb1004c sw s1,76(sp)
-800255dc: afb00048 sw s0,72(sp)
- short x_clut_offset;
- short y_clut_offset;
- short x_block_offset;
- GsImage gs;
-
- if( (ptrBlockData->IconNumber < 1)
-800255e0: 90820008 lbu v0,8(a0)
-800255e4: 00000000 nop
-800255e8: 2442ffff addiu v0,v0,-1
-800255ec: 304200ff andi v0,v0,0xff
-800255f0: 2c420003 sltiu v0,v0,3
-800255f4: 10400008 beqz v0,80025618 <MemCardUploadToGPU+0x5c>
-800255f8: 3c128004 lui s2,0x8004
- if(i == 0)
- {
- ptrBlockData->IconTPoly.attribute = COLORMODE(COLORMODE_4BPP);
- ptrBlockData->IconTPoly.tpage = (gs.x / 64) + ((gs.y/256)*16);
-
- dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage);
-800255fc: 3c138004 lui s3,0x8004
-80025600: 00808021 move s0,a0
-80025604: 0000a821 move s5,zero
- gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset;
- gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4);
- gs.clut_w = MEMCARD_BLOCK_CLUT_W;
- gs.clut_h = MEMCARD_BLOCK_CLUT_H;
-
- dprintf("Gs Clut = {%d,%d,%d,%d}\n",
-80025608: 26520abc addiu s2,s2,2748
- if(i == 0)
- {
- ptrBlockData->IconTPoly.attribute = COLORMODE(COLORMODE_4BPP);
- ptrBlockData->IconTPoly.tpage = (gs.x / 64) + ((gs.y/256)*16);
-
- dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage);
-8002560c: 26730ad8 addiu s3,s3,2776
- ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset;
- ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2);
- ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0];
- ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1];
-
- dprintf("\tu = {%d, %d, %d, %d}\n",
-80025610: 10000080 b 80025814 <MemCardUploadToGPU+0x258>
-80025614: 3c148004 lui s4,0x8004
-
- if( (ptrBlockData->IconNumber < 1)
- ||
- (ptrBlockData->IconNumber > MEMCARD_NUMBER_OF_ICONS) )
- {
- dprintf("Invalid number of icons.\n");
-80025618: 3c048004 lui a0,0x8004
-8002561c: 0c00ed8f jal 8003b63c <printf>
-80025620: 24840aa0 addiu a0,a0,2720
- return false;
-80025624: 10000081 b 8002582c <MemCardUploadToGPU+0x270>
-80025628: 00001021 move v0,zero
- {
- gs.pmode = COLORMODE_4BPP;
- gs.has_clut = 1;
-
- x_clut_offset = i << 4;
- y_clut_offset = ptrBlockData->Block - 1;
-8002562c: 8e060004 lw a2,4(s0)
-
- gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset;
- gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4);
-80025630: 8e020000 lw v0,0(s0)
- {
- gs.pmode = COLORMODE_4BPP;
- gs.has_clut = 1;
-
- x_clut_offset = i << 4;
- y_clut_offset = ptrBlockData->Block - 1;
-80025634: 24c6ffff addiu a2,a2,-1
-80025638: 00063400 sll a2,a2,0x10
-
- gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset;
- gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4);
-8002563c: 00021100 sll v0,v0,0x4
-80025640: 24420160 addiu v0,v0,352
- {
- gs.pmode = COLORMODE_4BPP;
- gs.has_clut = 1;
-
- x_clut_offset = i << 4;
- y_clut_offset = ptrBlockData->Block - 1;
-80025644: 00063403 sra a2,a2,0x10
-
- gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset;
-80025648: 00152900 sll a1,s5,0x4
-8002564c: 24a503c0 addiu a1,a1,960
- gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4);
-80025650: 00463021 addu a2,v0,a2
- gs.clut_w = MEMCARD_BLOCK_CLUT_W;
-80025654: 24160010 li s6,16
- gs.clut_h = MEMCARD_BLOCK_CLUT_H;
-
- dprintf("Gs Clut = {%d,%d,%d,%d}\n",
-80025658: afa30010 sw v1,16(sp)
-8002565c: 02402021 move a0,s2
-80025660: 24070010 li a3,16
- }
-
- for(i = 0; i < ptrBlockData->IconNumber; i++)
- {
- gs.pmode = COLORMODE_4BPP;
- gs.has_clut = 1;
-80025664: afa3001c sw v1,28(sp)
- y_clut_offset = ptrBlockData->Block - 1;
-
- gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset;
- gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4);
- gs.clut_w = MEMCARD_BLOCK_CLUT_W;
- gs.clut_h = MEMCARD_BLOCK_CLUT_H;
-80025668: afa3002c sw v1,44(sp)
- return false;
- }
-
- for(i = 0; i < ptrBlockData->IconNumber; i++)
- {
- gs.pmode = COLORMODE_4BPP;
-8002566c: afa00018 sw zero,24(sp)
- gs.has_clut = 1;
-
- x_clut_offset = i << 4;
- y_clut_offset = ptrBlockData->Block - 1;
-
- gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset;
-80025670: afa50020 sw a1,32(sp)
- gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4);
-80025674: afa60024 sw a2,36(sp)
- gs.clut_w = MEMCARD_BLOCK_CLUT_W;
-80025678: afb60028 sw s6,40(sp)
- gs.clut_h = MEMCARD_BLOCK_CLUT_H;
-
- dprintf("Gs Clut = {%d,%d,%d,%d}\n",
-8002567c: 0c00ed8f jal 8003b63c <printf>
-80025680: 3c110fff lui s1,0xfff
- gs.clut_y,
- gs.clut_w,
- gs.clut_h );
-
- x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1);
- x_block_offset *= MEMCARD_BLOCK_MAX_ICONS;
-80025684: 8e020004 lw v0,4(s0)
-80025688: 3631ffff ori s1,s1,0xffff
-8002568c: 00511021 addu v0,v0,s1
-80025690: 00021900 sll v1,v0,0x4
-80025694: 00021180 sll v0,v0,0x6
-80025698: 00431023 subu v0,v0,v1
-8002569c: 00021400 sll v0,v0,0x10
-800256a0: 00021403 sra v0,v0,0x10
- x_block_offset >>= MEMCARD_BLOCK_IMAGE_W_BITSHIFT;
- x_block_offset += i<<MEMCARD_BLOCK_IMAGE_W_BITSHIFT;
-800256a4: 00151880 sll v1,s5,0x2
-800256a8: 00021083 sra v0,v0,0x2
-
- gs.x = MEMCARD_BLOCK_IMAGE_X + x_block_offset;
-800256ac: 00621021 addu v0,v1,v0
-800256b0: 24420300 addiu v0,v0,768
-800256b4: afa20030 sw v0,48(sp)
- gs.y = MEMCARD_BLOCK_IMAGE_Y + (MEMCARD_BLOCK_IMAGE_H * ptrBlockData->Slot);
-800256b8: 8e020000 lw v0,0(s0)
- gs.h = MEMCARD_BLOCK_IMAGE_H;
-
- gs.clut_data = (uint8_t*)ptrBlockData->CLUT[i];
- gs.data = (uint8_t*)ptrBlockData->Icons[i];
-
- GsUploadImage(&gs);
-800256bc: 27a40018 addiu a0,sp,24
- x_block_offset *= MEMCARD_BLOCK_MAX_ICONS;
- x_block_offset >>= MEMCARD_BLOCK_IMAGE_W_BITSHIFT;
- x_block_offset += i<<MEMCARD_BLOCK_IMAGE_W_BITSHIFT;
-
- gs.x = MEMCARD_BLOCK_IMAGE_X + x_block_offset;
- gs.y = MEMCARD_BLOCK_IMAGE_Y + (MEMCARD_BLOCK_IMAGE_H * ptrBlockData->Slot);
-800256c0: 24420016 addiu v0,v0,22
-800256c4: 00021100 sll v0,v0,0x4
-800256c8: afa20034 sw v0,52(sp)
-
- // Dimensions are 16x16 px, but since 4bpp is used, it actually
- // takes 4x16 px on the framebuffer.
- gs.w = MEMCARD_BLOCK_IMAGE_W >> MEMCARD_BLOCK_IMAGE_W_BITSHIFT;
-800256cc: 24020004 li v0,4
-800256d0: afa20038 sw v0,56(sp)
- gs.h = MEMCARD_BLOCK_IMAGE_H;
-
- gs.clut_data = (uint8_t*)ptrBlockData->CLUT[i];
-800256d4: 26a2000d addiu v0,s5,13
-800256d8: 00021140 sll v0,v0,0x5
-800256dc: 02021021 addu v0,s0,v0
-800256e0: 24420004 addiu v0,v0,4
-800256e4: afa20040 sw v0,64(sp)
- gs.data = (uint8_t*)ptrBlockData->Icons[i];
-800256e8: 001511c0 sll v0,s5,0x7
-800256ec: 02021021 addu v0,s0,v0
-800256f0: 24420024 addiu v0,v0,36
- gs.y = MEMCARD_BLOCK_IMAGE_Y + (MEMCARD_BLOCK_IMAGE_H * ptrBlockData->Slot);
-
- // Dimensions are 16x16 px, but since 4bpp is used, it actually
- // takes 4x16 px on the framebuffer.
- gs.w = MEMCARD_BLOCK_IMAGE_W >> MEMCARD_BLOCK_IMAGE_W_BITSHIFT;
- gs.h = MEMCARD_BLOCK_IMAGE_H;
-800256f4: afb6003c sw s6,60(sp)
-
- gs.clut_data = (uint8_t*)ptrBlockData->CLUT[i];
- gs.data = (uint8_t*)ptrBlockData->Icons[i];
-
- GsUploadImage(&gs);
-800256f8: 0c00be55 jal 8002f954 <GsUploadImage>
-800256fc: afa20044 sw v0,68(sp)
-
- if(i == 0)
-80025700: 16a00042 bnez s5,8002580c <MemCardUploadToGPU+0x250>
-80025704: 00000000 nop
- {
- ptrBlockData->IconTPoly.attribute = COLORMODE(COLORMODE_4BPP);
- ptrBlockData->IconTPoly.tpage = (gs.x / 64) + ((gs.y/256)*16);
-80025708: 8fa20034 lw v0,52(sp)
-8002570c: 8fa30030 lw v1,48(sp)
-80025710: 00022fc3 sra a1,v0,0x1f
-80025714: 30a500ff andi a1,a1,0xff
-80025718: 00a22821 addu a1,a1,v0
-8002571c: 00052a03 sra a1,a1,0x8
-80025720: 00051100 sll v0,a1,0x4
-80025724: 00032fc3 sra a1,v1,0x1f
-80025728: 30a5003f andi a1,a1,0x3f
-8002572c: 00a32821 addu a1,a1,v1
-80025730: 00052983 sra a1,a1,0x6
-80025734: 00452821 addu a1,v0,a1
-80025738: 30a500ff andi a1,a1,0xff
-8002573c: a2050220 sb a1,544(s0)
-
- dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage);
-80025740: 02602021 move a0,s3
-80025744: 0c00ed8f jal 8003b63c <printf>
-80025748: ae00022c sw zero,556(s0)
-
- x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1);
- x_block_offset *= MEMCARD_BLOCK_MAX_ICONS;
-
- ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset;
-8002574c: 8e070004 lw a3,4(s0)
- ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2);
-80025750: 8fa60038 lw a2,56(sp)
- dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage);
-
- x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1);
- x_block_offset *= MEMCARD_BLOCK_MAX_ICONS;
-
- ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset;
-80025754: 00f18821 addu s1,a3,s1
-80025758: 00113900 sll a3,s1,0x4
-8002575c: 00118980 sll s1,s1,0x6
-80025760: 02273823 subu a3,s1,a3
-80025764: 30e700ff andi a3,a3,0xff
- ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2);
-80025768: 00063080 sll a2,a2,0x2
-8002576c: 00e63021 addu a2,a3,a2
-80025770: 30c600ff andi a2,a2,0xff
- dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage);
-
- x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1);
- x_block_offset *= MEMCARD_BLOCK_MAX_ICONS;
-
- ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset;
-80025774: a2070221 sb a3,545(s0)
- ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2);
-80025778: a2060222 sb a2,546(s0)
- ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0];
-8002577c: a2070223 sb a3,547(s0)
- ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1];
-80025780: a2060224 sb a2,548(s0)
-
- dprintf("\tu = {%d, %d, %d, %d}\n",
-80025784: 00e02821 move a1,a3
-80025788: afa60010 sw a2,16(sp)
-8002578c: 0c00ed8f jal 8003b63c <printf>
-80025790: 26840ae8 addiu a0,s4,2792
- ptrBlockData->IconTPoly.u[0],
- ptrBlockData->IconTPoly.u[1],
- ptrBlockData->IconTPoly.u[2],
- ptrBlockData->IconTPoly.u[3]);
-
- ptrBlockData->IconTPoly.v[0] = gs.y % 256;
-80025794: 8fa60034 lw a2,52(sp)
-80025798: 24020100 li v0,256
-8002579c: 14400002 bnez v0,800257a8 <MemCardUploadToGPU+0x1ec>
-800257a0: 00c2001a div zero,a2,v0
-800257a4: 0007000d break 0x7
- ptrBlockData->IconTPoly.v[1] = ptrBlockData->IconTPoly.v[0];
- ptrBlockData->IconTPoly.v[2] = (gs.y % 256) + (gs.h);
-800257a8: 8fa7003c lw a3,60(sp)
- ptrBlockData->IconTPoly.v[3] = ptrBlockData->IconTPoly.v[2];
-
- dprintf("\tu = {%d, %d, %d, %d}\n",
-800257ac: 26840ae8 addiu a0,s4,2792
- ptrBlockData->IconTPoly.u[0],
- ptrBlockData->IconTPoly.u[1],
- ptrBlockData->IconTPoly.u[2],
- ptrBlockData->IconTPoly.u[3]);
-
- ptrBlockData->IconTPoly.v[0] = gs.y % 256;
-800257b0: 00003010 mfhi a2
-800257b4: 30c200ff andi v0,a2,0xff
- ptrBlockData->IconTPoly.v[1] = ptrBlockData->IconTPoly.v[0];
- ptrBlockData->IconTPoly.v[2] = (gs.y % 256) + (gs.h);
-800257b8: 00473821 addu a3,v0,a3
-800257bc: 30e700ff andi a3,a3,0xff
-800257c0: 30c600ff andi a2,a2,0xff
- ptrBlockData->IconTPoly.v[3] = ptrBlockData->IconTPoly.v[2];
-
- dprintf("\tu = {%d, %d, %d, %d}\n",
-800257c4: 00c02821 move a1,a2
- ptrBlockData->IconTPoly.u[0],
- ptrBlockData->IconTPoly.u[1],
- ptrBlockData->IconTPoly.u[2],
- ptrBlockData->IconTPoly.u[3]);
-
- ptrBlockData->IconTPoly.v[0] = gs.y % 256;
-800257c8: a2020225 sb v0,549(s0)
- ptrBlockData->IconTPoly.v[1] = ptrBlockData->IconTPoly.v[0];
-800257cc: a2020226 sb v0,550(s0)
- ptrBlockData->IconTPoly.v[2] = (gs.y % 256) + (gs.h);
-800257d0: a2070227 sb a3,551(s0)
- ptrBlockData->IconTPoly.v[3] = ptrBlockData->IconTPoly.v[2];
-800257d4: a2070228 sb a3,552(s0)
-
- dprintf("\tu = {%d, %d, %d, %d}\n",
-800257d8: 0c00ed8f jal 8003b63c <printf>
-800257dc: afa70010 sw a3,16(sp)
-
- ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE;
- ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE;
- ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE;
-
- ptrBlockData->IconTPoly.cx = gs.clut_x;
-800257e0: 87a50020 lh a1,32(sp)
- ptrBlockData->IconTPoly.cy = gs.clut_y;
-800257e4: 87a60024 lh a2,36(sp)
- ptrBlockData->IconTPoly.v[0],
- ptrBlockData->IconTPoly.v[1],
- ptrBlockData->IconTPoly.v[2],
- ptrBlockData->IconTPoly.v[3]);
-
- ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE;
-800257e8: 2402ff80 li v0,-128
- ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE;
-
- ptrBlockData->IconTPoly.cx = gs.clut_x;
- ptrBlockData->IconTPoly.cy = gs.clut_y;
-
- dprintf("\tclut = {%d, %d}\n",
-800257ec: 3c048004 lui a0,0x8004
- ptrBlockData->IconTPoly.v[0],
- ptrBlockData->IconTPoly.v[1],
- ptrBlockData->IconTPoly.v[2],
- ptrBlockData->IconTPoly.v[3]);
-
- ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE;
-800257f0: a2020218 sb v0,536(s0)
- ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE;
-800257f4: a2020219 sb v0,537(s0)
- ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE;
-800257f8: a202021a sb v0,538(s0)
-
- ptrBlockData->IconTPoly.cx = gs.clut_x;
-800257fc: a605021c sh a1,540(s0)
- ptrBlockData->IconTPoly.cy = gs.clut_y;
-80025800: a606021e sh a2,542(s0)
-
- dprintf("\tclut = {%d, %d}\n",
-80025804: 0c00ed8f jal 8003b63c <printf>
-80025808: 24840b00 addiu a0,a0,2816
- {
- dprintf("Invalid number of icons.\n");
- return false;
- }
-
- for(i = 0; i < ptrBlockData->IconNumber; i++)
-8002580c: 26b50001 addiu s5,s5,1
-80025810: 32b500ff andi s5,s5,0xff
-80025814: 92020008 lbu v0,8(s0)
-80025818: 00000000 nop
-8002581c: 02a2102b sltu v0,s5,v0
-80025820: 1440ff82 bnez v0,8002562c <MemCardUploadToGPU+0x70>
-80025824: 24030001 li v1,1
- ptrBlockData->IconTPoly.cx,
- ptrBlockData->IconTPoly.cy);
- }
- }
-
- return true;
-80025828: 24020001 li v0,1
-}
-8002582c: 8fbf0064 lw ra,100(sp)
-80025830: 8fb60060 lw s6,96(sp)
-80025834: 8fb5005c lw s5,92(sp)
-80025838: 8fb40058 lw s4,88(sp)
-8002583c: 8fb30054 lw s3,84(sp)
-80025840: 8fb20050 lw s2,80(sp)
-80025844: 8fb1004c lw s1,76(sp)
-80025848: 8fb00048 lw s0,72(sp)
-8002584c: 03e00008 jr ra
-80025850: 27bd0068 addiu sp,sp,104
-
-80025854 <MemCardGetBlockInfo>:
-}
-
-bool MemCardGetBlockInfo( TYPE_BLOCK_DATA * ptrBlockData,
- MEMCARD_SLOTS slot,
- MEMCARD_BLOCKS blockNumber )
-{
-80025854: 27bdffd0 addiu sp,sp,-48
-80025858: afbf002c sw ra,44(sp)
-8002585c: afb20018 sw s2,24(sp)
-80025860: afb10014 sw s1,20(sp)
-80025864: 00a09021 move s2,a1
-80025868: 00c08821 move s1,a2
-8002586c: afb00010 sw s0,16(sp)
-80025870: afb60028 sw s6,40(sp)
-80025874: 00808021 move s0,a0
-80025878: afb50024 sw s5,36(sp)
-8002587c: afb40020 sw s4,32(sp)
- MemCardResetBlockData(ptrBlockData);
-80025880: 0c009560 jal 80025580 <MemCardResetBlockData>
-80025884: afb3001c sw s3,28(sp)
-
- ptrBlockData->Slot = slot;
- ptrBlockData->Block = blockNumber;
-
- dprintf("MemCardGetBlockStateFileName...\n");
-80025888: 3c048004 lui a0,0x8004
- MEMCARD_SLOTS slot,
- MEMCARD_BLOCKS blockNumber )
-{
- MemCardResetBlockData(ptrBlockData);
-
- ptrBlockData->Slot = slot;
-8002588c: ae120000 sw s2,0(s0)
- ptrBlockData->Block = blockNumber;
-80025890: ae110004 sw s1,4(s0)
-
- dprintf("MemCardGetBlockStateFileName...\n");
-80025894: 0c00ed8f jal 8003b63c <printf>
-80025898: 24840b14 addiu a0,a0,2836
-
-bool MemCardGetBlockStateFileName(TYPE_BLOCK_DATA * ptrBlockData)
-{
- int sector = ptrBlockData->Block;
-
- memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE);
-8002589c: 3c118004 lui s1,0x8004
- return true;
-}
-
-bool MemCardGetBlockStateFileName(TYPE_BLOCK_DATA * ptrBlockData)
-{
- int sector = ptrBlockData->Block;
-800258a0: 8e120004 lw s2,4(s0)
-
- memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE);
-800258a4: 00002821 move a1,zero
-800258a8: 26245e20 addiu a0,s1,24096
-800258ac: 0c00d7ab jal 80035eac <memset>
-800258b0: 24060080 li a2,128
-
- if(MemCardReadSector(ptrBlockData, sector) == false)
-800258b4: 02402821 move a1,s2
-800258b8: 0c00947d jal 800251f4 <MemCardReadSector>
-800258bc: 02002021 move a0,s0
-800258c0: 104000a4 beqz v0,80025b54 <MemCardGetBlockInfo+0x300>
-800258c4: 3c048004 lui a0,0x8004
- {
- return false;
- }
-
- // 00h-03h Block Allocation State
- dprintf("Block %d, slot %d, allocation state: 0x%02X.\n",
-800258c8: 92275e20 lbu a3,24096(s1)
-800258cc: 8e060000 lw a2,0(s0)
-800258d0: 8e050004 lw a1,4(s0)
-800258d4: 24840b38 addiu a0,a0,2872
-800258d8: 0c00ed8f jal 8003b63c <printf>
-800258dc: 00409821 move s3,v0
- * 000000A3h - Free ;deleted (last block of file) */
-
- // Always take into account memory card data is little-endian,
- // so if using a hex editor, you will read 51000000h.
-
- switch(DataBuffer[0])
-800258e0: 92225e20 lbu v0,24096(s1)
-800258e4: 24030053 li v1,83
-800258e8: 10430012 beq v0,v1,80025934 <MemCardGetBlockInfo+0xe0>
-800258ec: 2c430054 sltiu v1,v0,84
-800258f0: 10600007 beqz v1,80025910 <MemCardGetBlockInfo+0xbc>
-800258f4: 24030051 li v1,81
-800258f8: 1043000c beq v0,v1,8002592c <MemCardGetBlockInfo+0xd8>
-800258fc: 24030052 li v1,82
-80025900: 14430021 bne v0,v1,80025988 <MemCardGetBlockInfo+0x134>
-80025904: 24020002 li v0,2
- case 0x52:
- ptrBlockData->BlockCount = INTERMEDIATE_BLOCK;
- break;
-
- case 0x53:
- ptrBlockData->BlockCount = LAST_BLOCK;
-80025908: 1000000c b 8002593c <MemCardGetBlockInfo+0xe8>
-8002590c: ae020020 sw v0,32(s0)
- * 000000A3h - Free ;deleted (last block of file) */
-
- // Always take into account memory card data is little-endian,
- // so if using a hex editor, you will read 51000000h.
-
- switch(DataBuffer[0])
-80025910: 2442ff60 addiu v0,v0,-160
-80025914: 24030003 li v1,3
-80025918: 0062102b sltu v0,v1,v0
-8002591c: 1440001b bnez v0,8002598c <MemCardGetBlockInfo+0x138>
-80025920: 3c048004 lui a0,0x8004
- break;
- case 0xA0:
- case 0xA1:
- case 0xA2:
- case 0xA3:
- ptrBlockData->BlockCount = EMPTY_BLOCK;
-80025924: 1000001b b 80025994 <MemCardGetBlockInfo+0x140>
-80025928: ae000020 sw zero,32(s0)
- // so if using a hex editor, you will read 51000000h.
-
- switch(DataBuffer[0])
- {
- case 0x51:
- ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK;
-8002592c: 10000002 b 80025938 <MemCardGetBlockInfo+0xe4>
-80025930: 24020001 li v0,1
- case 0x52:
- ptrBlockData->BlockCount = INTERMEDIATE_BLOCK;
- break;
-
- case 0x53:
- ptrBlockData->BlockCount = LAST_BLOCK;
-80025934: 24020003 li v0,3
-80025938: ae020020 sw v0,32(s0)
- }
-
- // 0Ah-1Eh Filename in ASCII, terminated by 00h (max 20 chars, plus ending 00h)
- // File name is only defined on first block of group (allocation state == 0x51)
-
- if(ptrBlockData->BlockCount == FIRST_OR_ONLY_BLOCK)
-8002593c: 8e030020 lw v1,32(s0)
-80025940: 24020001 li v0,1
-80025944: 14620013 bne v1,v0,80025994 <MemCardGetBlockInfo+0x140>
-80025948: 26120009 addiu s2,s0,9
- {
- memset(ptrBlockData->FileName, 0 , MEMCARD_FILENAME_SIZE);
-8002594c: 02402021 move a0,s2
-80025950: 24060015 li a2,21
-80025954: 0c00d7ab jal 80035eac <memset>
-80025958: 00002821 move a1,zero
-
- memcpy(ptrBlockData->FileName, &DataBuffer[0x0A], MEMCARD_FILENAME_SIZE);
-8002595c: 3c058004 lui a1,0x8004
-80025960: 02402021 move a0,s2
-80025964: 24060015 li a2,21
-80025968: 0c00d75e jal 80035d78 <memcpy>
-8002596c: 24a55e2a addiu a1,a1,24106
-
- dprintf("File name: %s\n", ptrBlockData->FileName);
-80025970: 3c048004 lui a0,0x8004
-80025974: 02402821 move a1,s2
-80025978: 0c00ed8f jal 8003b63c <printf>
-8002597c: 24840b8c addiu a0,a0,2956
-80025980: 10000004 b 80025994 <MemCardGetBlockInfo+0x140>
-80025984: 00000000 nop
- case 0xA2:
- case 0xA3:
- ptrBlockData->BlockCount = EMPTY_BLOCK;
- return true;
- default:
- printf("Invalid block allocation state!\n");
-80025988: 3c048004 lui a0,0x8004
-8002598c: 1000001d b 80025a04 <MemCardGetBlockInfo+0x1b0>
-80025990: 24840b68 addiu a0,a0,2920
- if(MemCardGetBlockStateFileName(ptrBlockData) == false)
- {
- return false;
- }
-
- if(ptrBlockData->BlockCount == EMPTY_BLOCK)
-80025994: 8e020020 lw v0,32(s0)
-80025998: 00000000 nop
-8002599c: 104000bc beqz v0,80025c90 <MemCardGetBlockInfo+0x43c>
-800259a0: 3c048004 lui a0,0x8004
- {
- // Stop looking for any other data.
- return true;
- }
-
- dprintf("MemCardGetInitialFrameInfo...\n");
-800259a4: 0c00ed8f jal 8003b63c <printf>
-800259a8: 24840b9c addiu a0,a0,2972
-bool MemCardGetInitialFrameInfo(TYPE_BLOCK_DATA * ptrBlockData)
-{
- unsigned int i;
- int sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT;
-
- if(ptrBlockData->BlockCount != FIRST_OR_ONLY_BLOCK)
-800259ac: 8e140020 lw s4,32(s0)
-800259b0: 24020001 li v0,1
-800259b4: 12820017 beq s4,v0,80025a14 <MemCardGetBlockInfo+0x1c0>
-800259b8: 00002821 move a1,zero
- if(MemCardGetInitialFrameInfo(ptrBlockData) == false)
- {
- return false;
- }
-
- dprintf("MemCardGetIconFrameInfo...\n");
-800259bc: 3c048004 lui a0,0x8004
-800259c0: 0c00ed8f jal 8003b63c <printf>
-800259c4: 24840ce4 addiu a0,a0,3300
- unsigned int i;
- unsigned int j;
- uint8_t buffer_contents;
- static TYPE_BLOCK_DATA * ptrReferenceBlock = NULL;
-
- switch(ptrBlockData->BlockCount)
-800259c8: 8e020020 lw v0,32(s0)
-800259cc: 24030001 li v1,1
-800259d0: 10430083 beq v0,v1,80025be0 <MemCardGetBlockInfo+0x38c>
-800259d4: 24120001 li s2,1
-800259d8: 1040009f beqz v0,80025c58 <MemCardGetBlockInfo+0x404>
-800259dc: 2c420004 sltiu v0,v0,4
-800259e0: 1040007d beqz v0,80025bd8 <MemCardGetBlockInfo+0x384>
-800259e4: 3c048004 lui a0,0x8004
- return true;
-
- case INTERMEDIATE_BLOCK:
- case LAST_BLOCK:
-
- if(ptrReferenceBlock == NULL)
-800259e8: 3c128007 lui s2,0x8007
-800259ec: 8e421c44 lw v0,7236(s2)
-800259f0: 00000000 nop
-800259f4: 14400059 bnez v0,80025b5c <MemCardGetBlockInfo+0x308>
-800259f8: 261401a4 addiu s4,s0,420
- {
- dprintf("No reference memory card block found yet!\n");
-800259fc: 3c048004 lui a0,0x8004
-80025a00: 24840c28 addiu a0,a0,3112
- ptrReferenceBlock = ptrBlockData;
-
- return true;
- }
-
- dprintf("Unknown error from MemCardGetIconFrameInfo()!\n");
-80025a04: 0c00ed8f jal 8003b63c <printf>
-80025a08: 00009821 move s3,zero
-80025a0c: 100000a0 b 80025c90 <MemCardGetBlockInfo+0x43c>
-80025a10: 00000000 nop
-}
-
-bool MemCardGetInitialFrameInfo(TYPE_BLOCK_DATA * ptrBlockData)
-{
- unsigned int i;
- int sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT;
-80025a14: 8e120004 lw s2,4(s0)
-
- // Pretty silly operation (TITLE_FRAME = 0), but used for
- // conceptual purposes and better understanding.
- sector += TITLE_FRAME;
-
- memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE);
-80025a18: 26245e20 addiu a0,s1,24096
-80025a1c: 0c00d7ab jal 80035eac <memset>
-80025a20: 24060080 li a2,128
-
- if(MemCardReadSector(ptrBlockData, sector) == false)
-80025a24: 00122980 sll a1,s2,0x6
-80025a28: 02002021 move a0,s0
-80025a2c: 0c00947d jal 800251f4 <MemCardReadSector>
-80025a30: 3c138004 lui s3,0x8004
-80025a34: 10400047 beqz v0,80025b54 <MemCardGetBlockInfo+0x300>
-80025a38: 26725e20 addiu s2,s3,24096
- {
- return false;
- }
-
- dprintf("Magic number: '%c' '%c'\n",DataBuffer[0], DataBuffer[1]);
-80025a3c: 92460001 lbu a2,1(s2)
-80025a40: 92655e20 lbu a1,24096(s3)
-80025a44: 3c048004 lui a0,0x8004
-80025a48: 0c00ed8f jal 8003b63c <printf>
-80025a4c: 24840bbc addiu a0,a0,3004
-
- if(DataBuffer[0] != 'S' || DataBuffer[1] != 'C')
-80025a50: 92635e20 lbu v1,24096(s3)
-80025a54: 24020053 li v0,83
-80025a58: 14620005 bne v1,v0,80025a70 <MemCardGetBlockInfo+0x21c>
-80025a5c: 24020043 li v0,67
-80025a60: 92430001 lbu v1,1(s2)
-80025a64: 00000000 nop
-80025a68: 10620006 beq v1,v0,80025a84 <MemCardGetBlockInfo+0x230>
-80025a6c: 24030012 li v1,18
- {
- // Invalid magic number.
- dprintf("Invalid magic number extracted from slot %d, block %d.\n",
-80025a70: 3c048004 lui a0,0x8004
-80025a74: 8e060004 lw a2,4(s0)
-80025a78: 8e050000 lw a1,0(s0)
-80025a7c: 10000033 b 80025b4c <MemCardGetBlockInfo+0x2f8>
-80025a80: 24840bd8 addiu a0,a0,3032
- 11h...Icon has 1 frame (static) (same image shown forever)
- 12h...Icon has 2 frames (animated) (changes every 16 PAL frames)
- 13h...Icon has 3 frames (animated) (changes every 11 PAL frames)
- * */
-
- switch(DataBuffer[2])
-80025a84: 92420002 lbu v0,2(s2)
-80025a88: 00000000 nop
-80025a8c: 10430007 beq v0,v1,80025aac <MemCardGetBlockInfo+0x258>
-80025a90: 24030013 li v1,19
-80025a94: 10430007 beq v0,v1,80025ab4 <MemCardGetBlockInfo+0x260>
-80025a98: 24030011 li v1,17
-80025a9c: 1443007c bne v0,v1,80025c90 <MemCardGetBlockInfo+0x43c>
-80025aa0: 00009821 move s3,zero
- {
- case 0x11:
- ptrBlockData->IconNumber = 1;
-80025aa4: 10000005 b 80025abc <MemCardGetBlockInfo+0x268>
-80025aa8: a2140008 sb s4,8(s0)
- break;
-
- case 0x12:
- ptrBlockData->IconNumber = 2;
-80025aac: 10000002 b 80025ab8 <MemCardGetBlockInfo+0x264>
-80025ab0: 24020002 li v0,2
- break;
-
- case 0x13:
- ptrBlockData->IconNumber = 3;
-80025ab4: 24020003 li v0,3
-80025ab8: a2020008 sb v0,8(s0)
- // Invalid icon display flag! We can't know how many icons
- // are used.
- return false;
- }
-
- dprintf("Number of icons: %d\n", ptrBlockData->IconNumber);
-80025abc: 92050008 lbu a1,8(s0)
-80025ac0: 3c048004 lui a0,0x8004
-80025ac4: 24840c10 addiu a0,a0,3088
-80025ac8: 0c00ed8f jal 8003b63c <printf>
-80025acc: 3c148004 lui s4,0x8004
-80025ad0: 261301a4 addiu s3,s0,420
-
- // 60h-7Fh Icon 16 Color Palette Data (each entry is 16bit CLUT)
-
- for(i = 0; i < ptrBlockData->IconNumber; i++)
-80025ad4: 00009021 move s2,zero
- {
- memcpy(ptrBlockData->CLUT[i],&DataBuffer[0x60], MEMCARD_CLUT_SIZE);
-80025ad8: 26945e80 addiu s4,s4,24192
-
- dprintf("Number of icons: %d\n", ptrBlockData->IconNumber);
-
- // 60h-7Fh Icon 16 Color Palette Data (each entry is 16bit CLUT)
-
- for(i = 0; i < ptrBlockData->IconNumber; i++)
-80025adc: 92020008 lbu v0,8(s0)
-80025ae0: 00000000 nop
-80025ae4: 0242102b sltu v0,s2,v0
-80025ae8: 1040ffb4 beqz v0,800259bc <MemCardGetBlockInfo+0x168>
-80025aec: 24060020 li a2,32
- {
- memcpy(ptrBlockData->CLUT[i],&DataBuffer[0x60], MEMCARD_CLUT_SIZE);
-80025af0: 02602021 move a0,s3
-80025af4: 0c00d75e jal 80035d78 <memcpy>
-80025af8: 02802821 move a1,s4
-
- dprintf("Number of icons: %d\n", ptrBlockData->IconNumber);
-
- // 60h-7Fh Icon 16 Color Palette Data (each entry is 16bit CLUT)
-
- for(i = 0; i < ptrBlockData->IconNumber; i++)
-80025afc: 26520001 addiu s2,s2,1
-80025b00: 1000fff6 b 80025adc <MemCardGetBlockInfo+0x288>
-80025b04: 26730020 addiu s3,s3,32
- {
- dprintf("Could not read memory sector!\n");
- return false;
- }
-
- memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE);
-80025b08: 26640024 addiu a0,s3,36
-80025b0c: 0c00d75e jal 80035d78 <memcpy>
-80025b10: 02c02821 move a1,s6
-
- // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only)
- for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++)
- {
- dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber);
- buffer_contents = 0;
-80025b14: 00001821 move v1,zero
- return false;
- }
-
- memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE);
-
- for(j = 0; j < MEMCARD_SECTOR_SIZE; j++)
-80025b18: 00001021 move v0,zero
-80025b1c: 24040080 li a0,128
- {
- buffer_contents |= ptrBlockData->Icons[i - 1][j];
-80025b20: 02622821 addu a1,s3,v0
-80025b24: 90a50024 lbu a1,36(a1)
- return false;
- }
-
- memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE);
-
- for(j = 0; j < MEMCARD_SECTOR_SIZE; j++)
-80025b28: 24420001 addiu v0,v0,1
-80025b2c: 1444fffc bne v0,a0,80025b20 <MemCardGetBlockInfo+0x2cc>
-80025b30: 00651825 or v1,v1,a1
- {
- buffer_contents |= ptrBlockData->Icons[i - 1][j];
- }
-
- if(buffer_contents == 0)
-80025b34: 14600044 bnez v1,80025c48 <MemCardGetBlockInfo+0x3f4>
-80025b38: 26730080 addiu s3,s3,128
- {
- // Icon buffer is empty!
- dprintf("Invalid icon buffer for slot %d, block %d.\n",
-80025b3c: 3c048004 lui a0,0x8004
-80025b40: 8e060004 lw a2,4(s0)
-80025b44: 8e050000 lw a1,0(s0)
-80025b48: 24840c88 addiu a0,a0,3208
-80025b4c: 0c00ed8f jal 8003b63c <printf>
-80025b50: 00000000 nop
-
- dprintf("MemCardGetInitialFrameInfo...\n");
-
- if(MemCardGetInitialFrameInfo(ptrBlockData) == false)
- {
- return false;
-80025b54: 1000004e b 80025c90 <MemCardGetBlockInfo+0x43c>
-80025b58: 00009821 move s3,zero
- {
- dprintf("No reference memory card block found yet!\n");
- return false;
- }
-
- ptrBlockData->IconNumber = ptrReferenceBlock->IconNumber;
-80025b5c: 90420008 lbu v0,8(v0)
-80025b60: 00000000 nop
-80025b64: a2020008 sb v0,8(s0)
-80025b68: 26130024 addiu s3,s0,36
-
- for(i = 0; i < MEMCARD_NUMBER_OF_ICONS; i++)
-80025b6c: 00008821 move s1,zero
-80025b70: 24150003 li s5,3
- {
- memcpy(ptrBlockData->CLUT[i], ptrReferenceBlock->CLUT[i], MEMCARD_CLUT_SIZE);
-80025b74: 2625000d addiu a1,s1,13
-80025b78: 8e421c44 lw v0,7236(s2)
-80025b7c: 00052940 sll a1,a1,0x5
-80025b80: 00452821 addu a1,v0,a1
-80025b84: 02802021 move a0,s4
-80025b88: 24060020 li a2,32
-80025b8c: 0c00d75e jal 80035d78 <memcpy>
-80025b90: 24a50004 addiu a1,a1,4
- memcpy(ptrBlockData->Icons[i], ptrReferenceBlock->Icons[i], MEMCARD_ICON_SIZE);
-80025b94: 8e421c44 lw v0,7236(s2)
-80025b98: 001129c0 sll a1,s1,0x7
-80025b9c: 00452821 addu a1,v0,a1
-80025ba0: 02602021 move a0,s3
-80025ba4: 24060080 li a2,128
-80025ba8: 24a50024 addiu a1,a1,36
-80025bac: 0c00d75e jal 80035d78 <memcpy>
-80025bb0: 26310001 addiu s1,s1,1
-80025bb4: 26940020 addiu s4,s4,32
- return false;
- }
-
- ptrBlockData->IconNumber = ptrReferenceBlock->IconNumber;
-
- for(i = 0; i < MEMCARD_NUMBER_OF_ICONS; i++)
-80025bb8: 1635ffee bne s1,s5,80025b74 <MemCardGetBlockInfo+0x320>
-80025bbc: 26730080 addiu s3,s3,128
- {
- memcpy(ptrBlockData->CLUT[i], ptrReferenceBlock->CLUT[i], MEMCARD_CLUT_SIZE);
- memcpy(ptrBlockData->Icons[i], ptrReferenceBlock->Icons[i], MEMCARD_ICON_SIZE);
- }
-
- if(ptrBlockData->BlockCount == LAST_BLOCK)
-80025bc0: 8e020020 lw v0,32(s0)
-80025bc4: 00000000 nop
-80025bc8: 14510023 bne v0,s1,80025c58 <MemCardGetBlockInfo+0x404>
-80025bcc: 3c028007 lui v0,0x8007
- {
- // Dereference pointer
- ptrReferenceBlock = NULL;
-80025bd0: 10000021 b 80025c58 <MemCardGetBlockInfo+0x404>
-80025bd4: ac401c44 sw zero,7236(v0)
- ptrReferenceBlock = ptrBlockData;
-
- return true;
- }
-
- dprintf("Unknown error from MemCardGetIconFrameInfo()!\n");
-80025bd8: 1000ff8a b 80025a04 <MemCardGetBlockInfo+0x1b0>
-80025bdc: 24840cb4 addiu a0,a0,3252
- return true;
-}
-
-bool MemCardGetIconFrameInfo(TYPE_BLOCK_DATA * ptrBlockData)
-{
- int initial_sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT;
-80025be0: 8e150004 lw s5,4(s0)
- case FIRST_OR_ONLY_BLOCK:
-
- // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only)
- for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++)
- {
- dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber);
-80025be4: 3c148004 lui s4,0x8004
- buffer_contents = 0;
- sector = initial_sector + i;
- memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE * sizeof(uint8_t) );
-80025be8: 26315e20 addiu s1,s1,24096
- return true;
-}
-
-bool MemCardGetIconFrameInfo(TYPE_BLOCK_DATA * ptrBlockData)
-{
- int initial_sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT;
-80025bec: 0015a980 sll s5,s5,0x6
-80025bf0: 02009821 move s3,s0
- case FIRST_OR_ONLY_BLOCK:
-
- // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only)
- for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++)
- {
- dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber);
-80025bf4: 26940c54 addiu s4,s4,3156
- {
- dprintf("Could not read memory sector!\n");
- return false;
- }
-
- memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE);
-80025bf8: 0220b021 move s6,s1
-
- return true;
- case FIRST_OR_ONLY_BLOCK:
-
- // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only)
- for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++)
-80025bfc: 92060008 lbu a2,8(s0)
-80025c00: 00000000 nop
-80025c04: 00d2102b sltu v0,a2,s2
-80025c08: 14400011 bnez v0,80025c50 <MemCardGetBlockInfo+0x3fc>
-80025c0c: 02402821 move a1,s2
- {
- dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber);
-80025c10: 0c00ed8f jal 8003b63c <printf>
-80025c14: 02802021 move a0,s4
- buffer_contents = 0;
- sector = initial_sector + i;
- memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE * sizeof(uint8_t) );
-80025c18: 00002821 move a1,zero
-80025c1c: 02202021 move a0,s1
-80025c20: 0c00d7ab jal 80035eac <memset>
-80025c24: 24060080 li a2,128
-
- if(MemCardReadSector(ptrBlockData, sector) == false)
-80025c28: 02b22821 addu a1,s5,s2
-80025c2c: 0c00947d jal 800251f4 <MemCardReadSector>
-80025c30: 02002021 move a0,s0
-80025c34: 1440ffb4 bnez v0,80025b08 <MemCardGetBlockInfo+0x2b4>
-80025c38: 24060080 li a2,128
- {
- dprintf("Could not read memory sector!\n");
-80025c3c: 3c048004 lui a0,0x8004
-80025c40: 1000ff70 b 80025a04 <MemCardGetBlockInfo+0x1b0>
-80025c44: 24840c68 addiu a0,a0,3176
-
- return true;
- case FIRST_OR_ONLY_BLOCK:
-
- // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only)
- for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++)
-80025c48: 1000ffec b 80025bfc <MemCardGetBlockInfo+0x3a8>
-80025c4c: 26520001 addiu s2,s2,1
- return false;
- }
- }
-
- // Use current block as reference if file contains more than one block.
- ptrReferenceBlock = ptrBlockData;
-80025c50: 3c028007 lui v0,0x8007
-80025c54: ac501c44 sw s0,7236(v0)
- }
-
- // We will not get any block data information, we are only interested
- // in basic info.
-
- dprintf("MemCardUploadToGPU...\n");
-80025c58: 3c048004 lui a0,0x8004
-80025c5c: 0c00ed8f jal 8003b63c <printf>
-80025c60: 24840d00 addiu a0,a0,3328
- {
- return false;
- }
-
- return true;
-}
-80025c64: 8fbf002c lw ra,44(sp)
-80025c68: 8fb60028 lw s6,40(sp)
-80025c6c: 8fb50024 lw s5,36(sp)
-80025c70: 8fb40020 lw s4,32(sp)
-80025c74: 8fb3001c lw s3,28(sp)
-80025c78: 8fb20018 lw s2,24(sp)
-80025c7c: 8fb10014 lw s1,20(sp)
- // We will not get any block data information, we are only interested
- // in basic info.
-
- dprintf("MemCardUploadToGPU...\n");
-
- if(MemCardUploadToGPU(ptrBlockData) == false)
-80025c80: 02002021 move a0,s0
- {
- return false;
- }
-
- return true;
-}
-80025c84: 8fb00010 lw s0,16(sp)
- // We will not get any block data information, we are only interested
- // in basic info.
-
- dprintf("MemCardUploadToGPU...\n");
-
- if(MemCardUploadToGPU(ptrBlockData) == false)
-80025c88: 0800956f j 800255bc <MemCardUploadToGPU>
-80025c8c: 27bd0030 addiu sp,sp,48
- {
- return false;
- }
-
- return true;
-}
-80025c90: 8fbf002c lw ra,44(sp)
-80025c94: 02601021 move v0,s3
-80025c98: 8fb60028 lw s6,40(sp)
-80025c9c: 8fb50024 lw s5,36(sp)
-80025ca0: 8fb40020 lw s4,32(sp)
-80025ca4: 8fb3001c lw s3,28(sp)
-80025ca8: 8fb20018 lw s2,24(sp)
-80025cac: 8fb10014 lw s1,20(sp)
-80025cb0: 8fb00010 lw s0,16(sp)
-80025cb4: 03e00008 jr ra
-80025cb8: 27bd0030 addiu sp,sp,48
-
-80025cbc <MemCardGetAllData>:
-
- return true;
-}
-
-bool MemCardGetAllData(void)
-{
-80025cbc: 27bdffe8 addiu sp,sp,-24
-80025cc0: afbf0014 sw ra,20(sp)
- uint8_t i;
- uint8_t j;
-
- PadClearData();
-80025cc4: 0c009b84 jal 80026e10 <PadClearData>
-80025cc8: 00000000 nop
-
- CurrentReadBlock = 0;
-80025ccc: 3c028007 lui v0,0x8007
-80025cd0: a0401c4a sb zero,7242(v0)
-
- TotalBlocks = MEMCARD_BLOCKS_PER_CARD * MEMCARD_NUMBER_OF_SLOTS;
-80025cd4: 2403001e li v1,30
-80025cd8: 3c028007 lui v0,0x8007
-80025cdc: a0431c4b sb v1,7243(v0)
-
- SmallFont.spr.r = 0;
- SmallFont.spr.g = 0;
- SmallFont.spr.b = 0;
-
- GfxSaveDisplayData(&SecondDisplay);
-80025ce0: 3c048004 lui a0,0x8004
-
- CurrentReadBlock = 0;
-
- TotalBlocks = MEMCARD_BLOCKS_PER_CARD * MEMCARD_NUMBER_OF_SLOTS;
-
- SmallFont.spr.r = 0;
-80025ce4: 3c028007 lui v0,0x8007
-80025ce8: 24428d38 addiu v0,v0,-29384
- SmallFont.spr.g = 0;
- SmallFont.spr.b = 0;
-
- GfxSaveDisplayData(&SecondDisplay);
-80025cec: 24845de8 addiu a0,a0,24040
-
- CurrentReadBlock = 0;
-
- TotalBlocks = MEMCARD_BLOCKS_PER_CARD * MEMCARD_NUMBER_OF_SLOTS;
-
- SmallFont.spr.r = 0;
-80025cf0: a040000e sb zero,14(v0)
- SmallFont.spr.g = 0;
-80025cf4: a040000f sb zero,15(v0)
- SmallFont.spr.b = 0;
-
- GfxSaveDisplayData(&SecondDisplay);
-80025cf8: 0c009090 jal 80024240 <GfxSaveDisplayData>
-80025cfc: a0400010 sb zero,16(v0)
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-80025d00: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-80025d04: 24040080 li a0,128
-
- // ISR_MemCardDataHandling draws a rectangle on top to show
- // memory card loading progress.
-
- SetVBlankHandler(&ISR_MemCardDataHandling);
-80025d08: 3c048002 lui a0,0x8002
-80025d0c: 0c00d35e jal 80034d78 <SetVBlankHandler>
-80025d10: 248452dc addiu a0,a0,21212
-80025d14: 1000ffff b 80025d14 <MemCardGetAllData+0x58>
-80025d18: 00000000 nop
-
-80025d1c <MemCardHandler>:
-
- return true;
-}
-
-void MemCardHandler(void)
-{
-80025d1c: 27bdffe8 addiu sp,sp,-24
-80025d20: afbf0014 sw ra,20(sp)
-
-void MemCardIconIndexHandler(void)
-{
- static uint8_t iconTimer = 0;
-
- if(System100msTick() == true)
-80025d24: 0c009fba jal 80027ee8 <System100msTick>
-80025d28: 00000000 nop
-80025d2c: 10400016 beqz v0,80025d88 <MemCardHandler+0x6c>
-80025d30: 3c038007 lui v1,0x8007
- {
- if(++iconTimer >= MEMCARD_ICON_INDEX_TIME)
-80025d34: 90621c40 lbu v0,7232(v1)
-80025d38: 00000000 nop
-80025d3c: 24420001 addiu v0,v0,1
-80025d40: 304200ff andi v0,v0,0xff
-80025d44: 2c440004 sltiu a0,v0,4
-80025d48: 10800003 beqz a0,80025d58 <MemCardHandler+0x3c>
-80025d4c: 00000000 nop
-80025d50: 1000000d b 80025d88 <MemCardHandler+0x6c>
-80025d54: a0621c40 sb v0,7232(v1)
- {
- iconTimer = 0;
-80025d58: a0601c40 sb zero,7232(v1)
-
- if(++IconIndex >= MEMCARD_NUMBER_OF_ICONS)
-80025d5c: 3c038007 lui v1,0x8007
-80025d60: 90621c54 lbu v0,7252(v1)
-80025d64: 00000000 nop
-80025d68: 24420001 addiu v0,v0,1
-80025d6c: 304200ff andi v0,v0,0xff
-80025d70: 2c440003 sltiu a0,v0,3
-80025d74: 10800003 beqz a0,80025d84 <MemCardHandler+0x68>
-80025d78: 00000000 nop
-80025d7c: 10000002 b 80025d88 <MemCardHandler+0x6c>
-80025d80: a0621c54 sb v0,7252(v1)
- {
- IconIndex = 0;
-80025d84: a0601c54 sb zero,7252(v1)
-}
-
-void MemCardHandler(void)
-{
- MemCardIconIndexHandler();
-}
-80025d88: 8fbf0014 lw ra,20(sp)
-80025d8c: 00000000 nop
-80025d90: 03e00008 jr ra
-80025d94: 27bd0018 addiu sp,sp,24
-
-80025d98 <MemCardDrawIcon>:
- // Auxiliar variable to keep original data
- short orig_u[4];
- short orig_clut_x;
- static bool first_access = true;
-
- if(ptrBlockData->BlockCount == EMPTY_BLOCK)
-80025d98: 8c820020 lw v0,32(a0)
-80025d9c: 00000000 nop
-80025da0: 1040007b beqz v0,80025f90 <MemCardDrawIcon+0x1f8>
-80025da4: 00052c00 sll a1,a1,0x10
-80025da8: 00052c03 sra a1,a1,0x10
-80025dac: 00063400 sll a2,a2,0x10
- }
- }
-}
-
-void MemCardDrawIcon(TYPE_BLOCK_DATA * ptrBlockData, short x, short y)
-{
-80025db0: 27bdffc8 addiu sp,sp,-56
-80025db4: 00063403 sra a2,a2,0x10
- {
- return;
- }
-
- ptrBlockData->IconTPoly.x[0] = x;
- ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W;
-80025db8: 24a20010 addiu v0,a1,16
-80025dbc: 00021400 sll v0,v0,0x10
- }
- }
-}
-
-void MemCardDrawIcon(TYPE_BLOCK_DATA * ptrBlockData, short x, short y)
-{
-80025dc0: afb10020 sw s1,32(sp)
-80025dc4: afbf0034 sw ra,52(sp)
-80025dc8: afb50030 sw s5,48(sp)
-80025dcc: afb4002c sw s4,44(sp)
-80025dd0: afb30028 sw s3,40(sp)
-80025dd4: afb20024 sw s2,36(sp)
-80025dd8: afb0001c sw s0,28(sp)
- ptrBlockData->IconTPoly.x[0] = x;
- ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W;
- ptrBlockData->IconTPoly.x[2] = x;
- ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1];
-
- ptrBlockData->IconTPoly.y[0] = y;
-80025ddc: a4860210 sh a2,528(a0)
- ptrBlockData->IconTPoly.y[1] = ptrBlockData->IconTPoly.y[0];
-80025de0: a4860212 sh a2,530(a0)
- ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H;
-80025de4: 24c60010 addiu a2,a2,16
- {
- return;
- }
-
- ptrBlockData->IconTPoly.x[0] = x;
- ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W;
-80025de8: 00021403 sra v0,v0,0x10
- ptrBlockData->IconTPoly.x[2] = x;
- ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1];
-
- ptrBlockData->IconTPoly.y[0] = y;
- ptrBlockData->IconTPoly.y[1] = ptrBlockData->IconTPoly.y[0];
- ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H;
-80025dec: 00063400 sll a2,a2,0x10
-80025df0: 00063403 sra a2,a2,0x10
- {
- return;
- }
-
- ptrBlockData->IconTPoly.x[0] = x;
- ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W;
-80025df4: a482020a sh v0,522(a0)
- ptrBlockData->IconTPoly.x[2] = x;
- ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1];
-80025df8: a482020e sh v0,526(a0)
- orig_u[i] = ptrBlockData->IconTPoly.u[i];
- }
-
- orig_clut_x = ptrBlockData->IconTPoly.cx;
-
- if(ptrBlockData->IconNumber >= IconIndex)
-80025dfc: 3c028007 lui v0,0x8007
- ptrBlockData->IconTPoly.x[2] = x;
- ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1];
-
- ptrBlockData->IconTPoly.y[0] = y;
- ptrBlockData->IconTPoly.y[1] = ptrBlockData->IconTPoly.y[0];
- ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H;
-80025e00: a4860214 sh a2,532(a0)
- ptrBlockData->IconTPoly.y[3] = ptrBlockData->IconTPoly.y[2];
-80025e04: a4860216 sh a2,534(a0)
- orig_u[i] = ptrBlockData->IconTPoly.u[i];
- }
-
- orig_clut_x = ptrBlockData->IconTPoly.cx;
-
- if(ptrBlockData->IconNumber >= IconIndex)
-80025e08: 90461c54 lbu a2,7252(v0)
-80025e0c: 90820008 lbu v0,8(a0)
- if(ptrBlockData->BlockCount == EMPTY_BLOCK)
- {
- return;
- }
-
- ptrBlockData->IconTPoly.x[0] = x;
-80025e10: a4850208 sh a1,520(a0)
- orig_u[i] = ptrBlockData->IconTPoly.u[i];
- }
-
- orig_clut_x = ptrBlockData->IconTPoly.cx;
-
- if(ptrBlockData->IconNumber >= IconIndex)
-80025e14: 0046102b sltu v0,v0,a2
- return;
- }
-
- ptrBlockData->IconTPoly.x[0] = x;
- ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W;
- ptrBlockData->IconTPoly.x[2] = x;
-80025e18: a485020c sh a1,524(a0)
- ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H;
- ptrBlockData->IconTPoly.y[3] = ptrBlockData->IconTPoly.y[2];
-
- for(i = 0; i < 4; i++)
- {
- orig_u[i] = ptrBlockData->IconTPoly.u[i];
-80025e1c: 90920221 lbu s2,545(a0)
-80025e20: 90950222 lbu s5,546(a0)
-80025e24: 90940223 lbu s4,547(a0)
-80025e28: 90930224 lbu s3,548(a0)
- }
-
- orig_clut_x = ptrBlockData->IconTPoly.cx;
-80025e2c: 8491021c lh s1,540(a0)
-
- if(ptrBlockData->IconNumber >= IconIndex)
-80025e30: 1440000d bnez v0,80025e68 <MemCardDrawIcon+0xd0>
-80025e34: 3c028004 lui v0,0x8004
- {
- ptrBlockData->IconTPoly.u[0] += MEMCARD_BLOCK_IMAGE_W * IconIndex;
-80025e38: 00061900 sll v1,a2,0x4
-80025e3c: 02431021 addu v0,s2,v1
-80025e40: 304200ff andi v0,v0,0xff
- ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + MEMCARD_BLOCK_IMAGE_W;
-80025e44: 24450010 addiu a1,v0,16
-80025e48: 30a500ff andi a1,a1,0xff
- ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0];
- ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1];
-
- ptrBlockData->IconTPoly.cx += IconIndex * MEMCARD_BLOCK_CLUT_W;
-80025e4c: 00711821 addu v1,v1,s1
-
- orig_clut_x = ptrBlockData->IconTPoly.cx;
-
- if(ptrBlockData->IconNumber >= IconIndex)
- {
- ptrBlockData->IconTPoly.u[0] += MEMCARD_BLOCK_IMAGE_W * IconIndex;
-80025e50: a0820221 sb v0,545(a0)
- ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + MEMCARD_BLOCK_IMAGE_W;
-80025e54: a0850222 sb a1,546(a0)
- ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0];
-80025e58: a0820223 sb v0,547(a0)
- ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1];
-80025e5c: a0850224 sb a1,548(a0)
-
- ptrBlockData->IconTPoly.cx += IconIndex * MEMCARD_BLOCK_CLUT_W;
-80025e60: a483021c sh v1,540(a0)
- }
-
- if(first_access == true)
-80025e64: 3c028004 lui v0,0x8004
-80025e68: 904314e8 lbu v1,5352(v0)
-80025e6c: 00000000 nop
-80025e70: 10600038 beqz v1,80025f54 <MemCardDrawIcon+0x1bc>
-80025e74: 00808021 move s0,a0
- {
- if(IconIndex == 0)
-80025e78: 14c00036 bnez a2,80025f54 <MemCardDrawIcon+0x1bc>
-80025e7c: 3c048004 lui a0,0x8004
- {
- first_access = false;
-
- dprintf("Icon index: %d\n",IconIndex);
-80025e80: 00002821 move a1,zero
-80025e84: 24840d18 addiu a0,a0,3352
-80025e88: 0c00ed8f jal 8003b63c <printf>
-80025e8c: a04014e8 sb zero,5352(v0)
-
- dprintf("\tU = {%d,%d,%d,%d}\n",
-80025e90: 92020224 lbu v0,548(s0)
-80025e94: 92070223 lbu a3,547(s0)
-80025e98: 92060222 lbu a2,546(s0)
-80025e9c: 92050221 lbu a1,545(s0)
-80025ea0: 3c048004 lui a0,0x8004
-80025ea4: 24840d28 addiu a0,a0,3368
-80025ea8: 0c00ed8f jal 8003b63c <printf>
-80025eac: afa20010 sw v0,16(sp)
- ptrBlockData->IconTPoly.u[1],
- ptrBlockData->IconTPoly.u[2],
- ptrBlockData->IconTPoly.u[3]);
-
-
- dprintf("\tV = {%d,%d,%d,%d}\n",
-80025eb0: 92020228 lbu v0,552(s0)
-80025eb4: 92070227 lbu a3,551(s0)
-80025eb8: 92060226 lbu a2,550(s0)
-80025ebc: 92050225 lbu a1,549(s0)
-80025ec0: 3c048004 lui a0,0x8004
-80025ec4: 24840d3c addiu a0,a0,3388
-80025ec8: 0c00ed8f jal 8003b63c <printf>
-80025ecc: afa20010 sw v0,16(sp)
- ptrBlockData->IconTPoly.v[0],
- ptrBlockData->IconTPoly.v[1],
- ptrBlockData->IconTPoly.v[2],
- ptrBlockData->IconTPoly.v[3]);
-
- dprintf("\tBlock number: %d\n",ptrBlockData->Block);
-80025ed0: 8e050004 lw a1,4(s0)
-80025ed4: 3c048004 lui a0,0x8004
-80025ed8: 0c00ed8f jal 8003b63c <printf>
-80025edc: 24840d50 addiu a0,a0,3408
-
- dprintf("\tBlock count: %d\n",ptrBlockData->BlockCount);
-80025ee0: 8e050020 lw a1,32(s0)
-80025ee4: 3c048004 lui a0,0x8004
-80025ee8: 0c00ed8f jal 8003b63c <printf>
-80025eec: 24840d64 addiu a0,a0,3428
-
- dprintf("\tX = {%d,%d,%d,%d}\n",
-80025ef0: 8602020e lh v0,526(s0)
-80025ef4: 8607020c lh a3,524(s0)
-80025ef8: 8606020a lh a2,522(s0)
-80025efc: 86050208 lh a1,520(s0)
-80025f00: 3c048004 lui a0,0x8004
-80025f04: 24840d78 addiu a0,a0,3448
-80025f08: 0c00ed8f jal 8003b63c <printf>
-80025f0c: afa20010 sw v0,16(sp)
- ptrBlockData->IconTPoly.x[0],
- ptrBlockData->IconTPoly.x[1],
- ptrBlockData->IconTPoly.x[2],
- ptrBlockData->IconTPoly.x[3]);
-
- dprintf("\tY = {%d,%d,%d,%d}\n",
-80025f10: 86020216 lh v0,534(s0)
-80025f14: 86060212 lh a2,530(s0)
-80025f18: 86070214 lh a3,532(s0)
-80025f1c: 86050210 lh a1,528(s0)
-80025f20: 3c048004 lui a0,0x8004
-80025f24: 24840d8c addiu a0,a0,3468
-80025f28: 0c00ed8f jal 8003b63c <printf>
-80025f2c: afa20010 sw v0,16(sp)
- ptrBlockData->IconTPoly.y[0],
- ptrBlockData->IconTPoly.y[1],
- ptrBlockData->IconTPoly.y[2],
- ptrBlockData->IconTPoly.y[3]);
-
- dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage);
-80025f30: 92050220 lbu a1,544(s0)
-80025f34: 3c048004 lui a0,0x8004
-80025f38: 0c00ed8f jal 8003b63c <printf>
-80025f3c: 24840ad8 addiu a0,a0,2776
- dprintf("\tCLUT = {%d, %d}\n",
-80025f40: 3c048004 lui a0,0x8004
-80025f44: 8606021e lh a2,542(s0)
-80025f48: 8605021c lh a1,540(s0)
-80025f4c: 0c00ed8f jal 8003b63c <printf>
-80025f50: 24840da0 addiu a0,a0,3488
- ptrBlockData->IconTPoly.cx,
- ptrBlockData->IconTPoly.cy);
- }
- }
-
- GsSortTPoly4(&ptrBlockData->IconTPoly);
-80025f54: 0c00b7fe jal 8002dff8 <GsSortTPoly4>
-80025f58: 26040208 addiu a0,s0,520
-
- for(i = 0; i < 4; i++)
- {
- ptrBlockData->IconTPoly.u[i] = orig_u[i]; // Restore data
-80025f5c: a2120221 sb s2,545(s0)
-80025f60: a2150222 sb s5,546(s0)
-80025f64: a2140223 sb s4,547(s0)
-80025f68: a2130224 sb s3,548(s0)
- }
-
- ptrBlockData->IconTPoly.cx = orig_clut_x;
-80025f6c: a611021c sh s1,540(s0)
-}
-80025f70: 8fbf0034 lw ra,52(sp)
-80025f74: 8fb50030 lw s5,48(sp)
-80025f78: 8fb4002c lw s4,44(sp)
-80025f7c: 8fb30028 lw s3,40(sp)
-80025f80: 8fb20024 lw s2,36(sp)
-80025f84: 8fb10020 lw s1,32(sp)
-80025f88: 8fb0001c lw s0,28(sp)
-80025f8c: 27bd0038 addiu sp,sp,56
-80025f90: 03e00008 jr ra
-80025f94: 00000000 nop
-
-80025f98 <MemCardShowMap>:
-
-TYPE_BLOCK_DATA * MemCardShowMap(void)
-{
-80025f98: 27bdffe8 addiu sp,sp,-24
-80025f9c: afbf0014 sw ra,20(sp)
- unsigned char orig_r;
- unsigned char orig_g;
- unsigned char orig_b;
- GsRectangle MemCardMapDialog;
-
- if(MemCardGetAllData() == false)
-80025fa0: 0c00972f jal 80025cbc <MemCardGetAllData>
-80025fa4: 00000000 nop
-
-80025fa8 <MemCardSaveData>:
- uint32_t sz;
- int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME;
-
- // Always check whether current block is empty or not
-
- if(ptrBlockData->BlockCount != EMPTY_BLOCK)
-80025fa8: 8c820020 lw v0,32(a0)
-
- return NULL;
-}
-
-bool MemCardSaveData(TYPE_BLOCK_DATA * ptrBlockData)
-{
-80025fac: 27bdffd8 addiu sp,sp,-40
-80025fb0: afbf0024 sw ra,36(sp)
-80025fb4: afb30020 sw s3,32(sp)
-80025fb8: afb2001c sw s2,28(sp)
-80025fbc: afb10018 sw s1,24(sp)
- uint32_t sz;
- int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME;
-
- // Always check whether current block is empty or not
-
- if(ptrBlockData->BlockCount != EMPTY_BLOCK)
-80025fc0: 1040000d beqz v0,80025ff8 <MemCardSaveData+0x50>
-80025fc4: afb00014 sw s0,20(sp)
- {
- if(strncmp((char*)ptrBlockData->FileName, MEMCARD_GAME_FILENAME, MEMCARD_FILENAME_SIZE) != 0)
-80025fc8: 3c058004 lui a1,0x8004
-80025fcc: 00808821 move s1,a0
-
-bool MemCardSaveData(TYPE_BLOCK_DATA * ptrBlockData)
-{
- uint32_t i;
- uint32_t sz;
- int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME;
-80025fd0: 8c920004 lw s2,4(a0)
-
- // Always check whether current block is empty or not
-
- if(ptrBlockData->BlockCount != EMPTY_BLOCK)
- {
- if(strncmp((char*)ptrBlockData->FileName, MEMCARD_GAME_FILENAME, MEMCARD_FILENAME_SIZE) != 0)
-80025fd4: 24060015 li a2,21
-80025fd8: 24a50db4 addiu a1,a1,3508
-80025fdc: 0c00d9dd jal 80036774 <strncmp>
-80025fe0: 24840009 addiu a0,a0,9
-80025fe4: 1040000a beqz v0,80026010 <MemCardSaveData+0x68>
-80025fe8: 00129180 sll s2,s2,0x6
- {
- // Only our own blocks can be overwritten. NEVER overwrite other game blocks!
- dprintf("I cannot erase blocks from other games!\n");
-80025fec: 3c048004 lui a0,0x8004
-80025ff0: 10000003 b 80026000 <MemCardSaveData+0x58>
-80025ff4: 24840dc8 addiu a0,a0,3528
- return false;
- }
- }
- else if(ptrBlockData->BlockCount != FIRST_OR_ONLY_BLOCK)
- {
- dprintf("Please select first block of block array.\n");
-80025ff8: 3c048004 lui a0,0x8004
-80025ffc: 24840df4 addiu a0,a0,3572
-80026000: 0c00ed8f jal 8003b63c <printf>
-80026004: 00000000 nop
- return false;
-80026008: 1000000d b 80026040 <MemCardSaveData+0x98>
-8002600c: 00001021 move v0,zero
-
-bool MemCardSaveData(TYPE_BLOCK_DATA * ptrBlockData)
-{
- uint32_t i;
- uint32_t sz;
- int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME;
-80026010: 26520004 addiu s2,s2,4
-80026014: 00008021 move s0,zero
-
- // After all these checks, now we can save data!
-
- sz = MEMCARD_FIRST_OR_LAST_DATA_SIZE;
-
- for(i = 0; i < sz; i++)
-80026018: 24131e00 li s3,7680
- {
- McWriteSector(ptrBlockData->Slot, sector + i, &ptrBlockData->Data[i << 7 /* 128 */]);
-8002601c: 8e260204 lw a2,516(s1)
-80026020: 001011c0 sll v0,s0,0x7
-80026024: 8e240000 lw a0,0(s1)
-80026028: 02502821 addu a1,s2,s0
-8002602c: 00c23021 addu a2,a2,v0
-80026030: 0c00caf7 jal 80032bdc <McWriteSector>
-80026034: 26100001 addiu s0,s0,1
-
- // After all these checks, now we can save data!
-
- sz = MEMCARD_FIRST_OR_LAST_DATA_SIZE;
-
- for(i = 0; i < sz; i++)
-80026038: 1613fff8 bne s0,s3,8002601c <MemCardSaveData+0x74>
-8002603c: 24020001 li v0,1
- {
- McWriteSector(ptrBlockData->Slot, sector + i, &ptrBlockData->Data[i << 7 /* 128 */]);
- }
-
- return true;
-}
-80026040: 8fbf0024 lw ra,36(sp)
-80026044: 8fb30020 lw s3,32(sp)
-80026048: 8fb2001c lw s2,28(sp)
-8002604c: 8fb10018 lw s1,24(sp)
-80026050: 8fb00014 lw s0,20(sp)
-80026054: 03e00008 jr ra
-80026058: 27bd0028 addiu sp,sp,40
-
-8002605c <PlayMenu>:
-static MainMenuLevel menuLevel;
-static MMBtn_Index MainMenuMinimumBtn;
-
-void PlayMenu(void)
-{
- menuLevel = ONE_TWO_PLAYERS_LEVEL;
-8002605c: 24030001 li v1,1
-80026060: 3c028007 lui v0,0x8007
-80026064: ac431c60 sw v1,7264(v0)
- MainMenuMinimumBtn = ONE_PLAYER_BUTTON_INDEX;
-80026068: 24040002 li a0,2
-8002606c: 3c028007 lui v0,0x8007
-80026070: ac441c5c sw a0,7260(v0)
-
- MainMenuBtn[PLAY_BUTTON_INDEX].selected = false;
-80026074: 3c028004 lui v0,0x8004
-80026078: 24425ea0 addiu v0,v0,24224
-8002607c: a0400012 sb zero,18(v0)
- MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false;
-80026080: a0400013 sb zero,19(v0)
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
-80026084: a4400008 sh zero,8(v0)
-
- MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false;
-80026088: a0400026 sb zero,38(v0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false;
-8002608c: a0400027 sb zero,39(v0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
-80026090: a440001c sh zero,28(v0)
-
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = true;
-80026094: a043003a sb v1,58(v0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false;
-80026098: a040003b sb zero,59(v0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
-8002609c: a4400030 sh zero,48(v0)
-
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false;
-800260a0: a040004e sb zero,78(v0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false;
-800260a4: a040004f sb zero,79(v0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
-800260a8: 03e00008 jr ra
-800260ac: a4400044 sh zero,68(v0)
-
-800260b0 <MenuTestCheat>:
- }
-
-}
-
-void MenuTestCheat(void)
-{
-800260b0: 27bdffe8 addiu sp,sp,-24
-800260b4: afbf0014 sw ra,20(sp)
- if(MemCardShowMap() == false)
-800260b8: 0c0097e6 jal 80025f98 <MemCardShowMap>
-800260bc: 00000000 nop
-800260c0: 14400005 bnez v0,800260d8 <MenuTestCheat+0x28>
-800260c4: 3c048004 lui a0,0x8004
- {
- dprintf("MemCardShowMap() failed!\n");
- return;
- }
-}
-800260c8: 8fbf0014 lw ra,20(sp)
-
-void MenuTestCheat(void)
-{
- if(MemCardShowMap() == false)
- {
- dprintf("MemCardShowMap() failed!\n");
-800260cc: 24840e20 addiu a0,a0,3616
-800260d0: 0800ed8f j 8003b63c <printf>
-800260d4: 27bd0018 addiu sp,sp,24
- return;
- }
-}
-800260d8: 8fbf0014 lw ra,20(sp)
-800260dc: 00000000 nop
-800260e0: 03e00008 jr ra
-800260e4: 27bd0018 addiu sp,sp,24
-
-800260e8 <OptionsMenu>:
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
-}
-
-void OptionsMenu(void)
-{
- dprintf("OptionsMenu(void)!\n");
-800260e8: 3c048004 lui a0,0x8004
-800260ec: 0800ed8f j 8003b63c <printf>
-800260f0: 24840e3c addiu a0,a0,3644
-
-800260f4 <TwoPlayerMenu>:
- EndAnimation();
- Game(false /* One Player Only */);
-}
-
-void TwoPlayerMenu(void)
-{
-800260f4: 27bdffe8 addiu sp,sp,-24
-800260f8: afbf0014 sw ra,20(sp)
- EndAnimation();
-800260fc: 0c00835d jal 80020d74 <EndAnimation>
-80026100: 00000000 nop
- Game(true /* Two players */);
-}
-80026104: 8fbf0014 lw ra,20(sp)
-}
-
-void TwoPlayerMenu(void)
-{
- EndAnimation();
- Game(true /* Two players */);
-80026108: 24040001 li a0,1
-8002610c: 080086c4 j 80021b10 <Game>
-80026110: 27bd0018 addiu sp,sp,24
-
-80026114 <OnePlayerMenu>:
-{
- dprintf("OptionsMenu(void)!\n");
-}
-
-void OnePlayerMenu(void)
-{
-80026114: 27bdffe8 addiu sp,sp,-24
-80026118: afbf0014 sw ra,20(sp)
- EndAnimation();
-8002611c: 0c00835d jal 80020d74 <EndAnimation>
-80026120: 00000000 nop
- Game(false /* One Player Only */);
-}
-80026124: 8fbf0014 lw ra,20(sp)
-}
-
-void OnePlayerMenu(void)
-{
- EndAnimation();
- Game(false /* One Player Only */);
-80026128: 00002021 move a0,zero
-8002612c: 080086c4 j 80021b10 <Game>
-80026130: 27bd0018 addiu sp,sp,24
-
-80026134 <MainMenuDrawButton>:
-
-}
-
-void MainMenuDrawButton(TYPE_MMBtn * btn)
-{
- MenuSpr.w = BUTTON_SIZE;
-80026134: 3c028004 lui v0,0x8004
-80026138: 24425f88 addiu v0,v0,24456
-8002613c: 24030040 li v1,64
-80026140: a4430006 sh v1,6(v0)
- MenuSpr.h = BUTTON_SIZE;
-80026144: a4430008 sh v1,8(v0)
-
- if(btn->timer < MAIN_MENU_BTN_ANI_SIZE)
-80026148: 84830008 lh v1,8(a0)
-
-
-}
-
-void MainMenuDrawButton(TYPE_MMBtn * btn)
-{
-8002614c: 00802821 move a1,a0
- MenuSpr.w = BUTTON_SIZE;
- MenuSpr.h = BUTTON_SIZE;
-
- if(btn->timer < MAIN_MENU_BTN_ANI_SIZE)
-80026150: 28660035 slti a2,v1,53
-80026154: 10c00003 beqz a2,80026164 <MainMenuDrawButton+0x30>
-80026158: 00402021 move a0,v0
- {
- btn->timer++;
-8002615c: 24630001 addiu v1,v1,1
-80026160: a4a30008 sh v1,8(a1)
- }
-
- if(btn->selected == true)
-80026164: 90a20012 lbu v0,18(a1)
-80026168: 00000000 nop
-8002616c: 10400007 beqz v0,8002618c <MainMenuDrawButton+0x58>
-80026170: 2402ff80 li v0,-128
- {
- if(btn->was_selected == false)
-80026174: 90a20013 lbu v0,19(a1)
-80026178: 00000000 nop
-8002617c: 14400002 bnez v0,80026188 <MainMenuDrawButton+0x54>
-80026180: 00000000 nop
- {
- btn->timer = 0;
-80026184: a4a00008 sh zero,8(a1)
-80026188: 2402ffc0 li v0,-64
- MenuSpr.g = SELECTED_BUTTON_LUMINANCE;
- MenuSpr.b = SELECTED_BUTTON_LUMINANCE;
- }
- else
- {
- MenuSpr.r = NORMAL_LUMINANCE;
-8002618c: a082000e sb v0,14(a0)
- MenuSpr.g = NORMAL_LUMINANCE;
-80026190: a082000f sb v0,15(a0)
- MenuSpr.b = NORMAL_LUMINANCE;
-80026194: a0820010 sb v0,16(a0)
- }
-
- MenuSpr.u = DEFAULT_BUTTON_U_OFFSET;
- MenuSpr.v = DEFAULT_BUTTON_V_OFFSET;
-80026198: 2402ff80 li v0,-128
- MenuSpr.r = NORMAL_LUMINANCE;
- MenuSpr.g = NORMAL_LUMINANCE;
- MenuSpr.b = NORMAL_LUMINANCE;
- }
-
- MenuSpr.u = DEFAULT_BUTTON_U_OFFSET;
-8002619c: a0800004 sb zero,4(a0)
- MenuSpr.v = DEFAULT_BUTTON_V_OFFSET;
-800261a0: a0820005 sb v0,5(a0)
-
- switch(btn->i)
-800261a4: 88a20011 lwl v0,17(a1)
-800261a8: 24060001 li a2,1
-800261ac: 98a2000e lwr v0,14(a1)
-800261b0: 00000000 nop
-800261b4: 10460016 beq v0,a2,80026210 <MainMenuDrawButton+0xdc>
-800261b8: 3c038004 lui v1,0x8004
-800261bc: 10400007 beqz v0,800261dc <MainMenuDrawButton+0xa8>
-800261c0: 24060002 li a2,2
-800261c4: 10460005 beq v0,a2,800261dc <MainMenuDrawButton+0xa8>
-800261c8: 24060003 li a2,3
-800261cc: 10460011 beq v0,a2,80026214 <MainMenuDrawButton+0xe0>
-800261d0: 240200e1 li v0,225
-800261d4: 03e00008 jr ra
-800261d8: 00000000 nop
-
- GsSortSprite(&MenuSpr);
- break;
-
- case ONE_PLAYER_BUTTON_INDEX:
- MenuSpr.x = MAIN_MENU_ONE_PLAYER_BUTTON_X;
-800261dc: 2406005c li a2,92
-800261e0: a4665f88 sh a2,24456(v1)
- MenuSpr.y = MAIN_MENU_ONE_PLAYER_BUTTON_Y - MainMenuBtnAni[btn->timer];
-800261e4: 84a20008 lh v0,8(a1)
-800261e8: 00000000 nop
-800261ec: 00021840 sll v1,v0,0x1
-800261f0: 3c028004 lui v0,0x8004
-800261f4: 2442147c addiu v0,v0,5244
-800261f8: 00621021 addu v0,v1,v0
-800261fc: 94420000 lhu v0,0(v0)
-80026200: 00000000 nop
-80026204: 00c23023 subu a2,a2,v0
-80026208: 1000000d b 80026240 <MainMenuDrawButton+0x10c>
-8002620c: a4860002 sh a2,2(a0)
-
- GsSortSprite(&MenuSpr);
- break;
-
- case TWO_PLAYER_BUTTON_INDEX:
- MenuSpr.x = MAIN_MENU_TWO_PLAYER_BUTTON_X;
-80026210: 240200e1 li v0,225
-80026214: a4625f88 sh v0,24456(v1)
- MenuSpr.y = MAIN_MENU_TWO_PLAYER_BUTTON_Y - MainMenuBtnAni[btn->timer];
-80026218: 84a20008 lh v0,8(a1)
-8002621c: 00000000 nop
-80026220: 00021840 sll v1,v0,0x1
-80026224: 3c028004 lui v0,0x8004
-80026228: 2442147c addiu v0,v0,5244
-8002622c: 00621021 addu v0,v1,v0
-80026230: 94430000 lhu v1,0(v0)
-80026234: 2402005c li v0,92
-80026238: 00431023 subu v0,v0,v1
-8002623c: a4820002 sh v0,2(a0)
- MenuSpr.u += btn->offset_u;
-80026240: 8ca20000 lw v0,0(a1)
-80026244: 00000000 nop
-80026248: a0820004 sb v0,4(a0)
- MenuSpr.v += btn->offset_v;
-8002624c: 8ca20004 lw v0,4(a1)
-80026250: 00000000 nop
-80026254: 2442ff80 addiu v0,v0,-128
-
- GsSortSprite(&MenuSpr);
-80026258: 0800b356 j 8002cd58 <GsSortSprite>
-8002625c: a0820005 sb v0,5(a0)
-
-80026260 <MainMenuInit>:
-}
-
-
-void MainMenuInit(void)
-{
- LoadMenu( MainMenuFiles,MainMenuDest,
-80026260: 3c058004 lui a1,0x8004
-80026264: 3c048004 lui a0,0x8004
- Game(true /* Two players */);
-}
-
-
-void MainMenuInit(void)
-{
-80026268: 27bdffa8 addiu sp,sp,-88
- LoadMenu( MainMenuFiles,MainMenuDest,
-8002626c: 2407000a li a3,10
-80026270: 2406000a li a2,10
-80026274: 24a514ec addiu a1,a1,5356
-80026278: 24841514 addiu a0,a0,5396
- Game(true /* Two players */);
-}
-
-
-void MainMenuInit(void)
-{
-8002627c: afbf0054 sw ra,84(sp)
- LoadMenu( MainMenuFiles,MainMenuDest,
-80026280: 0c0093c1 jal 80024f04 <LoadMenu>
-80026284: afb00050 sw s0,80(sp)
- sizeof(MainMenuFiles) / sizeof(char*) ,
- sizeof(MainMenuDest) / sizeof(void*) );
-
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET;
-80026288: 3c028004 lui v0,0x8004
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET;
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
- MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu;
-8002628c: 3c048002 lui a0,0x8002
- LoadMenu( MainMenuFiles,MainMenuDest,
- sizeof(MainMenuFiles) / sizeof(char*) ,
- sizeof(MainMenuDest) / sizeof(void*) );
-
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET;
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET;
-80026290: 24030040 li v1,64
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
- MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu;
-80026294: 2484605c addiu a0,a0,24668
-{
- LoadMenu( MainMenuFiles,MainMenuDest,
- sizeof(MainMenuFiles) / sizeof(char*) ,
- sizeof(MainMenuDest) / sizeof(void*) );
-
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET;
-80026298: ac405ea0 sw zero,24224(v0)
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET;
-8002629c: 24425ea0 addiu v0,v0,24224
-800262a0: ac430004 sw v1,4(v0)
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
-800262a4: a4400008 sh zero,8(v0)
- MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu;
-800262a8: a844000d swl a0,13(v0)
-800262ac: b844000a swr a0,10(v0)
- MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX;
-800262b0: a8400011 swl zero,17(v0)
-
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu;
-800262b4: 3c048002 lui a0,0x8002
-
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET;
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET;
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
- MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu;
- MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX;
-800262b8: b840000e swr zero,14(v0)
-
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu;
-800262bc: 248460e8 addiu a0,a0,24808
- MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET;
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
- MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu;
- MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX;
-
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET;
-800262c0: ac430014 sw v1,20(v0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET;
-800262c4: ac430018 sw v1,24(v0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
-800262c8: a440001c sh zero,28(v0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu;
-800262cc: a8440021 swl a0,33(v0)
-800262d0: b844001e swr a0,30(v0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].i = OPTIONS_BUTTON_INDEX;
-800262d4: 24040001 li a0,1
-800262d8: a8440025 swl a0,37(v0)
-800262dc: b8440022 swr a0,34(v0)
-
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_u = ONE_PLAYER_BUTTON_U_OFFSET;
-800262e0: 24040080 li a0,128
-800262e4: ac440028 sw a0,40(v0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu;
-800262e8: 3c048002 lui a0,0x8002
-800262ec: 24846114 addiu a0,a0,24852
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu;
- MainMenuBtn[OPTIONS_BUTTON_INDEX].i = OPTIONS_BUTTON_INDEX;
-
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_u = ONE_PLAYER_BUTTON_U_OFFSET;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET;
-800262f0: ac43002c sw v1,44(v0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
-800262f4: a4400030 sh zero,48(v0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu;
-800262f8: a8440035 swl a0,53(v0)
-800262fc: b8440032 swr a0,50(v0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].i = ONE_PLAYER_BUTTON_INDEX;
-80026300: 24040002 li a0,2
-80026304: a8440039 swl a0,57(v0)
-80026308: b8440036 swr a0,54(v0)
-
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_u = TWO_PLAYER_BUTTON_U_OFFSET;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_v = TWO_PLAYER_BUTTON_Y_OFFSET;
-8002630c: ac430040 sw v1,64(v0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu;
-80026310: 3c038002 lui v1,0x8002
-80026314: 246360f4 addiu v1,v1,24820
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu;
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].i = ONE_PLAYER_BUTTON_INDEX;
-
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_u = TWO_PLAYER_BUTTON_U_OFFSET;
-80026318: 240400c0 li a0,192
-8002631c: ac44003c sw a0,60(v0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_v = TWO_PLAYER_BUTTON_Y_OFFSET;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
-80026320: a4400044 sh zero,68(v0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu;
-80026324: a8430049 swl v1,73(v0)
-80026328: b8430046 swr v1,70(v0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX;
-8002632c: 24030003 li v1,3
-80026330: a843004d swl v1,77(v0)
-80026334: b843004a swr v1,74(v0)
-
- menuLevel = PLAY_OPTIONS_LEVEL;
-80026338: 3c028007 lui v0,0x8007
-8002633c: ac401c60 sw zero,7264(v0)
-
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
-
- TestCheat.Callback = &MenuTestCheat;
-80026340: 3c108004 lui s0,0x8004
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX;
-
- menuLevel = PLAY_OPTIONS_LEVEL;
-
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
-80026344: 3c028007 lui v0,0x8007
-
- TestCheat.Callback = &MenuTestCheat;
-80026348: 26105f14 addiu s0,s0,24340
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu;
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX;
-
- menuLevel = PLAY_OPTIONS_LEVEL;
-
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
-8002634c: ac401c5c sw zero,7260(v0)
-
- TestCheat.Callback = &MenuTestCheat;
-80026350: 3c028002 lui v0,0x8002
- memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE);
-80026354: 02002021 move a0,s0
-
- menuLevel = PLAY_OPTIONS_LEVEL;
-
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
-
- TestCheat.Callback = &MenuTestCheat;
-80026358: 244260b0 addiu v0,v0,24752
- memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE);
-8002635c: 24060010 li a2,16
-80026360: 00002821 move a1,zero
-80026364: 0c00d7ab jal 80035eac <memset>
-80026368: ae020020 sw v0,32(s0)
- //memcpy(myarray, (int [5]){a,b,c,d,e}, 5*sizeof(int));
-
- memcpy( TestCheat.Combination,
- (unsigned short[CHEAT_ARRAY_SIZE])
- { PAD_CIRCLE, PAD_CIRCLE, PAD_CROSS, PAD_TRIANGLE,
-8002636c: 3c058004 lui a1,0x8004
-80026370: 27a40030 addiu a0,sp,48
-80026374: 24060020 li a2,32
-80026378: 0c00d75e jal 80035d78 <memcpy>
-8002637c: 24a5f7ac addiu a1,a1,-2132
-
- TestCheat.Callback = &MenuTestCheat;
- memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE);
- //memcpy(myarray, (int [5]){a,b,c,d,e}, 5*sizeof(int));
-
- memcpy( TestCheat.Combination,
-80026380: 27a50030 addiu a1,sp,48
-80026384: 24060020 li a2,32
-80026388: 0c00d75e jal 80035d78 <memcpy>
-8002638c: 02002021 move a0,s0
- { PAD_CIRCLE, PAD_CIRCLE, PAD_CROSS, PAD_TRIANGLE,
- PAD_TRIANGLE, PAD_TRIANGLE, 0 , 0 ,
- 0, 0, 0, 0,
- 0, 0, 0, 0 } , sizeof(unsigned short) * CHEAT_ARRAY_SIZE);
-
- PadAddCheat(&TestCheat);
-80026390: 02002021 move a0,s0
-80026394: 0c009ba4 jal 80026e90 <PadAddCheat>
-80026398: 3c108004 lui s0,0x8004
-
- StackCheckCheat.Callback = &SystemPrintStackPointerAddress;
-8002639c: 26105ef0 addiu s0,s0,24304
-800263a0: 3c028003 lui v0,0x8003
- memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE);
-800263a4: 02002021 move a0,s0
- 0, 0, 0, 0,
- 0, 0, 0, 0 } , sizeof(unsigned short) * CHEAT_ARRAY_SIZE);
-
- PadAddCheat(&TestCheat);
-
- StackCheckCheat.Callback = &SystemPrintStackPointerAddress;
-800263a8: 24428490 addiu v0,v0,-31600
- memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE);
-800263ac: 24060010 li a2,16
-800263b0: 00002821 move a1,zero
-800263b4: 0c00d7ab jal 80035eac <memset>
-800263b8: ae020020 sw v0,32(s0)
-
- memcpy( StackCheckCheat.Combination,
- (unsigned short[CHEAT_ARRAY_SIZE])
- { PAD_TRIANGLE, PAD_TRIANGLE, PAD_CROSS, PAD_TRIANGLE,
-800263bc: 3c058004 lui a1,0x8004
-800263c0: 27a40010 addiu a0,sp,16
-800263c4: 24060020 li a2,32
-800263c8: 0c00d75e jal 80035d78 <memcpy>
-800263cc: 24a5f7cc addiu a1,a1,-2100
- PadAddCheat(&TestCheat);
-
- StackCheckCheat.Callback = &SystemPrintStackPointerAddress;
- memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE);
-
- memcpy( StackCheckCheat.Combination,
-800263d0: 27a50010 addiu a1,sp,16
-800263d4: 24060020 li a2,32
-800263d8: 0c00d75e jal 80035d78 <memcpy>
-800263dc: 02002021 move a0,s0
- { PAD_TRIANGLE, PAD_TRIANGLE, PAD_CROSS, PAD_TRIANGLE,
- PAD_L1, PAD_R1, 0 , 0 ,
- 0, 0, 0, 0,
- 0, 0, 0, 0 } , sizeof(unsigned short) * CHEAT_ARRAY_SIZE);
-
- PadAddCheat(&StackCheckCheat);
-800263e0: 0c009ba4 jal 80026e90 <PadAddCheat>
-800263e4: 02002021 move a0,s0
-
- LoadMenuEnd();
-800263e8: 0c0093ab jal 80024eac <LoadMenuEnd>
-800263ec: 00000000 nop
-}
-800263f0: 8fbf0054 lw ra,84(sp)
-800263f4: 8fb00050 lw s0,80(sp)
-800263f8: 03e00008 jr ra
-800263fc: 27bd0058 addiu sp,sp,88
-
-80026400 <MainMenu>:
-
-void MainMenu(void)
-{
-80026400: 27bdffc8 addiu sp,sp,-56
-80026404: afb3001c sw s3,28(sp)
- default:
- max_buttons = 0;
- break;
- }
-
- MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected;
-80026408: 3c138004 lui s3,0x8004
-
- LoadMenuEnd();
-}
-
-void MainMenu(void)
-{
-8002640c: afb40020 sw s4,32(sp)
- default:
- max_buttons = 0;
- break;
- }
-
- MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected;
-80026410: 26735ea0 addiu s3,s3,24224
-
- if( (PadOneKeyReleased(PAD_CROSS) == true)
- ||
- (PadOneKeyReleased(PAD_TRIANGLE) == true) )
- {
- SfxPlaySound(&AcceptSnd);
-80026414: 3c148004 lui s4,0x8004
-
- LoadMenuEnd();
-}
-
-void MainMenu(void)
-{
-80026418: afbf0034 sw ra,52(sp)
-8002641c: afb00010 sw s0,16(sp)
-80026420: afbe0030 sw s8,48(sp)
-80026424: afb7002c sw s7,44(sp)
-80026428: afb60028 sw s6,40(sp)
-8002642c: afb50024 sw s5,36(sp)
-80026430: afb20018 sw s2,24(sp)
-80026434: afb10014 sw s1,20(sp)
-
- MainMenuInit();
-80026438: 0c009898 jal 80026260 <MainMenuInit>
-8002643c: 02608021 move s0,s3
-
- #ifndef NO_INTRO
- PSXSDKIntro();
-80026440: 0c009d2e jal 800274b8 <PSXSDKIntro>
-80026444: 26945f38 addiu s4,s4,24376
-80026448: 3c118007 lui s1,0x8007
-{
- static uint8_t btn_selected = PLAY_BUTTON_INDEX;
- static uint8_t previous_btn_selected = 0;
- uint8_t max_buttons;
-
- if(PadOneAnyKeyPressed() == true)
-8002644c: 0c009a9a jal 80026a68 <PadOneAnyKeyPressed>
-80026450: 00000000 nop
-80026454: 10400007 beqz v0,80026474 <MainMenu+0x74>
-80026458: 00000000 nop
- {
- if(SystemIsRandSeedSet() == false)
-8002645c: 0c009f87 jal 80027e1c <SystemIsRandSeedSet>
-80026460: 00000000 nop
-80026464: 14400003 bnez v0,80026474 <MainMenu+0x74>
-80026468: 00000000 nop
- {
- SystemSetRandSeed();
-8002646c: 0c009f6d jal 80027db4 <SystemSetRandSeed>
-80026470: 00000000 nop
- }
- }
-
- if( (PadOneKeyReleased(PAD_CROSS) == true)
-80026474: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026478: 24040040 li a0,64
-8002647c: 10400005 beqz v0,80026494 <MainMenu+0x94>
-80026480: 00000000 nop
- ||
- (PadOneKeyReleased(PAD_TRIANGLE) == true) )
- {
- SfxPlaySound(&AcceptSnd);
-80026484: 0c009eeb jal 80027bac <SfxPlaySound>
-80026488: 02802021 move a0,s4
- }
-
- switch(menuLevel)
-8002648c: 10000006 b 800264a8 <MainMenu+0xa8>
-80026490: 3c128007 lui s2,0x8007
- }
- }
-
- if( (PadOneKeyReleased(PAD_CROSS) == true)
- ||
- (PadOneKeyReleased(PAD_TRIANGLE) == true) )
-80026494: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026498: 24040010 li a0,16
- SystemSetRandSeed();
- }
- }
-
- if( (PadOneKeyReleased(PAD_CROSS) == true)
- ||
-8002649c: 1440fff9 bnez v0,80026484 <MainMenu+0x84>
-800264a0: 00000000 nop
- (PadOneKeyReleased(PAD_TRIANGLE) == true) )
- {
- SfxPlaySound(&AcceptSnd);
- }
-
- switch(menuLevel)
-800264a4: 3c128007 lui s2,0x8007
-800264a8: 8e421c60 lw v0,7264(s2)
-800264ac: 3c158007 lui s5,0x8007
-800264b0: 1040000b beqz v0,800264e0 <MainMenu+0xe0>
-800264b4: 24160002 li s6,2
-800264b8: 24030001 li v1,1
-800264bc: 14430008 bne v0,v1,800264e0 <MainMenu+0xe0>
-800264c0: 0000b021 move s6,zero
- max_buttons = MAIN_MENU_PLAY_OPTIONS_LEVEL_BUTTONS;
- break;
-
- case ONE_TWO_PLAYERS_LEVEL:
- max_buttons = MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS;
- if(PadOneKeyReleased(PAD_TRIANGLE) == true)
-800264c4: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-800264c8: 24040010 li a0,16
-800264cc: 10400004 beqz v0,800264e0 <MainMenu+0xe0>
-800264d0: 24160002 li s6,2
- {
- menuLevel = PLAY_OPTIONS_LEVEL;
-800264d4: ae401c60 sw zero,7264(s2)
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
-800264d8: aea01c5c sw zero,7260(s5)
- btn_selected = PLAY_BUTTON_INDEX;
-800264dc: a2201c59 sb zero,7257(s1)
- default:
- max_buttons = 0;
- break;
- }
-
- MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected;
-800264e0: 3c178007 lui s7,0x8007
-800264e4: 92e21c58 lbu v0,7256(s7)
- MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected;
-
- if(PadOneKeyReleased(PAD_LEFT) && (btn_selected > 0) )
-800264e8: 34048000 li a0,0x8000
- default:
- max_buttons = 0;
- break;
- }
-
- MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected;
-800264ec: 00021880 sll v1,v0,0x2
-800264f0: 00021100 sll v0,v0,0x4
-800264f4: 00621021 addu v0,v1,v0
-800264f8: 02621021 addu v0,s3,v0
-800264fc: 90430012 lbu v1,18(v0)
-80026500: 02e0f021 move s8,s7
-80026504: a0430013 sb v1,19(v0)
- MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected;
-80026508: 92221c59 lbu v0,7257(s1)
-8002650c: 00000000 nop
-80026510: 00021880 sll v1,v0,0x2
-80026514: 00021100 sll v0,v0,0x4
-80026518: 00621021 addu v0,v1,v0
-8002651c: 02621021 addu v0,s3,v0
-80026520: 90430012 lbu v1,18(v0)
-
- if(PadOneKeyReleased(PAD_LEFT) && (btn_selected > 0) )
-80026524: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026528: a0430013 sb v1,19(v0)
-8002652c: 1040000c beqz v0,80026560 <MainMenu+0x160>
-80026530: 00000000 nop
-80026534: 92221c59 lbu v0,7257(s1)
-80026538: 00000000 nop
-8002653c: 10400008 beqz v0,80026560 <MainMenu+0x160>
-80026540: 00021880 sll v1,v0,0x2
- {
- MainMenuBtn[btn_selected].selected = false;
-80026544: 00022100 sll a0,v0,0x4
-80026548: 00641821 addu v1,v1,a0
-8002654c: 02631821 addu v1,s3,v1
- previous_btn_selected = btn_selected;
-80026550: a2e21c58 sb v0,7256(s7)
- MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected;
- MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected;
-
- if(PadOneKeyReleased(PAD_LEFT) && (btn_selected > 0) )
- {
- MainMenuBtn[btn_selected].selected = false;
-80026554: a0600012 sb zero,18(v1)
- previous_btn_selected = btn_selected;
- btn_selected--;
-80026558: 10000012 b 800265a4 <MainMenu+0x1a4>
-8002655c: 2442ffff addiu v0,v0,-1
- SfxPlaySound(&BellSnd);
- }
- else if(PadOneKeyReleased(PAD_RIGHT)
-80026560: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026564: 24042000 li a0,8192
-80026568: 10400012 beqz v0,800265b4 <MainMenu+0x1b4>
-8002656c: 00000000 nop
- &&
-80026570: 8ea31c5c lw v1,7260(s5)
- (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) )
-80026574: 92221c59 lbu v0,7257(s1)
- previous_btn_selected = btn_selected;
- btn_selected--;
- SfxPlaySound(&BellSnd);
- }
- else if(PadOneKeyReleased(PAD_RIGHT)
- &&
-80026578: 2463ffff addiu v1,v1,-1
-8002657c: 00761821 addu v1,v1,s6
-80026580: 0043182b sltu v1,v0,v1
-80026584: 1060000b beqz v1,800265b4 <MainMenu+0x1b4>
-80026588: 00021880 sll v1,v0,0x2
- (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) )
- {
- MainMenuBtn[btn_selected].selected = false;
-8002658c: 00022100 sll a0,v0,0x4
-80026590: 00641821 addu v1,v1,a0
-80026594: 02031821 addu v1,s0,v1
- previous_btn_selected = btn_selected;
-80026598: a3c21c58 sb v0,7256(s8)
- }
- else if(PadOneKeyReleased(PAD_RIGHT)
- &&
- (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) )
- {
- MainMenuBtn[btn_selected].selected = false;
-8002659c: a0600012 sb zero,18(v1)
- previous_btn_selected = btn_selected;
- btn_selected++;
-800265a0: 24420001 addiu v0,v0,1
- SfxPlaySound(&BellSnd);
-800265a4: 3c048004 lui a0,0x8004
-800265a8: 24845f60 addiu a0,a0,24416
-800265ac: 0c009eeb jal 80027bac <SfxPlaySound>
-800265b0: a2221c59 sb v0,7257(s1)
- }
-
- if(btn_selected < MainMenuMinimumBtn)
-800265b4: 8ea21c5c lw v0,7260(s5)
-800265b8: 92231c59 lbu v1,7257(s1)
-800265bc: 00000000 nop
-800265c0: 0062182b sltu v1,v1,v0
-800265c4: 10600002 beqz v1,800265d0 <MainMenu+0x1d0>
-800265c8: 00000000 nop
- {
- btn_selected = MainMenuMinimumBtn;
-800265cc: a2221c59 sb v0,7257(s1)
- }
-
- if(btn_selected > (max_buttons - 1 + MainMenuMinimumBtn) )
-800265d0: 92231c59 lbu v1,7257(s1)
-800265d4: 2442ffff addiu v0,v0,-1
-800265d8: 00561021 addu v0,v0,s6
-800265dc: 0043182b sltu v1,v0,v1
-800265e0: 10600002 beqz v1,800265ec <MainMenu+0x1ec>
-800265e4: 00000000 nop
- {
- // Avoid overflow when going back in menu navigation
- btn_selected = (max_buttons - 1 + MainMenuMinimumBtn);
-800265e8: a2221c59 sb v0,7257(s1)
- }
-
- if(PadOneKeyReleased(PAD_CROSS) )
-800265ec: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-800265f0: 24040040 li a0,64
-800265f4: 10400033 beqz v0,800266c4 <MainMenu+0x2c4>
-800265f8: 24020001 li v0,1
- {
- if(menuLevel == ONE_TWO_PLAYERS_LEVEL)
-800265fc: 8e561c60 lw s6,7264(s2)
-80026600: 00000000 nop
-80026604: 16c2001e bne s6,v0,80026680 <MainMenu+0x280>
-80026608: 00000000 nop
- {
- MainMenuBtn[btn_selected].f();
-8002660c: 92221c59 lbu v0,7257(s1)
-80026610: 00000000 nop
-80026614: 00021880 sll v1,v0,0x2
-80026618: 00021100 sll v0,v0,0x4
-8002661c: 00621021 addu v0,v1,v0
-80026620: 02021021 addu v0,s0,v0
-80026624: 8843000d lwl v1,13(v0)
-80026628: 00000000 nop
-8002662c: 9843000a lwr v1,10(v0)
-80026630: 00000000 nop
-80026634: 0060f809 jalr v1
-80026638: 00000000 nop
-
-}
-
-void MainMenuRestoreInitValues(void)
-{
- menuLevel = PLAY_OPTIONS_LEVEL;
-8002663c: 3c028007 lui v0,0x8007
-80026640: ac401c60 sw zero,7264(v0)
- MainMenuMinimumBtn = PLAY_BUTTON_INDEX;
-80026644: aea01c5c sw zero,7260(s5)
-
- MainMenuBtn[PLAY_BUTTON_INDEX].selected = true;
-80026648: a2160012 sb s6,18(s0)
- MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false;
-8002664c: a2000013 sb zero,19(s0)
- MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0;
-80026650: a6000008 sh zero,8(s0)
-
- MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false;
-80026654: a2000026 sb zero,38(s0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false;
-80026658: a2000027 sb zero,39(s0)
- MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0;
-8002665c: a600001c sh zero,28(s0)
-
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = false;
-80026660: a200003a sb zero,58(s0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false;
-80026664: a200003b sb zero,59(s0)
- MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0;
-80026668: a6000030 sh zero,48(s0)
-
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false;
-8002666c: a200004e sb zero,78(s0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false;
-80026670: a200004f sb zero,79(s0)
- MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0;
-80026674: a6000044 sh zero,68(s0)
- if(menuLevel == ONE_TWO_PLAYERS_LEVEL)
- {
- MainMenuBtn[btn_selected].f();
- // Once gameplay has finished, turn back to first level
- MainMenuRestoreInitValues();
- btn_selected = PLAY_BUTTON_INDEX;
-80026678: 1000000d b 800266b0 <MainMenu+0x2b0>
-8002667c: a2201c59 sb zero,7257(s1)
- }
- else
- {
- MainMenuBtn[btn_selected].f();
-80026680: 92221c59 lbu v0,7257(s1)
-80026684: 00000000 nop
-80026688: 00021880 sll v1,v0,0x2
-8002668c: 00021100 sll v0,v0,0x4
-80026690: 00621021 addu v0,v1,v0
-80026694: 02021021 addu v0,s0,v0
-80026698: 8843000d lwl v1,13(v0)
-8002669c: 00000000 nop
-800266a0: 9843000a lwr v1,10(v0)
-800266a4: 00000000 nop
-800266a8: 0060f809 jalr v1
-800266ac: 00000000 nop
- }
-
-
-
- if(menuLevel == ONE_TWO_PLAYERS_LEVEL)
-800266b0: 8e431c60 lw v1,7264(s2)
-800266b4: 24020001 li v0,1
-800266b8: 14620002 bne v1,v0,800266c4 <MainMenu+0x2c4>
-800266bc: 00000000 nop
- {
- btn_selected = PLAY_BUTTON_INDEX;
-800266c0: a2201c59 sb zero,7257(s1)
- }
-
- }
-
- MainMenuBtn[btn_selected].selected = true;
-800266c4: 92221c59 lbu v0,7257(s1)
-800266c8: 00000000 nop
-800266cc: 00021880 sll v1,v0,0x2
-800266d0: 00021100 sll v0,v0,0x4
-800266d4: 00621021 addu v0,v1,v0
-800266d8: 02021021 addu v0,s0,v0
-800266dc: 24030001 li v1,1
-800266e0: a0430012 sb v1,18(v0)
-
- while(1)
- {
- MainMenuButtonHandler();
-
- switch(menuLevel)
-800266e4: 8e421c60 lw v0,7264(s2)
-800266e8: 00000000 nop
-800266ec: 10400005 beqz v0,80026704 <MainMenu+0x304>
-800266f0: 24030001 li v1,1
-800266f4: 10430010 beq v0,v1,80026738 <MainMenu+0x338>
-800266f8: 00000000 nop
-800266fc: 1000ff53 b 8002644c <MainMenu+0x4c>
-80026700: 00000000 nop
- {
- case PLAY_OPTIONS_LEVEL:
- while(SystemDMAReady() == false);
-80026704: 0c009f8b jal 80027e2c <SystemDMAReady>
-80026708: 00000000 nop
-8002670c: 1040fffd beqz v0,80026704 <MainMenu+0x304>
-80026710: 24060028 li a2,40
-
- GsSortCls(0,0,40);
-80026714: 00002821 move a1,zero
-80026718: 0c00c4e8 jal 800313a0 <GsSortCls>
-8002671c: 00002021 move a0,zero
- MainMenuDrawButton(&MainMenuBtn[PLAY_BUTTON_INDEX]);
-80026720: 3c048004 lui a0,0x8004
-80026724: 0c00984d jal 80026134 <MainMenuDrawButton>
-80026728: 24845ea0 addiu a0,a0,24224
- MainMenuDrawButton(&MainMenuBtn[OPTIONS_BUTTON_INDEX]);
-8002672c: 3c048004 lui a0,0x8004
-80026730: 1000000d b 80026768 <MainMenu+0x368>
-80026734: 24845eb4 addiu a0,a0,24244
-
- GfxDrawScene();
- break;
-
- case ONE_TWO_PLAYERS_LEVEL:
- while(SystemDMAReady() == false);
-80026738: 0c009f8b jal 80027e2c <SystemDMAReady>
-8002673c: 00000000 nop
-80026740: 1040fffd beqz v0,80026738 <MainMenu+0x338>
-80026744: 24060028 li a2,40
-
- GsSortCls(0,0,40);
-80026748: 00002821 move a1,zero
-8002674c: 0c00c4e8 jal 800313a0 <GsSortCls>
-80026750: 00002021 move a0,zero
- MainMenuDrawButton(&MainMenuBtn[ONE_PLAYER_BUTTON_INDEX]);
-80026754: 3c048004 lui a0,0x8004
-80026758: 0c00984d jal 80026134 <MainMenuDrawButton>
-8002675c: 24845ec8 addiu a0,a0,24264
- MainMenuDrawButton(&MainMenuBtn[TWO_PLAYER_BUTTON_INDEX]);
-80026760: 3c048004 lui a0,0x8004
-80026764: 24845edc addiu a0,a0,24284
-80026768: 0c00984d jal 80026134 <MainMenuDrawButton>
-8002676c: 3c118007 lui s1,0x8007
- GfxDrawScene();
-80026770: 0c008fe2 jal 80023f88 <GfxDrawScene>
-80026774: 00000000 nop
- break;
-80026778: 1000ff34 b 8002644c <MainMenu+0x4c>
-8002677c: 00000000 nop
-
-80026780 <PadOneKeyReleased>:
- return true;
-}
-
-bool PadOneKeyReleased(unsigned short key)
-{
- return ( !(pad1 & key) && (previous_pad1 & key) );
-80026780: 3c028007 lui v0,0x8007
-80026784: 94431c7a lhu v1,7290(v0)
-
- return true;
-}
-
-bool PadOneKeyReleased(unsigned short key)
-{
-80026788: 3084ffff andi a0,a0,0xffff
- return ( !(pad1 & key) && (previous_pad1 & key) );
-8002678c: 00831824 and v1,a0,v1
-80026790: 14600006 bnez v1,800267ac <PadOneKeyReleased+0x2c>
-80026794: 00001021 move v0,zero
-80026798: 3c028007 lui v0,0x8007
-8002679c: 94421c76 lhu v0,7286(v0)
-800267a0: 00000000 nop
-800267a4: 00822024 and a0,a0,v0
-800267a8: 0004102b sltu v0,zero,a0
-}
-800267ac: 03e00008 jr ra
-800267b0: 00000000 nop
-
-800267b4 <PadTwoKeyReleased>:
-
-bool PadTwoKeyReleased(unsigned short key)
-{
- return ( !(pad2 & key) && (previous_pad2 & key) );
-800267b4: 3c028007 lui v0,0x8007
-800267b8: 94431c78 lhu v1,7288(v0)
-{
- return ( !(pad1 & key) && (previous_pad1 & key) );
-}
-
-bool PadTwoKeyReleased(unsigned short key)
-{
-800267bc: 3084ffff andi a0,a0,0xffff
- return ( !(pad2 & key) && (previous_pad2 & key) );
-800267c0: 00831824 and v1,a0,v1
-800267c4: 14600006 bnez v1,800267e0 <PadTwoKeyReleased+0x2c>
-800267c8: 00001021 move v0,zero
-800267cc: 3c028007 lui v0,0x8007
-800267d0: 94421c74 lhu v0,7284(v0)
-800267d4: 00000000 nop
-800267d8: 00822024 and a0,a0,v0
-800267dc: 0004102b sltu v0,zero,a0
-}
-800267e0: 03e00008 jr ra
-800267e4: 00000000 nop
-
-800267e8 <PadCheatHandler>:
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-}
-
-void PadCheatHandler(uint8_t n_pad)
-{
-800267e8: 27bdffb0 addiu sp,sp,-80
- unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN,
-800267ec: 3c058004 lui a1,0x8004
-800267f0: 24060018 li a2,24
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-}
-
-void PadCheatHandler(uint8_t n_pad)
-{
-800267f4: afb00028 sw s0,40(sp)
- unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN,
-800267f8: 24a5f7ec addiu a1,a1,-2068
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-}
-
-void PadCheatHandler(uint8_t n_pad)
-{
-800267fc: 00808021 move s0,a0
- unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN,
-80026800: 27a40010 addiu a0,sp,16
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-}
-
-void PadCheatHandler(uint8_t n_pad)
-{
-80026804: afbf004c sw ra,76(sp)
-80026808: afbe0048 sw s8,72(sp)
-8002680c: afb70044 sw s7,68(sp)
-80026810: afb60040 sw s6,64(sp)
-80026814: afb5003c sw s5,60(sp)
-80026818: afb40038 sw s4,56(sp)
-8002681c: afb30034 sw s3,52(sp)
-80026820: afb20030 sw s2,48(sp)
- unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN,
-80026824: 0c00d75e jal 80035d78 <memcpy>
-80026828: afb1002c sw s1,44(sp)
- void (*clean_callback)(void);
- bool success = false;
- unsigned short * cheat_array;
- TYPE_TIMER * timer;
-
- switch(n_pad)
-8002682c: 1200000c beqz s0,80026860 <PadCheatHandler+0x78>
-80026830: 24020001 li v0,1
-80026834: 16020013 bne s0,v0,80026884 <PadCheatHandler+0x9c>
-80026838: 3c048004 lui a0,0x8004
-
- case PAD_TWO:
- released_callback = &PadTwoKeyReleased;
- cheat_array = pad2_cheat_array;
- clean_callback = &PadTwoCleanCheatArray;
- timer = pad2_cheat_timer;
-8002683c: 3c028007 lui v0,0x8007
- timer = pad1_cheat_timer;
- break;
-
- case PAD_TWO:
- released_callback = &PadTwoKeyReleased;
- cheat_array = pad2_cheat_array;
-80026840: 3c108004 lui s0,0x8004
- clean_callback = &PadTwoCleanCheatArray;
-80026844: 3c128002 lui s2,0x8002
- clean_callback = &PadOneCleanCheatArray;
- timer = pad1_cheat_timer;
- break;
-
- case PAD_TWO:
- released_callback = &PadTwoKeyReleased;
-80026848: 3c158002 lui s5,0x8002
- cheat_array = pad2_cheat_array;
- clean_callback = &PadTwoCleanCheatArray;
- timer = pad2_cheat_timer;
-8002684c: 8c561c68 lw s6,7272(v0)
- timer = pad1_cheat_timer;
- break;
-
- case PAD_TWO:
- released_callback = &PadTwoKeyReleased;
- cheat_array = pad2_cheat_array;
-80026850: 26115ff4 addiu s1,s0,24564
- clean_callback = &PadTwoCleanCheatArray;
-80026854: 26526a18 addiu s2,s2,27160
- timer = pad2_cheat_timer;
- break;
-80026858: 10000017 b 800268b8 <PadCheatHandler+0xd0>
-8002685c: 26b567b4 addiu s5,s5,26548
- {
- case PAD_ONE:
- released_callback = &PadOneKeyReleased;
- cheat_array = pad1_cheat_array;
- clean_callback = &PadOneCleanCheatArray;
- timer = pad1_cheat_timer;
-80026860: 3c028007 lui v0,0x8007
-
- switch(n_pad)
- {
- case PAD_ONE:
- released_callback = &PadOneKeyReleased;
- cheat_array = pad1_cheat_array;
-80026864: 3c108004 lui s0,0x8004
- clean_callback = &PadOneCleanCheatArray;
-80026868: 3c128002 lui s2,0x8002
- TYPE_TIMER * timer;
-
- switch(n_pad)
- {
- case PAD_ONE:
- released_callback = &PadOneKeyReleased;
-8002686c: 3c158002 lui s5,0x8002
- cheat_array = pad1_cheat_array;
- clean_callback = &PadOneCleanCheatArray;
- timer = pad1_cheat_timer;
-80026870: 8c561c6c lw s6,7276(v0)
-
- switch(n_pad)
- {
- case PAD_ONE:
- released_callback = &PadOneKeyReleased;
- cheat_array = pad1_cheat_array;
-80026874: 26116014 addiu s1,s0,24596
- clean_callback = &PadOneCleanCheatArray;
-80026878: 26526a2c addiu s2,s2,27180
- timer = pad1_cheat_timer;
- break;
-8002687c: 1000000e b 800268b8 <PadCheatHandler+0xd0>
-80026880: 26b56780 addiu s5,s5,26496
- clean_callback();
- }
- }
-
- cheat_array[j] = key;
-}
-80026884: 8fbf004c lw ra,76(sp)
-80026888: 8fbe0048 lw s8,72(sp)
-8002688c: 8fb70044 lw s7,68(sp)
-80026890: 8fb60040 lw s6,64(sp)
-80026894: 8fb5003c lw s5,60(sp)
-80026898: 8fb40038 lw s4,56(sp)
-8002689c: 8fb30034 lw s3,52(sp)
-800268a0: 8fb20030 lw s2,48(sp)
-800268a4: 8fb1002c lw s1,44(sp)
-800268a8: 8fb00028 lw s0,40(sp)
- clean_callback = &PadTwoCleanCheatArray;
- timer = pad2_cheat_timer;
- break;
-
- default:
- dprintf("Invalid pad called for PadCheatHandler()!\n");
-800268ac: 24840fa8 addiu a0,a0,4008
-800268b0: 0800ed8f j 8003b63c <printf>
-800268b4: 27bd0050 addiu sp,sp,80
-800268b8: 3c138004 lui s3,0x8004
-800268bc: 26735fb4 addiu s3,s3,24500
- clean_callback = &PadOneCleanCheatArray;
- timer = pad1_cheat_timer;
- break;
-
- case PAD_TWO:
- released_callback = &PadTwoKeyReleased;
-800268c0: 00008021 move s0,zero
-800268c4: 0260b821 move s7,s3
- return;
- }
-
- for(i = 0; i < PAD_MAX_CHEATS; i++)
- {
- if(cheatsArray[i] != NULL)
-800268c8: 8e650000 lw a1,0(s3)
-800268cc: 00000000 nop
-800268d0: 10a0001e beqz a1,8002694c <PadCheatHandler+0x164>
-800268d4: 24060010 li a2,16
- {
- if(SystemArrayCompare(cheat_array, cheatsArray[i]->Combination, CHEAT_ARRAY_SIZE) == true)
-800268d8: 0c00a116 jal 80028458 <SystemArrayCompare>
-800268dc: 02202021 move a0,s1
-800268e0: 1040001a beqz v0,8002694c <PadCheatHandler+0x164>
-800268e4: 00000000 nop
- {
- if(cheatsArray[i]->Callback != NULL)
-800268e8: 8e620000 lw v0,0(s3)
-800268ec: 00000000 nop
-800268f0: 8c420020 lw v0,32(v0)
-800268f4: 00000000 nop
-800268f8: 10400015 beqz v0,80026950 <PadCheatHandler+0x168>
-800268fc: 26100001 addiu s0,s0,1
-80026900: 2610ffff addiu s0,s0,-1
- if(clean_callback != NULL)
- {
- clean_callback();
- }
-
- cheatsArray[i]->Callback();
-80026904: 00108080 sll s0,s0,0x2
- {
- if(cheatsArray[i]->Callback != NULL)
- {
- if(clean_callback != NULL)
- {
- clean_callback();
-80026908: 0240f809 jalr s2
-8002690c: 02f08021 addu s0,s7,s0
- }
-
- cheatsArray[i]->Callback();
-80026910: 8e020000 lw v0,0(s0)
- clean_callback();
- }
- }
-
- cheat_array[j] = key;
-}
-80026914: 8fbf004c lw ra,76(sp)
-80026918: 8fbe0048 lw s8,72(sp)
-8002691c: 8fb70044 lw s7,68(sp)
-80026920: 8fb60040 lw s6,64(sp)
-80026924: 8fb5003c lw s5,60(sp)
-80026928: 8fb40038 lw s4,56(sp)
-8002692c: 8fb30034 lw s3,52(sp)
-80026930: 8fb20030 lw s2,48(sp)
-80026934: 8fb1002c lw s1,44(sp)
-80026938: 8fb00028 lw s0,40(sp)
- if(clean_callback != NULL)
- {
- clean_callback();
- }
-
- cheatsArray[i]->Callback();
-8002693c: 8c590020 lw t9,32(v0)
-80026940: 00000000 nop
-80026944: 03200008 jr t9
-80026948: 27bd0050 addiu sp,sp,80
-8002694c: 26100001 addiu s0,s0,1
- default:
- dprintf("Invalid pad called for PadCheatHandler()!\n");
- return;
- }
-
- for(i = 0; i < PAD_MAX_CHEATS; i++)
-80026950: 24020010 li v0,16
-80026954: 1602ffdc bne s0,v0,800268c8 <PadCheatHandler+0xe0>
-80026958: 26730004 addiu s3,s3,4
-8002695c: 0000f021 move s8,zero
-80026960: 00008021 move s0,zero
- }
- }
- }
- }
-
- for(i = 0; i < sizeof(available_keys) / sizeof(unsigned short); i++)
-80026964: 24170018 li s7,24
- {
- if(released_callback(available_keys[i]) == true)
-80026968: 27a20010 addiu v0,sp,16
-8002696c: 005e1021 addu v0,v0,s8
-80026970: 94530000 lhu s3,0(v0)
-80026974: 02a0f809 jalr s5
-80026978: 02602021 move a0,s3
-8002697c: 10400005 beqz v0,80026994 <PadCheatHandler+0x1ac>
-80026980: 02c02021 move a0,s6
- {
- SystemTimerRestart(timer);
-80026984: 0c00a10d jal 80028434 <SystemTimerRestart>
-80026988: 26100001 addiu s0,s0,1
- key = available_keys[i];
- keys_released++;
-8002698c: 321000ff andi s0,s0,0xff
- for(i = 0; i < sizeof(available_keys) / sizeof(unsigned short); i++)
- {
- if(released_callback(available_keys[i]) == true)
- {
- SystemTimerRestart(timer);
- key = available_keys[i];
-80026990: 0260a021 move s4,s3
-80026994: 27de0002 addiu s8,s8,2
- }
- }
- }
- }
-
- for(i = 0; i < sizeof(available_keys) / sizeof(unsigned short); i++)
-80026998: 17d7fff4 bne s8,s7,8002696c <PadCheatHandler+0x184>
-8002699c: 27a20010 addiu v0,sp,16
- key = available_keys[i];
- keys_released++;
- }
- }
-
- if(keys_released != 1)
-800269a0: 24020001 li v0,1
-800269a4: 16020010 bne s0,v0,800269e8 <PadCheatHandler+0x200>
-800269a8: 02201021 move v0,s1
-800269ac: 00008021 move s0,zero
- return;
- }
-
- // Check for full array (return success = true if an empty array
- // element was found.
- for(j = 0; j < CHEAT_ARRAY_SIZE; j++)
-800269b0: 24030010 li v1,16
- {
- if(cheat_array[j] == 0)
-800269b4: 94440000 lhu a0,0(v0)
-800269b8: 00000000 nop
-800269bc: 10800007 beqz a0,800269dc <PadCheatHandler+0x1f4>
-800269c0: 00000000 nop
- return;
- }
-
- // Check for full array (return success = true if an empty array
- // element was found.
- for(j = 0; j < CHEAT_ARRAY_SIZE; j++)
-800269c4: 26100001 addiu s0,s0,1
-800269c8: 321000ff andi s0,s0,0xff
-800269cc: 1603fff9 bne s0,v1,800269b4 <PadCheatHandler+0x1cc>
-800269d0: 24420002 addiu v0,v0,2
- if(success == false)
- {
- if(clean_callback != NULL)
- {
- // Overrun
- clean_callback();
-800269d4: 0240f809 jalr s2
-800269d8: 00000000 nop
- }
- }
-
- cheat_array[j] = key;
-800269dc: 00108040 sll s0,s0,0x1
-800269e0: 02308021 addu s0,s1,s0
-800269e4: a6140000 sh s4,0(s0)
-}
-800269e8: 8fbf004c lw ra,76(sp)
-800269ec: 8fbe0048 lw s8,72(sp)
-800269f0: 8fb70044 lw s7,68(sp)
-800269f4: 8fb60040 lw s6,64(sp)
-800269f8: 8fb5003c lw s5,60(sp)
-800269fc: 8fb40038 lw s4,56(sp)
-80026a00: 8fb30034 lw s3,52(sp)
-80026a04: 8fb20030 lw s2,48(sp)
-80026a08: 8fb1002c lw s1,44(sp)
-80026a0c: 8fb00028 lw s0,40(sp)
-80026a10: 03e00008 jr ra
-80026a14: 27bd0050 addiu sp,sp,80
-
-80026a18 <PadTwoCleanCheatArray>:
- memset(pad1_cheat_array,0,sizeof(unsigned short) * CHEAT_ARRAY_SIZE);
-}
-
-void PadTwoCleanCheatArray(void)
-{
- memset(pad2_cheat_array,0,sizeof(unsigned short) * CHEAT_ARRAY_SIZE);
-80026a18: 3c048004 lui a0,0x8004
-80026a1c: 24060020 li a2,32
-80026a20: 00002821 move a1,zero
-80026a24: 0800d7ab j 80035eac <memset>
-80026a28: 24845ff4 addiu a0,a0,24564
-
-80026a2c <PadOneCleanCheatArray>:
- return true;
-}
-
-void PadOneCleanCheatArray(void)
-{
- memset(pad1_cheat_array,0,sizeof(unsigned short) * CHEAT_ARRAY_SIZE);
-80026a2c: 3c048004 lui a0,0x8004
-80026a30: 24060020 li a2,32
-80026a34: 00002821 move a1,zero
-80026a38: 0800d7ab j 80035eac <memset>
-80026a3c: 24846014 addiu a0,a0,24596
-
-80026a40 <PadOneConnected>:
-
- return PadOne;
-}
-
-bool PadOneConnected(void)
-{
-80026a40: 27bdffd8 addiu sp,sp,-40
-
-psx_pad_state PadOneGetState(void)
-{
- psx_pad_state PadOne;
-
- PSX_PollPad_Fast(PAD_ONE,&PadOne);
-80026a44: 27a50010 addiu a1,sp,16
-
- return PadOne;
-}
-
-bool PadOneConnected(void)
-{
-80026a48: afbf0024 sw ra,36(sp)
-
-psx_pad_state PadOneGetState(void)
-{
- psx_pad_state PadOne;
-
- PSX_PollPad_Fast(PAD_ONE,&PadOne);
-80026a4c: 0c00d0ba jal 800342e8 <PSX_PollPad_Fast>
-80026a50: 00002021 move a0,zero
-
- return PadOne;
-80026a54: 93a20010 lbu v0,16(sp)
- {
- return false;
- }
-
- return true;
-}
-80026a58: 8fbf0024 lw ra,36(sp)
-80026a5c: 2c420001 sltiu v0,v0,1
-80026a60: 03e00008 jr ra
-80026a64: 27bd0028 addiu sp,sp,40
-
-80026a68 <PadOneAnyKeyPressed>:
-
-bool PadOneAnyKeyPressed(void)
-{
- return (bool)pad1;
-80026a68: 3c028007 lui v0,0x8007
-80026a6c: 94421c7a lhu v0,7290(v0)
-}
-80026a70: 03e00008 jr ra
-80026a74: 0002102b sltu v0,zero,v0
-
-80026a78 <PadOneDirectionKeyPressed>:
-
-bool PadOneDirectionKeyPressed(void)
-{
- return ( (PadOneKeyPressed(PAD_UP) == true)
-80026a78: 3c028007 lui v0,0x8007
-80026a7c: 94421c7a lhu v0,7290(v0)
-80026a80: 00000000 nop
-80026a84: 3042f000 andi v0,v0,0xf000
- (PadOneKeyPressed(PAD_LEFT) == true)
- ||
- (PadOneKeyPressed(PAD_RIGHT) == true)
- ||
- (PadOneKeyPressed(PAD_DOWN) == true) );
-}
-80026a88: 03e00008 jr ra
-80026a8c: 0002102b sltu v0,zero,v0
-
-80026a90 <PadOneDirectionKeyReleased>:
-
-bool PadOneDirectionKeyReleased(void)
-{
-80026a90: 27bdffe8 addiu sp,sp,-24
-80026a94: afbf0014 sw ra,20(sp)
- return ( (PadOneKeyReleased(PAD_UP) == true)
-80026a98: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026a9c: 24041000 li a0,4096
- ||
- (PadOneKeyReleased(PAD_LEFT) == true)
- ||
- (PadOneKeyReleased(PAD_RIGHT) == true)
- ||
-80026aa0: 1440000c bnez v0,80026ad4 <PadOneDirectionKeyReleased+0x44>
-80026aa4: 24050001 li a1,1
-
-bool PadOneDirectionKeyReleased(void)
-{
- return ( (PadOneKeyReleased(PAD_UP) == true)
- ||
- (PadOneKeyReleased(PAD_LEFT) == true)
-80026aa8: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026aac: 34048000 li a0,0x8000
-}
-
-bool PadOneDirectionKeyReleased(void)
-{
- return ( (PadOneKeyReleased(PAD_UP) == true)
- ||
-80026ab0: 14400008 bnez v0,80026ad4 <PadOneDirectionKeyReleased+0x44>
-80026ab4: 00000000 nop
- (PadOneKeyReleased(PAD_LEFT) == true)
- ||
- (PadOneKeyReleased(PAD_RIGHT) == true)
-80026ab8: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026abc: 24042000 li a0,8192
-bool PadOneDirectionKeyReleased(void)
-{
- return ( (PadOneKeyReleased(PAD_UP) == true)
- ||
- (PadOneKeyReleased(PAD_LEFT) == true)
- ||
-80026ac0: 14400004 bnez v0,80026ad4 <PadOneDirectionKeyReleased+0x44>
-80026ac4: 00000000 nop
- (PadOneKeyReleased(PAD_RIGHT) == true)
- ||
- (PadOneKeyReleased(PAD_DOWN) == true) );
-80026ac8: 0c0099e0 jal 80026780 <PadOneKeyReleased>
-80026acc: 24044000 li a0,16384
-80026ad0: 00402821 move a1,v0
-}
-80026ad4: 8fbf0014 lw ra,20(sp)
-80026ad8: 30a20001 andi v0,a1,0x1
-80026adc: 03e00008 jr ra
-80026ae0: 27bd0018 addiu sp,sp,24
-
-80026ae4 <PadTwoDirectionKeyReleased>:
-
-bool PadTwoDirectionKeyReleased(void)
-{
-80026ae4: 27bdffe8 addiu sp,sp,-24
-80026ae8: afbf0014 sw ra,20(sp)
- return ( (PadTwoKeyReleased(PAD_UP) == true)
-80026aec: 0c0099ed jal 800267b4 <PadTwoKeyReleased>
-80026af0: 24041000 li a0,4096
- ||
- (PadTwoKeyReleased(PAD_LEFT) == true)
- ||
- (PadTwoKeyReleased(PAD_RIGHT) == true)
- ||
-80026af4: 1440000c bnez v0,80026b28 <PadTwoDirectionKeyReleased+0x44>
-80026af8: 24050001 li a1,1
-
-bool PadTwoDirectionKeyReleased(void)
-{
- return ( (PadTwoKeyReleased(PAD_UP) == true)
- ||
- (PadTwoKeyReleased(PAD_LEFT) == true)
-80026afc: 0c0099ed jal 800267b4 <PadTwoKeyReleased>
-80026b00: 34048000 li a0,0x8000
-}
-
-bool PadTwoDirectionKeyReleased(void)
-{
- return ( (PadTwoKeyReleased(PAD_UP) == true)
- ||
-80026b04: 14400008 bnez v0,80026b28 <PadTwoDirectionKeyReleased+0x44>
-80026b08: 00000000 nop
- (PadTwoKeyReleased(PAD_LEFT) == true)
- ||
- (PadTwoKeyReleased(PAD_RIGHT) == true)
-80026b0c: 0c0099ed jal 800267b4 <PadTwoKeyReleased>
-80026b10: 24042000 li a0,8192
-bool PadTwoDirectionKeyReleased(void)
-{
- return ( (PadTwoKeyReleased(PAD_UP) == true)
- ||
- (PadTwoKeyReleased(PAD_LEFT) == true)
- ||
-80026b14: 14400004 bnez v0,80026b28 <PadTwoDirectionKeyReleased+0x44>
-80026b18: 00000000 nop
- (PadTwoKeyReleased(PAD_RIGHT) == true)
- ||
- (PadTwoKeyReleased(PAD_DOWN) == true) );
-80026b1c: 0c0099ed jal 800267b4 <PadTwoKeyReleased>
-80026b20: 24044000 li a0,16384
-80026b24: 00402821 move a1,v0
-}
-80026b28: 8fbf0014 lw ra,20(sp)
-80026b2c: 30a20001 andi v0,a1,0x1
-80026b30: 03e00008 jr ra
-80026b34: 27bd0018 addiu sp,sp,24
-
-80026b38 <PadTwoDirectionKeyPressed>:
-
-bool PadTwoDirectionKeyPressed(void)
-{
- return ( (PadTwoKeyPressed(PAD_UP) == true)
-80026b38: 3c028007 lui v0,0x8007
-80026b3c: 94421c78 lhu v0,7288(v0)
-80026b40: 00000000 nop
-80026b44: 3042f000 andi v0,v0,0xf000
- (PadTwoKeyPressed(PAD_LEFT) == true)
- ||
- (PadTwoKeyPressed(PAD_RIGHT) == true)
- ||
- (PadTwoKeyPressed(PAD_DOWN) == true) );
-}
-80026b48: 03e00008 jr ra
-80026b4c: 0002102b sltu v0,zero,v0
-
-80026b50 <PadTwoAnyKeyPressed>:
-
-bool PadTwoAnyKeyPressed(void)
-{
- return (bool)pad2;
-80026b50: 3c028007 lui v0,0x8007
-80026b54: 94421c78 lhu v0,7288(v0)
-}
-80026b58: 03e00008 jr ra
-80026b5c: 0002102b sltu v0,zero,v0
-
-80026b60 <PadOneKeyPressed>:
-
-bool PadOneKeyPressed(unsigned short key)
-{
- return (bool)( pad1 & key );
-80026b60: 3c028007 lui v0,0x8007
-80026b64: 94421c7a lhu v0,7290(v0)
-80026b68: 00000000 nop
-80026b6c: 00821024 and v0,a0,v0
-}
-80026b70: 03e00008 jr ra
-80026b74: 0002102b sltu v0,zero,v0
-
-80026b78 <PadTwoKeyPressed>:
-
-bool PadTwoKeyPressed(unsigned short key)
-{
- return (bool)( pad2 & key );
-80026b78: 3c028007 lui v0,0x8007
-80026b7c: 94421c78 lhu v0,7288(v0)
-80026b80: 00000000 nop
-80026b84: 00821024 and v0,a0,v0
-}
-80026b88: 03e00008 jr ra
-80026b8c: 0002102b sltu v0,zero,v0
-
-80026b90 <PadOneIsVibrationEnabled>:
- }
-}
-
-bool PadOneIsVibrationEnabled(void)
-{
- return (pad1_vibration_timer & true);
-80026b90: 3c028007 lui v0,0x8007
-80026b94: 90421c72 lbu v0,7282(v0)
-}
-80026b98: 03e00008 jr ra
-80026b9c: 30420001 andi v0,v0,0x1
-
-80026ba0 <PadTwoIsVibrationEnabled>:
-
-bool PadTwoIsVibrationEnabled(void)
-{
- return (pad2_vibration_timer & true);
-80026ba0: 3c028007 lui v0,0x8007
-80026ba4: 90421c70 lbu v0,7280(v0)
-}
-80026ba8: 03e00008 jr ra
-80026bac: 30420001 andi v0,v0,0x1
-
-80026bb0 <UpdatePads>:
-
-bool UpdatePads(void)
-{
-80026bb0: 27bdffe8 addiu sp,sp,-24
-80026bb4: afbf0014 sw ra,20(sp)
- return false;
-}
-
-void PadOneVibrationHandler(void)
-{
- if(PadOneIsVibrationEnabled() == true)
-80026bb8: 0c009ae4 jal 80026b90 <PadOneIsVibrationEnabled>
-80026bbc: 00000000 nop
-80026bc0: 1040000c beqz v0,80026bf4 <UpdatePads+0x44>
-80026bc4: 00000000 nop
- {
- pad_enable_vibration(PAD_ONE);
-80026bc8: 0c00ca38 jal 800328e0 <pad_enable_vibration>
-80026bcc: 00002021 move a0,zero
- pad_set_vibration(PAD_ONE,pad1_small_vibration_force,pad1_big_vibration_force);
-80026bd0: 00003021 move a2,zero
-80026bd4: 00002821 move a1,zero
-80026bd8: 0c00ca66 jal 80032998 <pad_set_vibration>
-80026bdc: 00002021 move a0,zero
- pad1_vibration_timer--;
-80026be0: 3c038007 lui v1,0x8007
-80026be4: 94621c72 lhu v0,7282(v1)
-80026be8: 00000000 nop
-80026bec: 2442ffff addiu v0,v0,-1
-80026bf0: a4621c72 sh v0,7282(v1)
- }
-}
-
-void PadTwoVibrationHandler(void)
-{
- if(PadTwoIsVibrationEnabled() == true)
-80026bf4: 0c009ae8 jal 80026ba0 <PadTwoIsVibrationEnabled>
-80026bf8: 00000000 nop
-80026bfc: 1040000c beqz v0,80026c30 <UpdatePads+0x80>
-80026c00: 00000000 nop
- {
- pad_enable_vibration(PAD_TWO);
-80026c04: 0c00ca38 jal 800328e0 <pad_enable_vibration>
-80026c08: 24040001 li a0,1
- pad_set_vibration(PAD_TWO,pad2_small_vibration_force,pad2_big_vibration_force);
-80026c0c: 00003021 move a2,zero
-80026c10: 00002821 move a1,zero
-80026c14: 0c00ca66 jal 80032998 <pad_set_vibration>
-80026c18: 24040001 li a0,1
- pad2_vibration_timer--;
-80026c1c: 3c038007 lui v1,0x8007
-80026c20: 94621c70 lhu v0,7280(v1)
-80026c24: 00000000 nop
-80026c28: 2442ffff addiu v0,v0,-1
-80026c2c: a4621c70 sh v0,7280(v1)
-{
- PadOneVibrationHandler();
-
- PadTwoVibrationHandler();
-
- PadCheatHandler(PAD_ONE);
-80026c30: 0c0099fa jal 800267e8 <PadCheatHandler>
-80026c34: 00002021 move a0,zero
-
- PadCheatHandler(PAD_TWO);
-80026c38: 0c0099fa jal 800267e8 <PadCheatHandler>
-80026c3c: 24040001 li a0,1
-
- // Get now-old pad data
- previous_pad1 = pad1;
-80026c40: 3c048007 lui a0,0x8007
-80026c44: 94831c7a lhu v1,7290(a0)
-80026c48: 3c028007 lui v0,0x8007
- previous_pad2 = pad2;
-80026c4c: 3c058007 lui a1,0x8007
- PadCheatHandler(PAD_ONE);
-
- PadCheatHandler(PAD_TWO);
-
- // Get now-old pad data
- previous_pad1 = pad1;
-80026c50: a4431c76 sh v1,7286(v0)
- previous_pad2 = pad2;
-80026c54: 94a31c78 lhu v1,7288(a1)
-80026c58: 3c028007 lui v0,0x8007
-
- PSX_ReadPad(&pad1,&pad2);
-80026c5c: 24a51c78 addiu a1,a1,7288
-80026c60: 24841c7a addiu a0,a0,7290
-80026c64: 0c00d062 jal 80034188 <PSX_ReadPad>
-80026c68: a4431c74 sh v1,7284(v0)
- {
- return false;
- }
-
- return true;
-}
-80026c6c: 8fbf0014 lw ra,20(sp)
- previous_pad1 = pad1;
- previous_pad2 = pad2;
-
- PSX_ReadPad(&pad1,&pad2);
-
- if(PadOneConnected() == false)
-80026c70: 08009a90 j 80026a40 <PadOneConnected>
-80026c74: 27bd0018 addiu sp,sp,24
-
-80026c78 <PadGetKeyIndex>:
-{
- return ( !(pad2 & key) && (previous_pad2 & key) );
-}
-
-uint8_t PadGetKeyIndex(unsigned short key)
-{
-80026c78: 3084ffff andi a0,a0,0xffff
- switch(key)
-80026c7c: 24030020 li v1,32
-80026c80: 1083002a beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026c84: 24020003 li v0,3
-80026c88: 2c820021 sltiu v0,a0,33
-80026c8c: 10400012 beqz v0,80026cd8 <PadGetKeyIndex+0x60>
-80026c90: 24031000 li v1,4096
-80026c94: 24030004 li v1,4
-80026c98: 10830024 beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026c9c: 24020008 li v0,8
-80026ca0: 2c820005 sltiu v0,a0,5
-80026ca4: 10400007 beqz v0,80026cc4 <PadGetKeyIndex+0x4c>
-80026ca8: 24030008 li v1,8
-80026cac: 24030001 li v1,1
-80026cb0: 1083001e beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026cb4: 24020009 li v0,9
- case PAD_L2:
- return PAD_L2_INDEX;
- break;
-
- case PAD_R2:
- return PAD_R2_INDEX;
-80026cb8: 2402000b li v0,11
- return ( !(pad2 & key) && (previous_pad2 & key) );
-}
-
-uint8_t PadGetKeyIndex(unsigned short key)
-{
- switch(key)
-80026cbc: 10000018 b 80026d20 <PadGetKeyIndex+0xa8>
-80026cc0: 24030002 li v1,2
-80026cc4: 10830019 beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026cc8: 2402000a li v0,10
- case PAD_SQUARE:
- return PAD_SQUARE_INDEX;
- break;
-
- case PAD_TRIANGLE:
- return PAD_TRIANGLE_INDEX;
-80026ccc: 24020002 li v0,2
- return ( !(pad2 & key) && (previous_pad2 & key) );
-}
-
-uint8_t PadGetKeyIndex(unsigned short key)
-{
- switch(key)
-80026cd0: 10000013 b 80026d20 <PadGetKeyIndex+0xa8>
-80026cd4: 24030010 li v1,16
-80026cd8: 10830014 beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026cdc: 24020006 li v0,6
-80026ce0: 2c821001 sltiu v0,a0,4097
-80026ce4: 10400007 beqz v0,80026d04 <PadGetKeyIndex+0x8c>
-80026ce8: 24034000 li v1,16384
-80026cec: 24030040 li v1,64
-80026cf0: 1083000e beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026cf4: 00001021 move v0,zero
- case PAD_CROSS:
- return PAD_CROSS_INDEX;
- break;
-
- case PAD_SQUARE:
- return PAD_SQUARE_INDEX;
-80026cf8: 24020001 li v0,1
- return ( !(pad2 & key) && (previous_pad2 & key) );
-}
-
-uint8_t PadGetKeyIndex(unsigned short key)
-{
- switch(key)
-80026cfc: 10000008 b 80026d20 <PadGetKeyIndex+0xa8>
-80026d00: 24030080 li v1,128
-80026d04: 10830009 beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026d08: 24020004 li v0,4
-80026d0c: 34038000 li v1,0x8000
-80026d10: 10830006 beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026d14: 24020005 li v0,5
- case PAD_UP:
- return PAD_UP_INDEX;
- break;
-
- case PAD_RIGHT:
- return PAD_RIGHT_INDEX;
-80026d18: 24020007 li v0,7
- return ( !(pad2 & key) && (previous_pad2 & key) );
-}
-
-uint8_t PadGetKeyIndex(unsigned short key)
-{
- switch(key)
-80026d1c: 24032000 li v1,8192
-80026d20: 10830002 beq a0,v1,80026d2c <PadGetKeyIndex+0xb4>
-80026d24: 00000000 nop
- case PAD_R2:
- return PAD_R2_INDEX;
- break;
-
- default:
- return NUMBER_OF_KEYS;
-80026d28: 2402000c li v0,12
- break;
- }
-}
-80026d2c: 03e00008 jr ra
-80026d30: 00000000 nop
-
-80026d34 <PadOneKeyRepeat>:
-{
- return (bool)( pad2 & key );
-}
-
-bool PadOneKeyRepeat(unsigned short key, uint8_t time)
-{
-80026d34: 27bdffe8 addiu sp,sp,-24
-80026d38: afbf0014 sw ra,20(sp)
- uint8_t key_index = PadGetKeyIndex(key);
-80026d3c: 0c009b1e jal 80026c78 <PadGetKeyIndex>
-80026d40: 3084ffff andi a0,a0,0xffff
-
- if(key_index == NUMBER_OF_KEYS)
-80026d44: 2403000c li v1,12
-80026d48: 14430003 bne v0,v1,80026d58 <PadOneKeyRepeat+0x24>
-80026d4c: 3c038004 lui v1,0x8004
- {
- return false;
-80026d50: 1000000e b 80026d8c <PadOneKeyRepeat+0x58>
-80026d54: 00001021 move v0,zero
- }
-
- pad1_keys_repeat[key_index]++;
-80026d58: 24636040 addiu v1,v1,24640
-80026d5c: 00431021 addu v0,v0,v1
-80026d60: 90430000 lbu v1,0(v0)
-80026d64: 30a500ff andi a1,a1,0xff
-80026d68: 24630001 addiu v1,v1,1
-80026d6c: 306300ff andi v1,v1,0xff
-
- if(pad1_keys_repeat[key_index] >= time)
-80026d70: 0065282b sltu a1,v1,a1
-80026d74: 10a00003 beqz a1,80026d84 <PadOneKeyRepeat+0x50>
-80026d78: 00000000 nop
- if(key_index == NUMBER_OF_KEYS)
- {
- return false;
- }
-
- pad1_keys_repeat[key_index]++;
-80026d7c: 1000fff4 b 80026d50 <PadOneKeyRepeat+0x1c>
-80026d80: a0430000 sb v1,0(v0)
-
- if(pad1_keys_repeat[key_index] >= time)
- {
- pad1_keys_repeat[key_index] = 0;
-80026d84: a0400000 sb zero,0(v0)
- return true;
-80026d88: 24020001 li v0,1
- }
-
- return false;
-}
-80026d8c: 8fbf0014 lw ra,20(sp)
-80026d90: 00000000 nop
-80026d94: 03e00008 jr ra
-80026d98: 27bd0018 addiu sp,sp,24
-
-80026d9c <PadTwoKeyRepeat>:
-
-bool PadTwoKeyRepeat(unsigned short key, uint8_t time)
-{
-80026d9c: 27bdffe8 addiu sp,sp,-24
-80026da0: afbf0014 sw ra,20(sp)
- uint8_t key_index = PadGetKeyIndex(key);
-80026da4: 0c009b1e jal 80026c78 <PadGetKeyIndex>
-80026da8: 3084ffff andi a0,a0,0xffff
-
- if(key_index == NUMBER_OF_KEYS)
-80026dac: 2403000c li v1,12
-80026db0: 14430003 bne v0,v1,80026dc0 <PadTwoKeyRepeat+0x24>
-80026db4: 3c038004 lui v1,0x8004
- {
- return false;
-80026db8: 1000000e b 80026df4 <PadTwoKeyRepeat+0x58>
-80026dbc: 00001021 move v0,zero
- }
-
- pad2_keys_repeat[key_index]++;
-80026dc0: 24636034 addiu v1,v1,24628
-80026dc4: 00431021 addu v0,v0,v1
-80026dc8: 90430000 lbu v1,0(v0)
-80026dcc: 30a500ff andi a1,a1,0xff
-80026dd0: 24630001 addiu v1,v1,1
-80026dd4: 306300ff andi v1,v1,0xff
-
- if(pad2_keys_repeat[key_index] >= time)
-80026dd8: 0065282b sltu a1,v1,a1
-80026ddc: 10a00003 beqz a1,80026dec <PadTwoKeyRepeat+0x50>
-80026de0: 00000000 nop
- if(key_index == NUMBER_OF_KEYS)
- {
- return false;
- }
-
- pad2_keys_repeat[key_index]++;
-80026de4: 1000fff4 b 80026db8 <PadTwoKeyRepeat+0x1c>
-80026de8: a0430000 sb v1,0(v0)
-
- if(pad2_keys_repeat[key_index] >= time)
- {
- pad2_keys_repeat[key_index] = 0;
-80026dec: a0400000 sb zero,0(v0)
- return true;
-80026df0: 24020001 li v0,1
- }
-
- return false;
-}
-80026df4: 8fbf0014 lw ra,20(sp)
-80026df8: 00000000 nop
-80026dfc: 03e00008 jr ra
-80026e00: 27bd0018 addiu sp,sp,24
-
-80026e04 <PadOneGetAddress>:
-}
-
-unsigned short * PadOneGetAddress(void)
-{
- return &pad1;
-}
-80026e04: 3c028007 lui v0,0x8007
-80026e08: 03e00008 jr ra
-80026e0c: 24421c7a addiu v0,v0,7290
-
-80026e10 <PadClearData>:
-
-void PadClearData(void)
-{
- pad1 = 0;
-80026e10: 3c028007 lui v0,0x8007
-80026e14: a4401c7a sh zero,7290(v0)
- pad2 = 0;
-80026e18: 3c028007 lui v0,0x8007
-80026e1c: a4401c78 sh zero,7288(v0)
-
- previous_pad1 = 0;
-80026e20: 3c028007 lui v0,0x8007
-80026e24: a4401c76 sh zero,7286(v0)
- previous_pad2 = 0;
-80026e28: 3c028007 lui v0,0x8007
-80026e2c: 03e00008 jr ra
-80026e30: a4401c74 sh zero,7284(v0)
-
-80026e34 <PadInit>:
-}
-
-void PadInit(void)
-{
- pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
-80026e34: 3c068002 lui a2,0x8002
- previous_pad1 = 0;
- previous_pad2 = 0;
-}
-
-void PadInit(void)
-{
-80026e38: 27bdffe8 addiu sp,sp,-24
- pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
-80026e3c: 24c66a2c addiu a2,a2,27180
-80026e40: 24050001 li a1,1
- previous_pad1 = 0;
- previous_pad2 = 0;
-}
-
-void PadInit(void)
-{
-80026e44: afbf0014 sw ra,20(sp)
- pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
-80026e48: 0c00a075 jal 800281d4 <SystemCreateTimer>
-80026e4c: 24040002 li a0,2
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
-80026e50: 3c068002 lui a2,0x8002
- previous_pad2 = 0;
-}
-
-void PadInit(void)
-{
- pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
-80026e54: 3c038007 lui v1,0x8007
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
-80026e58: 24c66a18 addiu a2,a2,27160
-80026e5c: 24050001 li a1,1
-80026e60: 24040002 li a0,2
-80026e64: 0c00a075 jal 800281d4 <SystemCreateTimer>
-80026e68: ac621c6c sw v0,7276(v1)
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-}
-80026e6c: 8fbf0014 lw ra,20(sp)
-
-void PadInit(void)
-{
- pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-80026e70: 3c048004 lui a0,0x8004
-}
-
-void PadInit(void)
-{
- pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
-80026e74: 3c038007 lui v1,0x8007
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-80026e78: 24060240 li a2,576
-80026e7c: 00002821 move a1,zero
-80026e80: 24845fb4 addiu a0,a0,24500
-}
-80026e84: 27bd0018 addiu sp,sp,24
-
-void PadInit(void)
-{
- pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
- pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
-80026e88: 0800d7ab j 80035eac <memset>
-80026e8c: ac621c68 sw v0,7272(v1)
-
-80026e90 <PadAddCheat>:
-
-bool PadAddCheat(TYPE_CHEAT * cheat)
-{
- static uint8_t idx = 0;
-
- if(idx >= PAD_MAX_CHEATS)
-80026e90: 3c038007 lui v1,0x8007
-80026e94: 90621c64 lbu v0,7268(v1)
-80026e98: 00000000 nop
-80026e9c: 2c450010 sltiu a1,v0,16
-80026ea0: 14a0000a bnez a1,80026ecc <PadAddCheat+0x3c>
-80026ea4: 24450001 addiu a1,v0,1
- {
- dprintf("Maximum number of cheats exceeded!\n");
-80026ea8: 3c048004 lui a0,0x8004
-
- cheat_array[j] = key;
-}
-
-bool PadAddCheat(TYPE_CHEAT * cheat)
-{
-80026eac: 27bdffe8 addiu sp,sp,-24
-80026eb0: afbf0014 sw ra,20(sp)
- static uint8_t idx = 0;
-
- if(idx >= PAD_MAX_CHEATS)
- {
- dprintf("Maximum number of cheats exceeded!\n");
-80026eb4: 0c00ed8f jal 8003b63c <printf>
-80026eb8: 24840fd4 addiu a0,a0,4052
- }
-
- cheatsArray[idx++] = cheat;
-
- return true;
-}
-80026ebc: 8fbf0014 lw ra,20(sp)
- static uint8_t idx = 0;
-
- if(idx >= PAD_MAX_CHEATS)
- {
- dprintf("Maximum number of cheats exceeded!\n");
- return false;
-80026ec0: 00001021 move v0,zero
- }
-
- cheatsArray[idx++] = cheat;
-
- return true;
-}
-80026ec4: 03e00008 jr ra
-80026ec8: 27bd0018 addiu sp,sp,24
- {
- dprintf("Maximum number of cheats exceeded!\n");
- return false;
- }
-
- cheatsArray[idx++] = cheat;
-80026ecc: a0651c64 sb a1,7268(v1)
-80026ed0: 3c038004 lui v1,0x8004
-80026ed4: 24635fb4 addiu v1,v1,24500
-80026ed8: 00021080 sll v0,v0,0x2
-80026edc: 00431021 addu v0,v0,v1
-80026ee0: ac440000 sw a0,0(v0)
-
- return true;
-80026ee4: 03e00008 jr ra
-80026ee8: 24020001 li v0,1
-
-80026eec <PltParserLoadFile>:
- * Local Prototypes
- * *************************************/
-static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData);
-
-bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80026eec: 27bdff48 addiu sp,sp,-184
-80026ef0: afb00090 sw s0,144(sp)
- char * lineBufferPtr;
- char * pltBufferSavePtr;
- char strHour[PLT_HOUR_MINUTE_CHARACTERS];
- char strMinutes[PLT_HOUR_MINUTE_CHARACTERS];
-
- if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false)
-80026ef4: 3c108004 lui s0,0x8004
- * Local Prototypes
- * *************************************/
-static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData);
-
-bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80026ef8: afb10094 sw s1,148(sp)
- char * lineBufferPtr;
- char * pltBufferSavePtr;
- char strHour[PLT_HOUR_MINUTE_CHARACTERS];
- char strMinutes[PLT_HOUR_MINUTE_CHARACTERS];
-
- if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false)
-80026efc: 24062800 li a2,10240
- * Local Prototypes
- * *************************************/
-static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData);
-
-bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80026f00: 00a08821 move s1,a1
- char * lineBufferPtr;
- char * pltBufferSavePtr;
- char strHour[PLT_HOUR_MINUTE_CHARACTERS];
- char strMinutes[PLT_HOUR_MINUTE_CHARACTERS];
-
- if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false)
-80026f04: 2605604c addiu a1,s0,24652
- * Local Prototypes
- * *************************************/
-static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData);
-
-bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData)
-{
-80026f08: afb500a4 sw s5,164(sp)
-80026f0c: afb20098 sw s2,152(sp)
-80026f10: afbf00b4 sw ra,180(sp)
-80026f14: afbe00b0 sw s8,176(sp)
-80026f18: afb700ac sw s7,172(sp)
-80026f1c: afb600a8 sw s6,168(sp)
-80026f20: afb400a0 sw s4,160(sp)
-80026f24: afb3009c sw s3,156(sp)
- char * lineBufferPtr;
- char * pltBufferSavePtr;
- char strHour[PLT_HOUR_MINUTE_CHARACTERS];
- char strMinutes[PLT_HOUR_MINUTE_CHARACTERS];
-
- if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false)
-80026f28: 0c009fd8 jal 80027f60 <SystemLoadFileToBuffer>
-80026f2c: 00809021 move s2,a0
-80026f30: 14400005 bnez v0,80026f48 <PltParserLoadFile+0x5c>
-80026f34: 0040a821 move s5,v0
- {
- dprintf("Error loading file %s!\n",strPath);
-80026f38: 3c048004 lui a0,0x8004
-80026f3c: 02402821 move a1,s2
-80026f40: 1000012d b 800273f8 <PltParserLoadFile+0x50c>
-80026f44: 24840ff8 addiu a0,a0,4088
-80026f48: 02009821 move s3,s0
-80026f4c: 26320180 addiu s2,s1,384
-80026f50: 26300080 addiu s0,s1,128
-{
- uint8_t i;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT ; i++)
- {
- memset(ptrFlightData->strFlightNumber[i],'\0',GAME_MAX_CHARACTERS);
-80026f54: 02002021 move a0,s0
-80026f58: 24060008 li a2,8
-80026f5c: 00002821 move a1,zero
-80026f60: 0c00d7ab jal 80035eac <memset>
-80026f64: 26100008 addiu s0,s0,8
-
-void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint8_t i;
-
- for(i = 0; i < GAME_MAX_AIRCRAFT ; i++)
-80026f68: 1612fffa bne s0,s2,80026f54 <PltParserLoadFile+0x68>
-80026f6c: 24060020 li a2,32
- {
- memset(ptrFlightData->strFlightNumber[i],'\0',GAME_MAX_CHARACTERS);
- }
-
- memset(ptrFlightData->FlightDirection,DEPARTURE,GAME_MAX_AIRCRAFT);
-80026f70: 24050001 li a1,1
-80026f74: 0c00d7ab jal 80035eac <memset>
-80026f78: 02202021 move a0,s1
- memset(ptrFlightData->Passengers,0,GAME_MAX_AIRCRAFT);
-80026f7c: 02002021 move a0,s0
-80026f80: 24060020 li a2,32
-80026f84: 0c00d7ab jal 80035eac <memset>
-80026f88: 00002821 move a1,zero
- memset(ptrFlightData->Hours,0,GAME_MAX_AIRCRAFT);
-80026f8c: 24060020 li a2,32
-80026f90: 00002821 move a1,zero
-80026f94: 0c00d7ab jal 80035eac <memset>
-80026f98: 262401a0 addiu a0,s1,416
- memset(ptrFlightData->Minutes,0,GAME_MAX_AIRCRAFT);
-80026f9c: 24060020 li a2,32
-80026fa0: 00002821 move a1,zero
-80026fa4: 0c00d7ab jal 80035eac <memset>
-80026fa8: 262401c0 addiu a0,s1,448
- memset(ptrFlightData->State,STATE_IDLE,GAME_MAX_AIRCRAFT);
-80026fac: 24060020 li a2,32
-80026fb0: 00002821 move a1,zero
-80026fb4: 0c00d7ab jal 80035eac <memset>
-80026fb8: 26240204 addiu a0,s1,516
- memset(ptrFlightData->NotificationRequest,0,GAME_MAX_AIRCRAFT);
-80026fbc: 24060020 li a2,32
-80026fc0: 00002821 move a1,zero
-80026fc4: 0c00d7ab jal 80035eac <memset>
-80026fc8: 26240284 addiu a0,s1,644
-
- PltParserResetBuffers(ptrFlightData);
-
- // Now, buffer shall be read from line to line
-
- buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr);
-80026fcc: 3c128004 lui s2,0x8004
- memset(ptrFlightData->Passengers,0,GAME_MAX_AIRCRAFT);
- memset(ptrFlightData->Hours,0,GAME_MAX_AIRCRAFT);
- memset(ptrFlightData->Minutes,0,GAME_MAX_AIRCRAFT);
- memset(ptrFlightData->State,STATE_IDLE,GAME_MAX_AIRCRAFT);
- memset(ptrFlightData->NotificationRequest,0,GAME_MAX_AIRCRAFT);
- memset(ptrFlightData->Parking,0,GAME_MAX_AIRCRAFT);
-80026fd0: 24060020 li a2,32
-80026fd4: 00002821 move a1,zero
-80026fd8: 0c00d7ab jal 80035eac <memset>
-80026fdc: 262401e0 addiu a0,s1,480
-
- PltParserResetBuffers(ptrFlightData);
-
- // Now, buffer shall be read from line to line
-
- buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr);
-80026fe0: 2664604c addiu a0,s3,24652
-80026fe4: 27a60074 addiu a2,sp,116
-80026fe8: 0c00dda6 jal 80037698 <strtok_r>
-80026fec: 264508dc addiu a1,s2,2268
- FLIGHT_NUMBER_INDEX,
- PASSENGERS_INDEX,
- HOURS_MINUTES_INDEX,
- PARKING_INDEX
- };*/
- switch(i)
-80026ff0: 3c168004 lui s6,0x8004
-
- PltParserResetBuffers(ptrFlightData);
-
- // Now, buffer shall be read from line to line
-
- buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr);
-80026ff4: 00409821 move s3,v0
- else
- {
- // File header (initial game time) has already been read
- strncpy(lineBuffer, buffer, LINE_MAX);
-
- lineBufferPtr = strtok(lineBuffer,";");
-80026ff8: 3c178004 lui s7,0x8004
- FLIGHT_NUMBER_INDEX,
- PASSENGERS_INDEX,
- HOURS_MINUTES_INDEX,
- PARKING_INDEX
- };*/
- switch(i)
-80026ffc: 26c2f804 addiu v0,s6,-2044
-bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData)
-{
- uint8_t i;
- uint8_t j;
- uint8_t aircraftIndex;
- bool first_line_read = false;
-80027000: 0000a021 move s4,zero
-
- // Now, buffer shall be read from line to line
-
- buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr);
-
- aircraftIndex = 0;
-80027004: 00008021 move s0,zero
- FLIGHT_NUMBER_INDEX,
- PASSENGERS_INDEX,
- HOURS_MINUTES_INDEX,
- PARKING_INDEX
- };*/
- switch(i)
-80027008: afa20080 sw v0,128(sp)
-
- default:
- break;
- }
-
- lineBufferPtr = strtok(NULL,";");
-8002700c: 26fe1030 addiu s8,s7,4144
-
- buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr);
-
- aircraftIndex = 0;
-
- while(buffer != NULL)
-80027010: 126000f4 beqz s3,800273e4 <PltParserLoadFile+0x4f8>
-80027014: 24020023 li v0,35
- {
- if(buffer[0] == '#')
-80027018: 82630000 lb v1,0(s3)
-8002701c: 00000000 nop
-80027020: 14620006 bne v1,v0,8002703c <PltParserLoadFile+0x150>
-80027024: 27a60074 addiu a2,sp,116
- {
- // Comment line
- buffer = strtok_r(NULL,"\n",&pltBufferSavePtr);
-80027028: 264508dc addiu a1,s2,2268
-8002702c: 0c00dda6 jal 80037698 <strtok_r>
-80027030: 00002021 move a0,zero
- continue;
-80027034: 1000fff6 b 80027010 <PltParserLoadFile+0x124>
-80027038: 00409821 move s3,v0
- }
-
- if(first_line_read == false)
-8002703c: 1680003e bnez s4,80027138 <PltParserLoadFile+0x24c>
-80027040: 24060064 li a2,100
- {
- // First (non-comment) line should indicate level time
- // i.e.: 10:30, or 22:45
- first_line_read = true;
-
- if(strlen(buffer) != PLT_FIRST_LINE_CHARACTERS)
-80027044: 0c00d8af jal 800362bc <strlen>
-80027048: 02602021 move a0,s3
-8002704c: 24030005 li v1,5
-80027050: 144300ed bne v0,v1,80027408 <PltParserLoadFile+0x51c>
-80027054: 2402003a li v0,58
- // Format should always be HH:MM (5 characters)
- // Treat any other combination as possible error
- return false;
- }
-
- if(buffer[PLT_COLON_POSITION] != ':')
-80027058: 82630002 lb v1,2(s3)
-8002705c: 00000000 nop
-80027060: 146200e9 bne v1,v0,80027408 <PltParserLoadFile+0x51c>
-80027064: 00001021 move v0,zero
-
- j = 0;
-
- for(i = 0; i < PLT_FIRST_LINE_CHARACTERS ; i++)
- {
- if(i == PLT_COLON_POSITION)
-80027068: 24070002 li a3,2
- {
- j = 0;
- buffer = strtok(NULL,"\n");
-8002706c: 264808dc addiu t0,s2,2268
- return false;
- }
-
- j = 0;
-
- for(i = 0; i < PLT_FIRST_LINE_CHARACTERS ; i++)
-80027070: 24160005 li s6,5
- {
- if(i == PLT_COLON_POSITION)
-80027074: 1687000b bne s4,a3,800270a4 <PltParserLoadFile+0x1b8>
-80027078: 328300ff andi v1,s4,0xff
- {
- j = 0;
- buffer = strtok(NULL,"\n");
-8002707c: 01002821 move a1,t0
-80027080: 00002021 move a0,zero
-80027084: afa70088 sw a3,136(sp)
-80027088: 0c00ddea jal 800377a8 <strtok>
-8002708c: afa80084 sw t0,132(sp)
-80027090: 00409821 move s3,v0
- continue;
-80027094: 8fa80084 lw t0,132(sp)
-80027098: 8fa70088 lw a3,136(sp)
-8002709c: 1000000f b 800270dc <PltParserLoadFile+0x1f0>
-800270a0: 00001021 move v0,zero
- }
- else if(i < PLT_COLON_POSITION)
-800270a4: 2c630002 sltiu v1,v1,2
-800270a8: 24440001 addiu a0,v0,1
-800270ac: 10600006 beqz v1,800270c8 <PltParserLoadFile+0x1dc>
-800270b0: 02742821 addu a1,s3,s4
- {
- strHour[j++] = buffer[i];
-800270b4: 80a30000 lb v1,0(a1)
-800270b8: 27a50010 addiu a1,sp,16
-800270bc: 00a21021 addu v0,a1,v0
-800270c0: 10000005 b 800270d8 <PltParserLoadFile+0x1ec>
-800270c4: a043006c sb v1,108(v0)
- }
- else
- {
- strMinutes[j++] = buffer[i];
-800270c8: 80a30000 lb v1,0(a1)
-800270cc: 27a50010 addiu a1,sp,16
-800270d0: 00a21021 addu v0,a1,v0
-800270d4: a0430068 sb v1,104(v0)
-800270d8: 308200ff andi v0,a0,0xff
-800270dc: 26940001 addiu s4,s4,1
- return false;
- }
-
- j = 0;
-
- for(i = 0; i < PLT_FIRST_LINE_CHARACTERS ; i++)
-800270e0: 1696ffe4 bne s4,s6,80027074 <PltParserLoadFile+0x188>
-800270e4: 00000000 nop
- {
- strMinutes[j++] = buffer[i];
- }
- }
-
- GameSetTime((uint8_t)atoi(strHour),(uint8_t)atoi(strMinutes) );
-800270e8: 0c00df72 jal 80037dc8 <atoi>
-800270ec: 27a4007c addiu a0,sp,124
-800270f0: 27a40078 addiu a0,sp,120
-800270f4: 0c00df72 jal 80037dc8 <atoi>
-800270f8: 00409821 move s3,v0
-800270fc: 304500ff andi a1,v0,0xff
-80027100: 0c008c70 jal 800231c0 <GameSetTime>
-80027104: 326400ff andi a0,s3,0xff
- dprintf("Game time set to %.2d:%.2d.\n",(uint8_t)atoi(strHour),(uint8_t)atoi(strMinutes) );
-80027108: 0c00df72 jal 80037dc8 <atoi>
-8002710c: 27a4007c addiu a0,sp,124
-80027110: 27a40078 addiu a0,sp,120
-80027114: 0c00df72 jal 80037dc8 <atoi>
-80027118: 00409821 move s3,v0
-8002711c: 3c048004 lui a0,0x8004
-80027120: 304600ff andi a2,v0,0xff
-80027124: 326500ff andi a1,s3,0xff
-80027128: 0c00ed8f jal 8003b63c <printf>
-8002712c: 24841010 addiu a0,a0,4112
-80027130: 100000a6 b 800273cc <PltParserLoadFile+0x4e0>
-80027134: 27a60074 addiu a2,sp,116
- }
- else
- {
- // File header (initial game time) has already been read
- strncpy(lineBuffer, buffer, LINE_MAX);
-80027138: 02602821 move a1,s3
-8002713c: 0c00d860 jal 80036180 <strncpy>
-80027140: 27a40010 addiu a0,sp,16
-
- lineBufferPtr = strtok(lineBuffer,";");
-80027144: 26e51030 addiu a1,s7,4144
-80027148: 0c00ddea jal 800377a8 <strtok>
-8002714c: 27a40010 addiu a0,sp,16
- dprintf("Flight direction is not correct!\n");
- }
- break;
-
- case FLIGHT_NUMBER_INDEX:
- strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS);
-80027150: 26140010 addiu s4,s0,16
-
- lineBufferPtr = strtok(lineBuffer,";");
-
- i = 0;
-
- dprintf("New line read: %s\n",buffer);
-80027154: 3c048004 lui a0,0x8004
-80027158: 02602821 move a1,s3
-8002715c: 24841034 addiu a0,a0,4148
- dprintf("Flight direction is not correct!\n");
- }
- break;
-
- case FLIGHT_NUMBER_INDEX:
- strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS);
-80027160: 0014a0c0 sll s4,s4,0x3
- else
- {
- // File header (initial game time) has already been read
- strncpy(lineBuffer, buffer, LINE_MAX);
-
- lineBufferPtr = strtok(lineBuffer,";");
-80027164: 0040b021 move s6,v0
-
- i = 0;
-
- dprintf("New line read: %s\n",buffer);
-80027168: 0c00ed8f jal 8003b63c <printf>
-8002716c: 00009821 move s3,zero
- dprintf("Flight direction is not correct!\n");
- }
- break;
-
- case FLIGHT_NUMBER_INDEX:
- strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS);
-80027170: 0234a021 addu s4,s1,s4
-
- i = 0;
-
- dprintf("New line read: %s\n",buffer);
-
- while(lineBufferPtr != NULL)
-80027174: 12c0008c beqz s6,800273a8 <PltParserLoadFile+0x4bc>
-80027178: 2e620005 sltiu v0,s3,5
- FLIGHT_NUMBER_INDEX,
- PASSENGERS_INDEX,
- HOURS_MINUTES_INDEX,
- PARKING_INDEX
- };*/
- switch(i)
-8002717c: 10400083 beqz v0,8002738c <PltParserLoadFile+0x4a0>
-80027180: 00131080 sll v0,s3,0x2
-80027184: 8fa30080 lw v1,128(sp)
-80027188: 00000000 nop
-8002718c: 00621021 addu v0,v1,v0
-80027190: 8c420000 lw v0,0(v0)
-80027194: 00000000 nop
-80027198: 00400008 jr v0
-8002719c: 00000000 nop
- {
- case DEPARTURE_ARRIVAL_INDEX:
-
- if(strncmp(lineBufferPtr,"DEPARTURE",strlen("DEPARTURE") ) == 0)
-800271a0: 3c058004 lui a1,0x8004
-800271a4: 24a41048 addiu a0,a1,4168
-800271a8: 0c00d8af jal 800362bc <strlen>
-800271ac: afa50084 sw a1,132(sp)
-800271b0: 8fa50084 lw a1,132(sp)
-800271b4: 00403021 move a2,v0
-800271b8: 24a51048 addiu a1,a1,4168
-800271bc: 0c00d9dd jal 80036774 <strncmp>
-800271c0: 02c02021 move a0,s6
-800271c4: 14400008 bnez v0,800271e8 <PltParserLoadFile+0x2fc>
-800271c8: 00101080 sll v0,s0,0x2
- {
- ptrFlightData->FlightDirection[aircraftIndex] = DEPARTURE;
-800271cc: 02221021 addu v0,s1,v0
-800271d0: 24030001 li v1,1
- dprintf("Aircraft %d set to DEPARTURE.\n",aircraftIndex);
-800271d4: 3c048004 lui a0,0x8004
- {
- case DEPARTURE_ARRIVAL_INDEX:
-
- if(strncmp(lineBufferPtr,"DEPARTURE",strlen("DEPARTURE") ) == 0)
- {
- ptrFlightData->FlightDirection[aircraftIndex] = DEPARTURE;
-800271d8: ac430000 sw v1,0(v0)
- dprintf("Aircraft %d set to DEPARTURE.\n",aircraftIndex);
-800271dc: 02002821 move a1,s0
-800271e0: 10000013 b 80027230 <PltParserLoadFile+0x344>
-800271e4: 24841054 addiu a0,a0,4180
- }
- else if(strncmp(lineBufferPtr,"ARRIVAL",strlen("ARRIVAL") ) == 0)
-800271e8: 3c058004 lui a1,0x8004
-800271ec: 24a41074 addiu a0,a1,4212
-800271f0: 0c00d8af jal 800362bc <strlen>
-800271f4: afa50084 sw a1,132(sp)
-800271f8: 8fa50084 lw a1,132(sp)
-800271fc: 00403021 move a2,v0
-80027200: 24a51074 addiu a1,a1,4212
-80027204: 0c00d9dd jal 80036774 <strncmp>
-80027208: 02c02021 move a0,s6
-8002720c: 1440000c bnez v0,80027240 <PltParserLoadFile+0x354>
-80027210: 3c048004 lui a0,0x8004
- {
- ptrFlightData->FlightDirection[aircraftIndex] = ARRIVAL;
-80027214: 00101080 sll v0,s0,0x2
-80027218: 02221021 addu v0,s1,v0
-8002721c: 24030002 li v1,2
- dprintf("Aircraft %d set to ARRIVAL.\n",aircraftIndex);
-80027220: 3c048004 lui a0,0x8004
- ptrFlightData->FlightDirection[aircraftIndex] = DEPARTURE;
- dprintf("Aircraft %d set to DEPARTURE.\n",aircraftIndex);
- }
- else if(strncmp(lineBufferPtr,"ARRIVAL",strlen("ARRIVAL") ) == 0)
- {
- ptrFlightData->FlightDirection[aircraftIndex] = ARRIVAL;
-80027224: ac430000 sw v1,0(v0)
- dprintf("Aircraft %d set to ARRIVAL.\n",aircraftIndex);
-80027228: 02002821 move a1,s0
-8002722c: 2484107c addiu a0,a0,4220
-80027230: 0c00ed8f jal 8003b63c <printf>
-80027234: 00000000 nop
-80027238: 10000055 b 80027390 <PltParserLoadFile+0x4a4>
-8002723c: 03c02821 move a1,s8
- }
- else
- {
- dprintf("Flight direction is not correct!\n");
-80027240: 10000037 b 80027320 <PltParserLoadFile+0x434>
-80027244: 2484109c addiu a0,a0,4252
- }
- break;
-
- case FLIGHT_NUMBER_INDEX:
- strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS);
-80027248: 24060008 li a2,8
-8002724c: 02c02821 move a1,s6
-80027250: 0c00d860 jal 80036180 <strncpy>
-80027254: 02802021 move a0,s4
- ptrFlightData->strFlightNumber[aircraftIndex][GAME_MAX_CHARACTERS - 1] = '\0';
-80027258: 001010c0 sll v0,s0,0x3
-8002725c: 02221021 addu v0,s1,v0
- dprintf("Aircraft %d flight number set to %s.\n",aircraftIndex,ptrFlightData->strFlightNumber[aircraftIndex]);
-80027260: 3c048004 lui a0,0x8004
- }
- break;
-
- case FLIGHT_NUMBER_INDEX:
- strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS);
- ptrFlightData->strFlightNumber[aircraftIndex][GAME_MAX_CHARACTERS - 1] = '\0';
-80027264: a0400087 sb zero,135(v0)
- dprintf("Aircraft %d flight number set to %s.\n",aircraftIndex,ptrFlightData->strFlightNumber[aircraftIndex]);
-80027268: 02803021 move a2,s4
-8002726c: 02002821 move a1,s0
-80027270: 10000009 b 80027298 <PltParserLoadFile+0x3ac>
-80027274: 248410c0 addiu a0,a0,4288
- break;
-
- case PASSENGERS_INDEX:
- ptrFlightData->Passengers[aircraftIndex] = atoi(lineBufferPtr);
-80027278: 0c00df72 jal 80037dc8 <atoi>
-8002727c: 02c02021 move a0,s6
-80027280: 02301821 addu v1,s1,s0
- dprintf("Aircraft %d passengers set to %d.\n",aircraftIndex,ptrFlightData->Passengers[aircraftIndex]);
-80027284: 3c048004 lui a0,0x8004
- ptrFlightData->strFlightNumber[aircraftIndex][GAME_MAX_CHARACTERS - 1] = '\0';
- dprintf("Aircraft %d flight number set to %s.\n",aircraftIndex,ptrFlightData->strFlightNumber[aircraftIndex]);
- break;
-
- case PASSENGERS_INDEX:
- ptrFlightData->Passengers[aircraftIndex] = atoi(lineBufferPtr);
-80027288: a0620180 sb v0,384(v1)
- dprintf("Aircraft %d passengers set to %d.\n",aircraftIndex,ptrFlightData->Passengers[aircraftIndex]);
-8002728c: 304600ff andi a2,v0,0xff
-80027290: 02002821 move a1,s0
-80027294: 248410e8 addiu a0,a0,4328
-80027298: 0c00ed8f jal 8003b63c <printf>
-8002729c: 00000000 nop
- break;
-800272a0: 1000003b b 80027390 <PltParserLoadFile+0x4a4>
-800272a4: 03c02821 move a1,s8
-
- case PARKING_INDEX:
- if(ptrFlightData->FlightDirection[aircraftIndex] == DEPARTURE)
-800272a8: 00101080 sll v0,s0,0x2
-800272ac: 02221021 addu v0,s1,v0
-800272b0: 8c440000 lw a0,0(v0)
-800272b4: 24020001 li v0,1
-800272b8: 14820007 bne a0,v0,800272d8 <PltParserLoadFile+0x3ec>
-800272bc: 02302821 addu a1,s1,s0
- {
- ptrFlightData->Parking[aircraftIndex] = atoi(lineBufferPtr);
-800272c0: 02c02021 move a0,s6
-800272c4: 0c00df72 jal 80037dc8 <atoi>
-800272c8: afa50084 sw a1,132(sp)
-800272cc: 8fa50084 lw a1,132(sp)
-800272d0: 10000002 b 800272dc <PltParserLoadFile+0x3f0>
-800272d4: a0a201e0 sb v0,480(a1)
- }
- else
- {
- ptrFlightData->Parking[aircraftIndex] = 0;
-800272d8: a0a001e0 sb zero,480(a1)
- }
- dprintf("Aircraft %d parking set to %d.\n",aircraftIndex,ptrFlightData->Parking[aircraftIndex]);
-800272dc: 3c048004 lui a0,0x8004
-800272e0: 90a601e0 lbu a2,480(a1)
-800272e4: 2484110c addiu a0,a0,4364
-800272e8: 1000ffeb b 80027298 <PltParserLoadFile+0x3ac>
-800272ec: 02002821 move a1,s0
- break;
-
- case HOURS_MINUTES_INDEX:
- if( strlen(lineBufferPtr) != strlen("HH:MM") )
-800272f0: 0c00d8af jal 800362bc <strlen>
-800272f4: 02c02021 move a0,s6
-800272f8: 3c048004 lui a0,0x8004
-800272fc: 2484112c addiu a0,a0,4396
-80027300: 0c00d8af jal 800362bc <strlen>
-80027304: afa20084 sw v0,132(sp)
-80027308: 8fa50084 lw a1,132(sp)
-8002730c: 00000000 nop
-80027310: 10a20007 beq a1,v0,80027330 <PltParserLoadFile+0x444>
-80027314: 27a4007c addiu a0,sp,124
- {
- dprintf("Hour minute format is not correct!\n");
-80027318: 3c048004 lui a0,0x8004
-8002731c: 24841134 addiu a0,a0,4404
-80027320: 0c00ed8f jal 8003b63c <printf>
-80027324: 00000000 nop
- break;
-80027328: 10000019 b 80027390 <PltParserLoadFile+0x4a4>
-8002732c: 03c02821 move a1,s8
- }
-
- // Copy hour
- strHour[0] = lineBufferPtr[0];
-80027330: 82c20000 lb v0,0(s6)
-80027334: 00000000 nop
-80027338: a3a2007c sb v0,124(sp)
- strHour[1] = lineBufferPtr[1];
-8002733c: 82c20001 lb v0,1(s6)
-80027340: 00000000 nop
-80027344: a3a2007d sb v0,125(sp)
- // Copy minutes
- strMinutes[0] = lineBufferPtr[3];
-80027348: 92c20003 lbu v0,3(s6)
-8002734c: 00000000 nop
-80027350: a3a20078 sb v0,120(sp)
- strMinutes[1] = lineBufferPtr[4];
-80027354: 92c20004 lbu v0,4(s6)
-
- ptrFlightData->Hours[aircraftIndex] = (uint8_t)atoi(strHour);
-80027358: 0230b021 addu s6,s1,s0
-8002735c: 0c00df72 jal 80037dc8 <atoi>
-80027360: a3a20079 sb v0,121(sp)
-80027364: a2c201a0 sb v0,416(s6)
- ptrFlightData->Minutes[aircraftIndex] = (uint8_t)atoi(strMinutes);
-80027368: 0c00df72 jal 80037dc8 <atoi>
-8002736c: 27a40078 addiu a0,sp,120
-
- dprintf("Aircraft %d time set to %.2d:%.2d.\n", aircraftIndex,
-80027370: 3c048004 lui a0,0x8004
-80027374: 92c601a0 lbu a2,416(s6)
- // Copy minutes
- strMinutes[0] = lineBufferPtr[3];
- strMinutes[1] = lineBufferPtr[4];
-
- ptrFlightData->Hours[aircraftIndex] = (uint8_t)atoi(strHour);
- ptrFlightData->Minutes[aircraftIndex] = (uint8_t)atoi(strMinutes);
-80027378: a2c201c0 sb v0,448(s6)
-
- dprintf("Aircraft %d time set to %.2d:%.2d.\n", aircraftIndex,
-8002737c: 304700ff andi a3,v0,0xff
-80027380: 02002821 move a1,s0
-80027384: 0c00ed8f jal 8003b63c <printf>
-80027388: 24841158 addiu a0,a0,4440
-
- default:
- break;
- }
-
- lineBufferPtr = strtok(NULL,";");
-8002738c: 03c02821 move a1,s8
-80027390: 0c00ddea jal 800377a8 <strtok>
-80027394: 00002021 move a0,zero
- i++;
-80027398: 26730001 addiu s3,s3,1
-
- default:
- break;
- }
-
- lineBufferPtr = strtok(NULL,";");
-8002739c: 0040b021 move s6,v0
- i++;
-800273a0: 1000ff74 b 80027174 <PltParserLoadFile+0x288>
-800273a4: 327300ff andi s3,s3,0xff
- }
-
- ptrFlightData->State[aircraftIndex] = STATE_IDLE;
-800273a8: 26020080 addiu v0,s0,128
-800273ac: 00021080 sll v0,v0,0x2
-800273b0: 02221021 addu v0,s1,v0
-800273b4: ac400004 sw zero,4(v0)
- ptrFlightData->NotificationRequest[aircraftIndex] = false;
-800273b8: 02301021 addu v0,s1,s0
- aircraftIndex++;
-800273bc: 26100001 addiu s0,s0,1
- lineBufferPtr = strtok(NULL,";");
- i++;
- }
-
- ptrFlightData->State[aircraftIndex] = STATE_IDLE;
- ptrFlightData->NotificationRequest[aircraftIndex] = false;
-800273c0: a0400284 sb zero,644(v0)
- aircraftIndex++;
-800273c4: 321000ff andi s0,s0,0xff
- }
-
- buffer = strtok_r(NULL,"\n",&pltBufferSavePtr);
-800273c8: 27a60074 addiu a2,sp,116
-800273cc: 264508dc addiu a1,s2,2268
-800273d0: 0c00dda6 jal 80037698 <strtok_r>
-800273d4: 00002021 move a0,zero
-800273d8: 00409821 move s3,v0
-800273dc: 1000ff0c b 80027010 <PltParserLoadFile+0x124>
-800273e0: 24140001 li s4,1
- }
-
- ptrFlightData->nAircraft = aircraftIndex; //Set total number of aircraft used
- ptrFlightData->ActiveAircraft = 0;
-
- dprintf("Number of aircraft parsed: %d\n",ptrFlightData->nAircraft);
-800273e4: 3c048004 lui a0,0x8004
- }
-
- buffer = strtok_r(NULL,"\n",&pltBufferSavePtr);
- }
-
- ptrFlightData->nAircraft = aircraftIndex; //Set total number of aircraft used
-800273e8: a2300200 sb s0,512(s1)
- ptrFlightData->ActiveAircraft = 0;
-800273ec: a2200201 sb zero,513(s1)
-
- dprintf("Number of aircraft parsed: %d\n",ptrFlightData->nAircraft);
-800273f0: 02002821 move a1,s0
-800273f4: 2484117c addiu a0,a0,4476
-800273f8: 0c00ed8f jal 8003b63c <printf>
-800273fc: 00000000 nop
-
- return true;
-80027400: 10000002 b 8002740c <PltParserLoadFile+0x520>
-80027404: 00000000 nop
-
- if(strlen(buffer) != PLT_FIRST_LINE_CHARACTERS)
- {
- // Format should always be HH:MM (5 characters)
- // Treat any other combination as possible error
- return false;
-80027408: 0000a821 move s5,zero
- ptrFlightData->ActiveAircraft = 0;
-
- dprintf("Number of aircraft parsed: %d\n",ptrFlightData->nAircraft);
-
- return true;
-}
-8002740c: 8fbf00b4 lw ra,180(sp)
-80027410: 02a01021 move v0,s5
-80027414: 8fbe00b0 lw s8,176(sp)
-80027418: 8fb700ac lw s7,172(sp)
-8002741c: 8fb600a8 lw s6,168(sp)
-80027420: 8fb500a4 lw s5,164(sp)
-80027424: 8fb400a0 lw s4,160(sp)
-80027428: 8fb3009c lw s3,156(sp)
-8002742c: 8fb20098 lw s2,152(sp)
-80027430: 8fb10094 lw s1,148(sp)
-80027434: 8fb00090 lw s0,144(sp)
-80027438: 03e00008 jr ra
-8002743c: 27bd00b8 addiu sp,sp,184
-
-80027440 <PSXSDKIntroDrawChar>:
-SsVag TrayClSnd;
-SsVag SpinDiskSnd;
-
-void PSXSDKIntroDrawChar(short x, short y, char ch)
-{
- PSXSDKIntroFont.w = FONT_SIZE;
-80027440: 3c038007 lui v1,0x8007
-80027444: 2462d1ec addiu v0,v1,-11796
-80027448: 24070010 li a3,16
- PSXSDKIntroFont.h = FONT_SIZE;
- PSXSDKIntroFont.tpage = FONT_TPAGE;
-
- if( (ch >= 'A') && (ch <= 'Z') )
-8002744c: 24c6ffbf addiu a2,a2,-65
-SsVag TrayClSnd;
-SsVag SpinDiskSnd;
-
-void PSXSDKIntroDrawChar(short x, short y, char ch)
-{
- PSXSDKIntroFont.w = FONT_SIZE;
-80027450: a4470006 sh a3,6(v0)
- PSXSDKIntroFont.h = FONT_SIZE;
-80027454: a4470008 sh a3,8(v0)
- PSXSDKIntroFont.tpage = FONT_TPAGE;
-
- if( (ch >= 'A') && (ch <= 'Z') )
-80027458: 30c600ff andi a2,a2,0xff
-
-void PSXSDKIntroDrawChar(short x, short y, char ch)
-{
- PSXSDKIntroFont.w = FONT_SIZE;
- PSXSDKIntroFont.h = FONT_SIZE;
- PSXSDKIntroFont.tpage = FONT_TPAGE;
-8002745c: 24070006 li a3,6
-80027460: a0470011 sb a3,17(v0)
-
- if( (ch >= 'A') && (ch <= 'Z') )
-80027464: 2cc7001a sltiu a3,a2,26
-80027468: 10e00011 beqz a3,800274b0 <PSXSDKIntroDrawChar+0x70>
-8002746c: 00063600 sll a2,a2,0x18
- {
- ch -= 'A'; // Reset offset
-80027470: 00063603 sra a2,a2,0x18
-
- PSXSDKIntroFont.x = x;
-80027474: a464d1ec sh a0,-11796(v1)
- PSXSDKIntroFont.y = y;
-
- PSXSDKIntroFont.u = FONT_U + ( (ch % FONT_COLUMNS) << FONT_SIZE_BITSHIFT);
-80027478: 24030005 li v1,5
-8002747c: 14600002 bnez v1,80027488 <PSXSDKIntroDrawChar+0x48>
-80027480: 00c3001a div zero,a2,v1
-80027484: 0007000d break 0x7
- PSXSDKIntroFont.v = FONT_V + ((short)(ch / FONT_COLUMNS) << FONT_SIZE_BITSHIFT);
-
- GfxSortSprite(&PSXSDKIntroFont);
-80027488: 00402021 move a0,v0
- if( (ch >= 'A') && (ch <= 'Z') )
- {
- ch -= 'A'; // Reset offset
-
- PSXSDKIntroFont.x = x;
- PSXSDKIntroFont.y = y;
-8002748c: a4450002 sh a1,2(v0)
-
- PSXSDKIntroFont.u = FONT_U + ( (ch % FONT_COLUMNS) << FONT_SIZE_BITSHIFT);
-80027490: 00003012 mflo a2
- PSXSDKIntroFont.v = FONT_V + ((short)(ch / FONT_COLUMNS) << FONT_SIZE_BITSHIFT);
-80027494: 00063100 sll a2,a2,0x4
-80027498: 24c6004c addiu a2,a2,76
- ch -= 'A'; // Reset offset
-
- PSXSDKIntroFont.x = x;
- PSXSDKIntroFont.y = y;
-
- PSXSDKIntroFont.u = FONT_U + ( (ch % FONT_COLUMNS) << FONT_SIZE_BITSHIFT);
-8002749c: 00001810 mfhi v1
-800274a0: 00031900 sll v1,v1,0x4
-800274a4: a0430004 sb v1,4(v0)
- PSXSDKIntroFont.v = FONT_V + ((short)(ch / FONT_COLUMNS) << FONT_SIZE_BITSHIFT);
-
- GfxSortSprite(&PSXSDKIntroFont);
-800274a8: 080090d2 j 80024348 <GfxSortSprite>
-800274ac: a0460005 sb a2,5(v0)
-800274b0: 03e00008 jr ra
-800274b4: 00000000 nop
-
-800274b8 <PSXSDKIntro>:
- return;
- }
-}
-
-void PSXSDKIntro(void)
-{
-800274b8: 27bdffa0 addiu sp,sp,-96
- PSXSDKIntroRandTextEvent = false;
- PSXSDKIntroRandTextEventReminder = false;
- PSXSDKIntroStringEvent = false;
- PSXSDKIntroClose = false;
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-800274bc: 24040080 li a0,128
- return;
- }
-}
-
-void PSXSDKIntro(void)
-{
-800274c0: afb70054 sw s7,84(sp)
-800274c4: afb60050 sw s6,80(sp)
-800274c8: afb5004c sw s5,76(sp)
-800274cc: afb40048 sw s4,72(sp)
-800274d0: afb30044 sw s3,68(sp)
-800274d4: afb20040 sw s2,64(sp)
-800274d8: afb1003c sw s1,60(sp)
-800274dc: afb00038 sw s0,56(sp)
- int i;
-
- PSXSDKIntroCloseShellEvent = false;
- PSXSDKIntroCloseShellEventReminder = false;
-800274e0: 3c178007 lui s7,0x8007
- PSXSDKIntroSpinDiskEvent = false;
- PSXSDKIntroSpinDiskEventReminder = false;
- PSXSDKIntroRandTextEvent = false;
- PSXSDKIntroRandTextEventReminder = false;
-800274e4: 3c108007 lui s0,0x8007
- int i;
-
- PSXSDKIntroCloseShellEvent = false;
- PSXSDKIntroCloseShellEventReminder = false;
- PSXSDKIntroSpinDiskEvent = false;
- PSXSDKIntroSpinDiskEventReminder = false;
-800274e8: 3c168007 lui s6,0x8007
-
-void PSXSDKIntro(void)
-{
- int i;
-
- PSXSDKIntroCloseShellEvent = false;
-800274ec: 3c118007 lui s1,0x8007
- PSXSDKIntroCloseShellEventReminder = false;
- PSXSDKIntroSpinDiskEvent = false;
-800274f0: 3c128007 lui s2,0x8007
- PSXSDKIntroSpinDiskEventReminder = false;
- PSXSDKIntroRandTextEvent = false;
-800274f4: 3c138007 lui s3,0x8007
- PSXSDKIntroRandTextEventReminder = false;
- PSXSDKIntroStringEvent = false;
-800274f8: 3c148007 lui s4,0x8007
- PSXSDKIntroClose = false;
-800274fc: 3c158007 lui s5,0x8007
- PSXSDKIntroCloseShellEvent = false;
- PSXSDKIntroCloseShellEventReminder = false;
- PSXSDKIntroSpinDiskEvent = false;
- PSXSDKIntroSpinDiskEventReminder = false;
- PSXSDKIntroRandTextEvent = false;
- PSXSDKIntroRandTextEventReminder = false;
-80027500: a2001c8a sb zero,7306(s0)
- return;
- }
-}
-
-void PSXSDKIntro(void)
-{
-80027504: afbf005c sw ra,92(sp)
-80027508: afbe0058 sw s8,88(sp)
- int i;
-
- PSXSDKIntroCloseShellEvent = false;
-8002750c: a2201c8f sb zero,7311(s1)
- PSXSDKIntroCloseShellEventReminder = false;
-80027510: a2e01c8e sb zero,7310(s7)
- PSXSDKIntroSpinDiskEvent = false;
-80027514: a2401c8d sb zero,7309(s2)
- PSXSDKIntroSpinDiskEventReminder = false;
-80027518: a2c01c8c sb zero,7308(s6)
- PSXSDKIntroRandTextEvent = false;
-8002751c: a2601c8b sb zero,7307(s3)
- PSXSDKIntroRandTextEventReminder = false;
- PSXSDKIntroStringEvent = false;
-80027520: a2801c89 sb zero,7305(s4)
- PSXSDKIntroClose = false;
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-80027524: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-80027528: a2a01c88 sb zero,7304(s5)
-8002752c: 3c028007 lui v0,0x8007
-80027530: afb0001c sw s0,28(sp)
-80027534: afa20028 sw v0,40(sp)
-
- OpenSource_Logo.x = OPEN_SOURCE_LOGO_X;
- OpenSource_Logo.y = OPEN_SOURCE_LOGO_Y;
- }
-
- GfxSortSprite(&GPL_Logo);
-80027538: 2450d1c0 addiu s0,v0,-11840
-8002753c: 3c028004 lui v0,0x8004
-80027540: afa2002c sw v0,44(sp)
- GfxSortSprite(&OpenSource_Logo);
- }
- }
-
- for(i = 0; i < strlen(strPSXSDKIntroAuthor) ; i++)
-80027544: 2442119c addiu v0,v0,4508
-80027548: afb70014 sw s7,20(sp)
-8002754c: afb60018 sw s6,24(sp)
-80027550: afa20030 sw v0,48(sp)
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-
- while(1)
- {
- while(GfxIsGPUBusy() == true);
-80027554: 0c00901d jal 80024074 <GfxIsGPUBusy>
-80027558: 00000000 nop
-8002755c: 1440fffd bnez v0,80027554 <PSXSDKIntro+0x9c>
-80027560: 00000000 nop
-
- if( ( (GfxGetGlobalLuminance() - BG_LUMINANCE_STEP) > 0)
-80027564: 0c009007 jal 8002401c <GfxGetGlobalLuminance>
-80027568: 00000000 nop
-8002756c: 2442fffe addiu v0,v0,-2
-80027570: 18400007 blez v0,80027590 <PSXSDKIntro+0xd8>
-80027574: 00000000 nop
- &&
-80027578: 92a21c88 lbu v0,7304(s5)
-8002757c: 00000000 nop
-80027580: 10400003 beqz v0,80027590 <PSXSDKIntro+0xd8>
-80027584: 00000000 nop
- (PSXSDKIntroClose == true) )
- {
- GfxIncreaseGlobalLuminance(-BG_LUMINANCE_STEP);
-80027588: 0c00900e jal 80024038 <GfxIncreaseGlobalLuminance>
-8002758c: 2404fffe li a0,-2
- }
-
- if( (GfxGetGlobalLuminance() <= BG_LUMINANCE_STEP)
-80027590: 0c009007 jal 8002401c <GfxGetGlobalLuminance>
-80027594: 00000000 nop
-80027598: 2c420003 sltiu v0,v0,3
-8002759c: 10400005 beqz v0,800275b4 <PSXSDKIntro+0xfc>
-800275a0: 00003021 move a2,zero
- &&
-800275a4: 92a21c88 lbu v0,7304(s5)
-800275a8: 00000000 nop
-800275ac: 14400173 bnez v0,80027b7c <PSXSDKIntro+0x6c4>
-800275b0: 00000000 nop
- (PSXSDKIntroClose == true) )
- {
- break;
- }
-
- GsSortCls(0,0,0);
-800275b4: 00002821 move a1,zero
-800275b8: 0c00c4e8 jal 800313a0 <GsSortCls>
-800275bc: 00002021 move a0,zero
-800275c0: 3c028004 lui v0,0x8004
-800275c4: 245e11ac addiu s8,v0,4524
-800275c8: afa20010 sw v0,16(sp)
-800275cc: 3c028007 lui v0,0x8007
-800275d0: afa20020 sw v0,32(sp)
- OpenSource_Logo.x = OPEN_SOURCE_LOGO_X;
- OpenSource_Logo.y = OPEN_SOURCE_LOGO_Y;
- }
-
- GfxSortSprite(&GPL_Logo);
- GfxSortSprite(&OpenSource_Logo);
-800275d4: 2456d16c addiu s6,v0,-11924
- {
- if( (PSXSDKIntroRandTextEvent == true)
- &&
- (PSXSDKIntroStringEvent == false) )
- {
- if(PSXSDKIntroRandTextEventReminder == false)
-800275d8: 3c028007 lui v0,0x8007
- break;
- }
-
- GsSortCls(0,0,0);
-
- for(i = 0; i < strlen(strPSXSDKIntro) ; i++)
-800275dc: 0000b821 move s7,zero
- {
- if( (PSXSDKIntroRandTextEvent == true)
- &&
- (PSXSDKIntroStringEvent == false) )
- {
- if(PSXSDKIntroRandTextEventReminder == false)
-800275e0: afa20024 sw v0,36(sp)
- break;
- }
-
- GsSortCls(0,0,0);
-
- for(i = 0; i < strlen(strPSXSDKIntro) ; i++)
-800275e4: 8fa20010 lw v0,16(sp)
-800275e8: 0c00d8af jal 800362bc <strlen>
-800275ec: 244411ac addiu a0,v0,4524
-800275f0: 02e2102a slt v0,s7,v0
-800275f4: 10400060 beqz v0,80027778 <PSXSDKIntro+0x2c0>
-800275f8: 00000000 nop
- {
- if( (PSXSDKIntroRandTextEvent == true)
-800275fc: 92621c8b lbu v0,7307(s3)
-80027600: 00000000 nop
-80027604: 10400059 beqz v0,8002776c <PSXSDKIntro+0x2b4>
-80027608: 00171900 sll v1,s7,0x4
- &&
-8002760c: 92821c89 lbu v0,7305(s4)
-80027610: 00000000 nop
-80027614: 1440001f bnez v0,80027694 <PSXSDKIntro+0x1dc>
-80027618: afa30034 sw v1,52(sp)
- (PSXSDKIntroStringEvent == false) )
- {
- if(PSXSDKIntroRandTextEventReminder == false)
-8002761c: 8fa2001c lw v0,28(sp)
-80027620: 00000000 nop
-80027624: 90421c8a lbu v0,7306(v0)
-80027628: 00000000 nop
-8002762c: 14400008 bnez v0,80027650 <PSXSDKIntro+0x198>
-80027630: 2405005a li a1,90
- {
- PSXSDKIntroRandTextEventReminder = true;
-80027634: 8fa30024 lw v1,36(sp)
- SfxPlaySound(&SpinDiskSnd);
-80027638: 3c048007 lui a0,0x8007
- &&
- (PSXSDKIntroStringEvent == false) )
- {
- if(PSXSDKIntroRandTextEventReminder == false)
- {
- PSXSDKIntroRandTextEventReminder = true;
-8002763c: 24020001 li v0,1
- SfxPlaySound(&SpinDiskSnd);
-80027640: 2484d198 addiu a0,a0,-11880
-80027644: 0c009eeb jal 80027bac <SfxPlaySound>
-80027648: a0621c8a sb v0,7306(v1)
- }
-
- PSXSDKIntroDrawChar(FONT_X + (i << FONT_SIZE_BITSHIFT),FONT_Y,SystemRand('A','Z'));
-8002764c: 2405005a li a1,90
-80027650: 0c00a03d jal 800280f4 <SystemRand>
-80027654: 24040041 li a0,65
-80027658: 00171900 sll v1,s7,0x4
-8002765c: 24640040 addiu a0,v1,64
-80027660: 00023600 sll a2,v0,0x18
-80027664: 00042400 sll a0,a0,0x10
-80027668: 00063603 sra a2,a2,0x18
-8002766c: 24050090 li a1,144
-80027670: 0c009d10 jal 80027440 <PSXSDKIntroDrawChar>
-80027674: 00042403 sra a0,a0,0x10
-
- GPL_Logo.r = 0;
-80027678: a200000e sb zero,14(s0)
- GPL_Logo.g = 0;
-8002767c: a200000f sb zero,15(s0)
- GPL_Logo.b = 0;
-80027680: a2000010 sb zero,16(s0)
-
- OpenSource_Logo.r = 0;
-80027684: a2c0000e sb zero,14(s6)
- OpenSource_Logo.g = 0;
-80027688: a2c0000f sb zero,15(s6)
- OpenSource_Logo.b = 0;
-8002768c: 10000037 b 8002776c <PSXSDKIntro+0x2b4>
-80027690: a2c00010 sb zero,16(s6)
- }
- else if( (PSXSDKIntroRandTextEvent == true)
- &&
- (PSXSDKIntroStringEvent == true) )
- {
- PSXSDKIntroDrawChar(FONT_X + (i << FONT_SIZE_BITSHIFT),FONT_Y,strPSXSDKIntro[i]);
-80027694: 00171100 sll v0,s7,0x4
-80027698: 24440040 addiu a0,v0,64
-8002769c: 83c60000 lb a2,0(s8)
-800276a0: 00042400 sll a0,a0,0x10
-800276a4: 24050090 li a1,144
-800276a8: 0c009d10 jal 80027440 <PSXSDKIntroDrawChar>
-800276ac: 00042403 sra a0,a0,0x10
-
- if(System100msTick() == true)
-800276b0: 0c009fba jal 80027ee8 <System100msTick>
-800276b4: 00000000 nop
-800276b8: 10400028 beqz v0,8002775c <PSXSDKIntro+0x2a4>
-800276bc: 00000000 nop
- {
- if(GPL_Logo.r < GPL_LOGO_LUMINANCE_TARGET)
-800276c0: 9202000e lbu v0,14(s0)
-800276c4: 00000000 nop
-800276c8: 00022600 sll a0,v0,0x18
-800276cc: 00042603 sra a0,a0,0x18
-800276d0: 0480000a bltz a0,800276fc <PSXSDKIntro+0x244>
-800276d4: 24420001 addiu v0,v0,1
- {
- GPL_Logo.r += GPL_LOGO_LUMINANCE_STEP;
-800276d8: a202000e sb v0,14(s0)
- GPL_Logo.g += GPL_LOGO_LUMINANCE_STEP;
-800276dc: 9202000f lbu v0,15(s0)
-800276e0: 00000000 nop
-800276e4: 24420001 addiu v0,v0,1
-800276e8: a202000f sb v0,15(s0)
- GPL_Logo.b += GPL_LOGO_LUMINANCE_STEP;
-800276ec: 92020010 lbu v0,16(s0)
-800276f0: 00000000 nop
-800276f4: 24420001 addiu v0,v0,1
-800276f8: a2020010 sb v0,16(s0)
- }
-
- GPL_Logo.x = GPL_LOGO_X;
-800276fc: 8fa30028 lw v1,40(sp)
-80027700: 24020010 li v0,16
-80027704: a462d1c0 sh v0,-11840(v1)
- GPL_Logo.y = GPL_LOGO_Y;
-80027708: a6020002 sh v0,2(s0)
-
- if(OpenSource_Logo.r < OPEN_SOURCE_LOGO_LUMINANCE_TARGET)
-8002770c: 92c2000e lbu v0,14(s6)
-80027710: 00000000 nop
-80027714: 00022600 sll a0,v0,0x18
-80027718: 00042603 sra a0,a0,0x18
-8002771c: 0480000a bltz a0,80027748 <PSXSDKIntro+0x290>
-80027720: 24420001 addiu v0,v0,1
- {
- OpenSource_Logo.r += OPEN_SOURCE_LOGO_LUMINANCE_STEP;
-80027724: a2c2000e sb v0,14(s6)
- OpenSource_Logo.g += OPEN_SOURCE_LOGO_LUMINANCE_STEP;
-80027728: 92c2000f lbu v0,15(s6)
-8002772c: 00000000 nop
-80027730: 24420001 addiu v0,v0,1
-80027734: a2c2000f sb v0,15(s6)
- OpenSource_Logo.b += OPEN_SOURCE_LOGO_LUMINANCE_STEP;
-80027738: 92c20010 lbu v0,16(s6)
-8002773c: 00000000 nop
-80027740: 24420001 addiu v0,v0,1
-80027744: a2c20010 sb v0,16(s6)
- }
-
- OpenSource_Logo.x = OPEN_SOURCE_LOGO_X;
-80027748: 8fa30020 lw v1,32(sp)
-8002774c: 24020130 li v0,304
-80027750: a462d16c sh v0,-11924(v1)
- OpenSource_Logo.y = OPEN_SOURCE_LOGO_Y;
-80027754: 24020010 li v0,16
-80027758: a6c20002 sh v0,2(s6)
- }
-
- GfxSortSprite(&GPL_Logo);
-8002775c: 0c0090d2 jal 80024348 <GfxSortSprite>
-80027760: 02002021 move a0,s0
- GfxSortSprite(&OpenSource_Logo);
-80027764: 0c0090d2 jal 80024348 <GfxSortSprite>
-80027768: 02c02021 move a0,s6
- break;
- }
-
- GsSortCls(0,0,0);
-
- for(i = 0; i < strlen(strPSXSDKIntro) ; i++)
-8002776c: 26f70001 addiu s7,s7,1
-80027770: 1000ff9c b 800275e4 <PSXSDKIntro+0x12c>
-80027774: 27de0001 addiu s8,s8,1
-80027778: 8fa2002c lw v0,44(sp)
-8002777c: 0000b021 move s6,zero
-80027780: 2457119c addiu s7,v0,4508
- GfxSortSprite(&GPL_Logo);
- GfxSortSprite(&OpenSource_Logo);
- }
- }
-
- for(i = 0; i < strlen(strPSXSDKIntroAuthor) ; i++)
-80027784: 8fa40030 lw a0,48(sp)
-80027788: 0c00d8af jal 800362bc <strlen>
-8002778c: 00000000 nop
-80027790: 02c2102a slt v0,s6,v0
-80027794: 10400019 beqz v0,800277fc <PSXSDKIntro+0x344>
-80027798: 240200a8 li v0,168
- {
- if( (PSXSDKIntroRandTextEvent == true)
-8002779c: 92621c8b lbu v0,7307(s3)
-800277a0: 00000000 nop
-800277a4: 10400012 beqz v0,800277f0 <PSXSDKIntro+0x338>
-800277a8: 00000000 nop
- &&
-800277ac: 92821c89 lbu v0,7305(s4)
-800277b0: 00000000 nop
-800277b4: 14400008 bnez v0,800277d8 <PSXSDKIntro+0x320>
-800277b8: 0016f100 sll s8,s6,0x4
- (PSXSDKIntroStringEvent == false) )
- {
- PSXSDKIntroDrawChar(FONT_X2 + (i << FONT_SIZE_BITSHIFT),FONT_Y2,SystemRand('A','Z'));
-800277bc: 24040041 li a0,65
-800277c0: 0c00a03d jal 800280f4 <SystemRand>
-800277c4: 2405005a li a1,90
-800277c8: 00023600 sll a2,v0,0x18
-800277cc: 27c40058 addiu a0,s8,88
-800277d0: 10000003 b 800277e0 <PSXSDKIntro+0x328>
-800277d4: 00063603 sra a2,a2,0x18
- }
- else if( (PSXSDKIntroRandTextEvent == true)
- &&
- (PSXSDKIntroStringEvent == true) )
- {
- PSXSDKIntroDrawChar(FONT_X2 + (i << FONT_SIZE_BITSHIFT),FONT_Y2,strPSXSDKIntroAuthor[i]);
-800277d8: 82e60000 lb a2,0(s7)
-800277dc: 27c40058 addiu a0,s8,88
-800277e0: 00042400 sll a0,a0,0x10
-800277e4: 240500a0 li a1,160
-800277e8: 0c009d10 jal 80027440 <PSXSDKIntroDrawChar>
-800277ec: 00042403 sra a0,a0,0x10
- GfxSortSprite(&GPL_Logo);
- GfxSortSprite(&OpenSource_Logo);
- }
- }
-
- for(i = 0; i < strlen(strPSXSDKIntroAuthor) ; i++)
-800277f0: 26d60001 addiu s6,s6,1
-800277f4: 1000ffe3 b 80027784 <PSXSDKIntro+0x2cc>
-800277f8: 26f70001 addiu s7,s7,1
-
-}
-
-void PSXSDKIntroDrawConsole(void)
-{
- PsxDisk.x = PSX_X;
-800277fc: 3c168007 lui s6,0x8007
- PsxDisk.y = PSX_Y;
-80027800: 26ded240 addiu s8,s6,-11712
-
-}
-
-void PSXSDKIntroDrawConsole(void)
-{
- PsxDisk.x = PSX_X;
-80027804: a6c2d240 sh v0,-11712(s6)
- PsxDisk.y = PSX_Y;
-80027808: 24020068 li v0,104
-8002780c: a7c20002 sh v0,2(s8)
-
- PsxDisk.w = PSX_W;
-80027810: 24020030 li v0,48
-80027814: a7c20006 sh v0,6(s8)
- PsxDisk.h = PSX_H;
-80027818: 24020020 li v0,32
-8002781c: a7c20008 sh v0,8(s8)
-
- PsxDisk.u = PSX_U;
- PsxDisk.v = PSX_V;
-
- GfxSortSprite(&PsxDisk);
-80027820: 03c02021 move a0,s8
- PsxDisk.y = PSX_Y;
-
- PsxDisk.w = PSX_W;
- PsxDisk.h = PSX_H;
-
- PsxDisk.u = PSX_U;
-80027824: 2402001e li v0,30
-80027828: a3c20004 sb v0,4(s8)
- PsxDisk.v = PSX_V;
-
- GfxSortSprite(&PsxDisk);
-8002782c: 0c0090d2 jal 80024348 <GfxSortSprite>
-80027830: a3c00005 sb zero,5(s8)
-void PSXSDKIntroDrawDisk(void)
-{
- static int spin_rotate = 0;
- static int spin_speed = 0;
-
- PsxDisk.x = DISK_X;
-80027834: 240200b3 li v0,179
-80027838: a6c2d240 sh v0,-11712(s6)
- PsxDisk.y = DISK_Y;
-8002783c: 2402006a li v0,106
-80027840: a7c20002 sh v0,2(s8)
-
- PsxDisk.w = DISK_W;
-80027844: 2402001b li v0,27
-80027848: a7c20006 sh v0,6(s8)
- PsxDisk.h = DISK_H;
-8002784c: a7c20008 sh v0,8(s8)
-
- PsxDisk.u = DISK_U;
-80027850: 24020002 li v0,2
-80027854: a3c20004 sb v0,4(s8)
- PsxDisk.v = DISK_V;
-80027858: a3c20005 sb v0,5(s8)
-
- if(PSXSDKIntroSpinDiskEvent == true)
-8002785c: 92421c8d lbu v0,7309(s2)
-80027860: afb60010 sw s6,16(sp)
-80027864: 1040002f beqz v0,80027924 <PSXSDKIntro+0x46c>
-80027868: 03c0b821 move s7,s8
- {
- if(PSXSDKIntroSpinDiskEventReminder == false)
-8002786c: 8fa20018 lw v0,24(sp)
-80027870: 00000000 nop
-80027874: 90421c8c lbu v0,7308(v0)
-80027878: 00000000 nop
-8002787c: 14400004 bnez v0,80027890 <PSXSDKIntro+0x3d8>
-80027880: 3c058007 lui a1,0x8007
- {
- PSXSDKIntroSpinDiskEventReminder = true;
-80027884: 24030001 li v1,1
-80027888: 3c028007 lui v0,0x8007
-8002788c: a0431c8c sb v1,7308(v0)
-
- //SfxPlaySound(&SpinDiskSnd);
- }
-
- if(spin_speed < MAX_DISK_SPIN)
-80027890: 8ca21c84 lw v0,7300(a1)
-80027894: 00000000 nop
-80027898: 28430005 slti v1,v0,5
-8002789c: 10600003 beqz v1,800278ac <PSXSDKIntro+0x3f4>
-800278a0: 24040168 li a0,360
- {
- spin_speed++;
-800278a4: 24420001 addiu v0,v0,1
-800278a8: aca21c84 sw v0,7300(a1)
- }
-
- if(spin_rotate < GfxRotateFromDegrees(360) )
-800278ac: 0c00901b jal 8002406c <GfxRotateFromDegrees>
-800278b0: afa50020 sw a1,32(sp)
-800278b4: 3c038007 lui v1,0x8007
-800278b8: 8c641c80 lw a0,7296(v1)
-800278bc: 00000000 nop
-800278c0: 0082102a slt v0,a0,v0
-800278c4: 1040000b beqz v0,800278f4 <PSXSDKIntro+0x43c>
-800278c8: 0060b021 move s6,v1
- {
- spin_rotate += GfxRotateFromDegrees(spin_speed++);
-800278cc: 8fa50020 lw a1,32(sp)
-800278d0: 00000000 nop
-800278d4: 8ca41c84 lw a0,7300(a1)
-800278d8: 00000000 nop
-800278dc: 24820001 addiu v0,a0,1
-800278e0: 0c00901b jal 8002406c <GfxRotateFromDegrees>
-800278e4: aca21c84 sw v0,7300(a1)
-800278e8: 8ec41c80 lw a0,7296(s6)
-800278ec: 10000006 b 80027908 <PSXSDKIntro+0x450>
-800278f0: 00821021 addu v0,a0,v0
- }
- else
- {
- spin_rotate = SystemRand(0,GfxRotateFromDegrees(360));
-800278f4: 0c00901b jal 8002406c <GfxRotateFromDegrees>
-800278f8: 24040168 li a0,360
-800278fc: 00402821 move a1,v0
-80027900: 0c00a03d jal 800280f4 <SystemRand>
-80027904: 00002021 move a0,zero
-80027908: aec21c80 sw v0,7296(s6)
- }
-
- PsxDisk.rotate = spin_rotate;
-8002790c: 8ec21c80 lw v0,7296(s6)
-80027910: 00000000 nop
-80027914: afc20020 sw v0,32(s8)
- PsxDisk.mx = DISK_W >> 1;
-80027918: 2402000d li v0,13
-8002791c: afc20024 sw v0,36(s8)
- PsxDisk.my = DISK_H >> 1;
-80027920: afc20028 sw v0,40(s8)
- }
-
- GfxSortSprite(&PsxDisk);
-80027924: 8fa20010 lw v0,16(sp)
-80027928: 0c0090d2 jal 80024348 <GfxSortSprite>
-8002792c: 2444d240 addiu a0,v0,-11712
-
- PSXSDKIntroDrawConsole();
-
- PSXSDKIntroDrawDisk();
-
- if(PSXSDKIntroCloseShellEvent == true)
-80027930: 92221c8f lbu v0,7311(s1)
-80027934: 00000000 nop
-80027938: 10400016 beqz v0,80027994 <PSXSDKIntro+0x4dc>
-8002793c: afc00020 sw zero,32(s8)
- {
- if(PSXSDKIntroCloseShellEventReminder == false)
-80027940: 8fa20014 lw v0,20(sp)
-80027944: 00000000 nop
-80027948: 90421c8e lbu v0,7310(v0)
-8002794c: 00000000 nop
-80027950: 14400006 bnez v0,8002796c <PSXSDKIntro+0x4b4>
-80027954: 3c048007 lui a0,0x8007
- {
- PSXSDKIntroCloseShellEventReminder = true;
-80027958: 24030001 li v1,1
-8002795c: 3c028007 lui v0,0x8007
-
- SfxPlaySound(&TrayClSnd);
-80027960: 2484d218 addiu a0,a0,-11752
-80027964: 0c009eeb jal 80027bac <SfxPlaySound>
-80027968: a0431c8e sb v1,7310(v0)
- }
-
- PsxDisk.x = READER_X;
-8002796c: 8fa30010 lw v1,16(sp)
-80027970: 240200b1 li v0,177
-80027974: a462d240 sh v0,-11712(v1)
- PsxDisk.y = READER_Y;
-80027978: 24020069 li v0,105
-8002797c: a7c20002 sh v0,2(s8)
-
- PsxDisk.w = CLOSED_READER_W;
-80027980: 2402001e li v0,30
-80027984: a7c20006 sh v0,6(s8)
- PsxDisk.h = CLOSED_READER_H;
-80027988: a7c20008 sh v0,8(s8)
-
- PsxDisk.u = CLOSED_READER_U;
-8002798c: 1000000c b 800279c0 <PSXSDKIntro+0x508>
-80027990: a3c00004 sb zero,4(s8)
-
- GfxSortSprite(&PsxDisk);
- }
- else
- {
- PsxDisk.x = READER_X;
-80027994: 3c028007 lui v0,0x8007
-80027998: 240300b1 li v1,177
-8002799c: a443d240 sh v1,-11712(v0)
- PsxDisk.y = READER_Y;
-800279a0: 24020069 li v0,105
-800279a4: a7c20002 sh v0,2(s8)
-
- PsxDisk.w = OPEN_READER_W;
-800279a8: 2402001e li v0,30
-800279ac: a7c20006 sh v0,6(s8)
- PsxDisk.h = OPEN_READER_H;
-800279b0: 2402000f li v0,15
-800279b4: a7c20008 sh v0,8(s8)
-
- PsxDisk.u = OPEN_READER_U;
-800279b8: a3c00004 sb zero,4(s8)
- PsxDisk.v = OPEN_READER_V;
-800279bc: 2402003d li v0,61
-
- GfxSortSprite(&PsxDisk);
-800279c0: 02e02021 move a0,s7
-
-void PSXSDKIntroRunTimers(void)
-{
- static uint16_t intro_timer = 0;
-
- intro_timer++;
-800279c4: 3c168007 lui s6,0x8007
- PsxDisk.h = OPEN_READER_H;
-
- PsxDisk.u = OPEN_READER_U;
- PsxDisk.v = OPEN_READER_V;
-
- GfxSortSprite(&PsxDisk);
-800279c8: 0c0090d2 jal 80024348 <GfxSortSprite>
-800279cc: a3c20005 sb v0,5(s8)
- }
-
- PSXSDKIntroDrawTransCase();
-
- GfxDrawScene();
-800279d0: 0c008fe2 jal 80023f88 <GfxDrawScene>
-800279d4: 00000000 nop
-
-void PSXSDKIntroRunTimers(void)
-{
- static uint16_t intro_timer = 0;
-
- intro_timer++;
-800279d8: 96c21c7c lhu v0,7292(s6)
-800279dc: 00000000 nop
-800279e0: 24420001 addiu v0,v0,1
-800279e4: 3042ffff andi v0,v0,0xffff
-800279e8: a6c21c7c sh v0,7292(s6)
-
- if( (intro_timer >= CLOSE_SHELL_EV_TIM)
-800279ec: 2c420032 sltiu v0,v0,50
-800279f0: 14400008 bnez v0,80027a14 <PSXSDKIntro+0x55c>
-800279f4: 00000000 nop
- &&
-800279f8: 92221c8f lbu v0,7311(s1)
-800279fc: 00000000 nop
-80027a00: 14400004 bnez v0,80027a14 <PSXSDKIntro+0x55c>
-80027a04: 24030001 li v1,1
- (PSXSDKIntroCloseShellEvent == false) )
- {
- PSXSDKIntroCloseShellEvent = true;
-80027a08: 3c028007 lui v0,0x8007
-80027a0c: a0431c8f sb v1,7311(v0)
- intro_timer = 0;
-80027a10: a6c01c7c sh zero,7292(s6)
- }
-
- if( (intro_timer >= DISK_SPIN_EV_TIM)
-80027a14: 96c21c7c lhu v0,7292(s6)
-80027a18: 00000000 nop
-80027a1c: 2c42001e sltiu v0,v0,30
-80027a20: 1440000d bnez v0,80027a58 <PSXSDKIntro+0x5a0>
-80027a24: 00000000 nop
- &&
-80027a28: 92221c8f lbu v0,7311(s1)
-80027a2c: 00000000 nop
-80027a30: 10400009 beqz v0,80027a58 <PSXSDKIntro+0x5a0>
-80027a34: 00000000 nop
- (PSXSDKIntroCloseShellEvent == true)
- &&
-80027a38: 92421c8d lbu v0,7309(s2)
-80027a3c: 00000000 nop
-80027a40: 14400005 bnez v0,80027a58 <PSXSDKIntro+0x5a0>
-80027a44: 3c028007 lui v0,0x8007
- (PSXSDKIntroSpinDiskEvent == false) )
- {
- PSXSDKIntroSpinDiskEvent = true;
-80027a48: 24030001 li v1,1
-80027a4c: a0431c8d sb v1,7309(v0)
- intro_timer = 0;
-80027a50: 3c028007 lui v0,0x8007
-80027a54: a4401c7c sh zero,7292(v0)
- }
-
- if( (intro_timer >= TEXT_APPEAR_RANDOM_TIM)
-80027a58: 96c21c7c lhu v0,7292(s6)
-80027a5c: 00000000 nop
-80027a60: 2c420064 sltiu v0,v0,100
-80027a64: 14400011 bnez v0,80027aac <PSXSDKIntro+0x5f4>
-80027a68: 00000000 nop
- &&
-80027a6c: 92221c8f lbu v0,7311(s1)
-80027a70: 00000000 nop
-80027a74: 1040000d beqz v0,80027aac <PSXSDKIntro+0x5f4>
-80027a78: 00000000 nop
- (PSXSDKIntroCloseShellEvent == true)
- &&
-80027a7c: 92421c8d lbu v0,7309(s2)
-80027a80: 00000000 nop
-80027a84: 10400009 beqz v0,80027aac <PSXSDKIntro+0x5f4>
-80027a88: 00000000 nop
- (PSXSDKIntroSpinDiskEvent == true)
- &&
-80027a8c: 92621c8b lbu v0,7307(s3)
-80027a90: 00000000 nop
-80027a94: 14400005 bnez v0,80027aac <PSXSDKIntro+0x5f4>
-80027a98: 3c028007 lui v0,0x8007
- (PSXSDKIntroRandTextEvent == false) )
- {
- PSXSDKIntroRandTextEvent = true;
-80027a9c: 24030001 li v1,1
-80027aa0: a0431c8b sb v1,7307(v0)
- intro_timer = 0;
-80027aa4: 3c028007 lui v0,0x8007
-80027aa8: a4401c7c sh zero,7292(v0)
- }
-
- if( (intro_timer >= TEXT_APPEAR_STRING_TIM)
-80027aac: 96c21c7c lhu v0,7292(s6)
-80027ab0: 00000000 nop
-80027ab4: 2c420064 sltiu v0,v0,100
-80027ab8: 14400017 bnez v0,80027b18 <PSXSDKIntro+0x660>
-80027abc: 00000000 nop
- &&
-80027ac0: 92221c8f lbu v0,7311(s1)
-80027ac4: 00000000 nop
-80027ac8: 10400013 beqz v0,80027b18 <PSXSDKIntro+0x660>
-80027acc: 00000000 nop
- (PSXSDKIntroCloseShellEvent == true)
- &&
-80027ad0: 92421c8d lbu v0,7309(s2)
-80027ad4: 00000000 nop
-80027ad8: 1040000f beqz v0,80027b18 <PSXSDKIntro+0x660>
-80027adc: 00000000 nop
- (PSXSDKIntroSpinDiskEvent == true)
- &&
-80027ae0: 92621c8b lbu v0,7307(s3)
-80027ae4: 00000000 nop
-80027ae8: 1040000b beqz v0,80027b18 <PSXSDKIntro+0x660>
-80027aec: 00000000 nop
- (PSXSDKIntroRandTextEvent == true)
- &&
-80027af0: 92821c89 lbu v0,7305(s4)
-80027af4: 00000000 nop
-80027af8: 14400007 bnez v0,80027b18 <PSXSDKIntro+0x660>
-80027afc: 3c028007 lui v0,0x8007
- (PSXSDKIntroStringEvent == false) )
- {
- PSXSDKIntroStringEvent = true;
-80027b00: 24030001 li v1,1
- SfxPlayTrack(INTRO_TRACK);
-80027b04: 24040002 li a0,2
-80027b08: 0c009f16 jal 80027c58 <SfxPlayTrack>
-80027b0c: a0431c89 sb v1,7305(v0)
- intro_timer = 0;
-80027b10: 3c028007 lui v0,0x8007
-80027b14: a4401c7c sh zero,7292(v0)
- }
-
- if( (intro_timer >= INTRO_CLOSE_TIM)
-80027b18: 96c21c7c lhu v0,7292(s6)
-80027b1c: 00000000 nop
-80027b20: 2c420064 sltiu v0,v0,100
-80027b24: 1440fe8b bnez v0,80027554 <PSXSDKIntro+0x9c>
-80027b28: 00000000 nop
- &&
-80027b2c: 92221c8f lbu v0,7311(s1)
-80027b30: 00000000 nop
-80027b34: 1040fe87 beqz v0,80027554 <PSXSDKIntro+0x9c>
-80027b38: 00000000 nop
- (PSXSDKIntroCloseShellEvent == true)
- &&
-80027b3c: 92421c8d lbu v0,7309(s2)
-80027b40: 00000000 nop
-80027b44: 1040fe83 beqz v0,80027554 <PSXSDKIntro+0x9c>
-80027b48: 00000000 nop
- (PSXSDKIntroSpinDiskEvent == true)
- &&
-80027b4c: 92621c8b lbu v0,7307(s3)
-80027b50: 00000000 nop
-80027b54: 1040fe7f beqz v0,80027554 <PSXSDKIntro+0x9c>
-80027b58: 00000000 nop
- (PSXSDKIntroRandTextEvent == true)
- &&
-80027b5c: 92821c89 lbu v0,7305(s4)
-80027b60: 00000000 nop
-80027b64: 1040fe7b beqz v0,80027554 <PSXSDKIntro+0x9c>
-80027b68: 24020001 li v0,1
- (PSXSDKIntroStringEvent == true) )
- {
- PSXSDKIntroClose = true;
-80027b6c: a2a21c88 sb v0,7304(s5)
- intro_timer = 0;
-80027b70: 3c028007 lui v0,0x8007
-80027b74: 1000fe77 b 80027554 <PSXSDKIntro+0x9c>
-80027b78: a4401c7c sh zero,7292(v0)
-
- GfxDrawScene();
-
- PSXSDKIntroRunTimers();
- }
-}
-80027b7c: 8fbf005c lw ra,92(sp)
-80027b80: 8fbe0058 lw s8,88(sp)
-80027b84: 8fb70054 lw s7,84(sp)
-80027b88: 8fb60050 lw s6,80(sp)
-80027b8c: 8fb5004c lw s5,76(sp)
-80027b90: 8fb40048 lw s4,72(sp)
-80027b94: 8fb30044 lw s3,68(sp)
-80027b98: 8fb20040 lw s2,64(sp)
-80027b9c: 8fb1003c lw s1,60(sp)
-80027ba0: 8fb00038 lw s0,56(sp)
-80027ba4: 03e00008 jr ra
-80027ba8: 27bd0060 addiu sp,sp,96
-
-80027bac <SfxPlaySound>:
-
-static uint8_t voiceIndex = 0;
-
-void SfxPlaySound(SsVag * sound)
-{
- SsPlayVag(sound, sound->cur_voice, MAX_VOLUME, MAX_VOLUME);
-80027bac: 90850024 lbu a1,36(a0)
-80027bb0: 24073fff li a3,16383
-80027bb4: 0800cea7 j 80033a9c <SsPlayVag>
-80027bb8: 24063fff li a2,16383
-
-80027bbc <SfxUploadSound>:
-}
-
-bool SfxUploadSound(char * file_path, SsVag * vag)
-{
-80027bbc: 27bdffe0 addiu sp,sp,-32
-80027bc0: afb20018 sw s2,24(sp)
-80027bc4: afb00010 sw s0,16(sp)
-80027bc8: afbf001c sw ra,28(sp)
-80027bcc: afb10014 sw s1,20(sp)
- if(SystemLoadFile(file_path) == false)
-80027bd0: 0c00a022 jal 80028088 <SystemLoadFile>
-80027bd4: 00a09021 move s2,a1
-80027bd8: 10400018 beqz v0,80027c3c <SfxUploadSound+0x80>
-80027bdc: 00408021 move s0,v0
- {
- return false;
- }
-
- if(voiceIndex < NUMBER_OF_VOICES)
-80027be0: 3c118007 lui s1,0x8007
-80027be4: 92221c90 lbu v0,7312(s1)
-80027be8: 00000000 nop
-80027bec: 2c420018 sltiu v0,v0,24
-80027bf0: 1040000e beqz v0,80027c2c <SfxUploadSound+0x70>
-80027bf4: 00000000 nop
- {
- SsReadVag(vag,SystemGetBufferAddress());
-80027bf8: 0c00a027 jal 8002809c <SystemGetBufferAddress>
-80027bfc: 00000000 nop
-80027c00: 00402821 move a1,v0
-80027c04: 0c00cdde jal 80033778 <SsReadVag>
-80027c08: 02402021 move a0,s2
-
- SsUploadVag(vag);
-80027c0c: 0c00ce86 jal 80033a18 <SsUploadVag>
-80027c10: 02402021 move a0,s2
-
- vag->cur_voice = voiceIndex;
-80027c14: 92221c90 lbu v0,7312(s1)
-80027c18: 00000000 nop
-80027c1c: a2420024 sb v0,36(s2)
- voiceIndex++;
-80027c20: 24420001 addiu v0,v0,1
- {
- dprintf("Maximum number of SPU voices exceeded!\n");
- return false; //Maximum voices exceeded
- }
-
- return true;
-80027c24: 10000005 b 80027c3c <SfxUploadSound+0x80>
-80027c28: a2221c90 sb v0,7312(s1)
- vag->cur_voice = voiceIndex;
- voiceIndex++;
- }
- else
- {
- dprintf("Maximum number of SPU voices exceeded!\n");
-80027c2c: 3c048004 lui a0,0x8004
-80027c30: 0c00ed8f jal 8003b63c <printf>
-80027c34: 248411c0 addiu a0,a0,4544
- return false; //Maximum voices exceeded
-80027c38: 00008021 move s0,zero
- }
-
- return true;
-}
-80027c3c: 8fbf001c lw ra,28(sp)
-80027c40: 02001021 move v0,s0
-80027c44: 8fb20018 lw s2,24(sp)
-80027c48: 8fb10014 lw s1,20(sp)
-80027c4c: 8fb00010 lw s0,16(sp)
-80027c50: 03e00008 jr ra
-80027c54: 27bd0020 addiu sp,sp,32
-
-80027c58 <SfxPlayTrack>:
-
-void SfxPlayTrack(MUSIC_TRACKS track)
-{
-80027c58: 27bdffe8 addiu sp,sp,-24
-#ifndef NO_CDDA
- SsCdVol(0x7FFF,0x7FFF);
-80027c5c: 24057fff li a1,32767
-
- return true;
-}
-
-void SfxPlayTrack(MUSIC_TRACKS track)
-{
-80027c60: afb00010 sw s0,16(sp)
-80027c64: 00808021 move s0,a0
-80027c68: afbf0014 sw ra,20(sp)
-#ifndef NO_CDDA
- SsCdVol(0x7FFF,0x7FFF);
-80027c6c: 0c00cf2e jal 80033cb8 <SsCdVol>
-80027c70: 24047fff li a0,32767
- SsEnableCd();
-80027c74: 0c00cf04 jal 80033c10 <SsEnableCd>
-80027c78: 00000000 nop
- CdPlayTrack(track);
-80027c7c: 0c00ab69 jal 8002ada4 <CdPlayTrack>
-80027c80: 02002021 move a0,s0
- dprintf("Track number %d playing...\n",track);
-#endif // NO_CDDA
-}
-80027c84: 8fbf0014 lw ra,20(sp)
-{
-#ifndef NO_CDDA
- SsCdVol(0x7FFF,0x7FFF);
- SsEnableCd();
- CdPlayTrack(track);
- dprintf("Track number %d playing...\n",track);
-80027c88: 02002821 move a1,s0
-80027c8c: 3c048004 lui a0,0x8004
-#endif // NO_CDDA
-}
-80027c90: 8fb00010 lw s0,16(sp)
-{
-#ifndef NO_CDDA
- SsCdVol(0x7FFF,0x7FFF);
- SsEnableCd();
- CdPlayTrack(track);
- dprintf("Track number %d playing...\n",track);
-80027c94: 248411e8 addiu a0,a0,4584
-80027c98: 0800ed8f j 8003b63c <printf>
-80027c9c: 27bd0018 addiu sp,sp,24
-
-80027ca0 <SfxStopMusic>:
-#endif // NO_CDDA
-}
-
-void SfxStopMusic(void)
-{
-80027ca0: 27bdffd0 addiu sp,sp,-48
-80027ca4: afb20024 sw s2,36(sp)
-80027ca8: afb10020 sw s1,32(sp)
-80027cac: afb0001c sw s0,28(sp)
-80027cb0: afbf002c sw ra,44(sp)
-#ifndef NO_CDDA
- uint64_t timer = SystemGetGlobalTimer();
-80027cb4: 0c009fad jal 80027eb4 <SystemGetGlobalTimer>
-80027cb8: afb30028 sw s3,40(sp)
-80027cbc: 00608021 move s0,v1
-80027cc0: 24120009 li s2,9
- uint16_t CDVol = 0x7FFF;
-80027cc4: 24117fff li s1,32767
- uint8_t time_step = 5;
-
- while (CDVol > 0x3F)
- {
- CDVol>>=1;
-80027cc8: 00118842 srl s1,s1,0x1
- SsCdVol(CDVol,CDVol);
-80027ccc: 02202821 move a1,s1
-80027cd0: 02202021 move a0,s1
-80027cd4: 0c00cf2e jal 80033cb8 <SsCdVol>
-80027cd8: afa20010 sw v0,16(sp)
-
- while(SystemGetGlobalTimer() < (timer + time_step) );
-80027cdc: 8fa20010 lw v0,16(sp)
-80027ce0: 00000000 nop
-80027ce4: 24530005 addiu s3,v0,5
-80027ce8: 0262102b sltu v0,s3,v0
-80027cec: 00508021 addu s0,v0,s0
-80027cf0: 0c009fad jal 80027eb4 <SystemGetGlobalTimer>
-80027cf4: 00000000 nop
-80027cf8: 0070202b sltu a0,v1,s0
-80027cfc: 1480fffc bnez a0,80027cf0 <SfxStopMusic+0x50>
-80027d00: 00000000 nop
-80027d04: 16030003 bne s0,v1,80027d14 <SfxStopMusic+0x74>
-80027d08: 0053102b sltu v0,v0,s3
-80027d0c: 1440fff8 bnez v0,80027cf0 <SfxStopMusic+0x50>
-80027d10: 00000000 nop
-
- timer = SystemGetGlobalTimer();
-80027d14: 0c009fad jal 80027eb4 <SystemGetGlobalTimer>
-80027d18: 2652ffff addiu s2,s2,-1
-#ifndef NO_CDDA
- uint64_t timer = SystemGetGlobalTimer();
- uint16_t CDVol = 0x7FFF;
- uint8_t time_step = 5;
-
- while (CDVol > 0x3F)
-80027d1c: 1640ffea bnez s2,80027cc8 <SfxStopMusic+0x28>
-80027d20: 00608021 move s0,v1
- timer = SystemGetGlobalTimer();
- }
-
- CdSendCommand(CdlMute,0);
-#endif
-}
-80027d24: 8fbf002c lw ra,44(sp)
-80027d28: 8fb30028 lw s3,40(sp)
-80027d2c: 8fb20024 lw s2,36(sp)
-80027d30: 8fb10020 lw s1,32(sp)
-80027d34: 8fb0001c lw s0,28(sp)
- while(SystemGetGlobalTimer() < (timer + time_step) );
-
- timer = SystemGetGlobalTimer();
- }
-
- CdSendCommand(CdlMute,0);
-80027d38: 00002821 move a1,zero
-80027d3c: 2404000b li a0,11
-80027d40: 0800aa46 j 8002a918 <CdSendCommand>
-80027d44: 27bd0030 addiu sp,sp,48
-
-80027d48 <SystemCheckTimer>:
-
-}
-
-void SystemCheckTimer(bool * timer, uint64_t * last_timer, uint8_t step)
-{
- if(*timer == true)
-80027d48: 90830000 lbu v1,0(a0)
-80027d4c: 00000000 nop
-80027d50: 10600006 beqz v1,80027d6c <SystemCheckTimer+0x24>
-80027d54: 3c028007 lui v0,0x8007
- {
- *timer = false;
- *last_timer = global_timer;
-80027d58: 8c481cb8 lw t0,7352(v0)
-80027d5c: 8c491cbc lw t1,7356(v0)
-
-void SystemCheckTimer(bool * timer, uint64_t * last_timer, uint8_t step)
-{
- if(*timer == true)
- {
- *timer = false;
-80027d60: a0800000 sb zero,0(a0)
- *last_timer = global_timer;
-80027d64: aca80000 sw t0,0(a1)
-80027d68: aca90004 sw t1,4(a1)
- }
-
- if(global_timer >= (*last_timer + step) )
-80027d6c: 8ca30000 lw v1,0(a1)
-80027d70: 8c481cb8 lw t0,7352(v0)
-80027d74: 8ca50004 lw a1,4(a1)
-80027d78: 8c491cbc lw t1,7356(v0)
-80027d7c: 00c31021 addu v0,a2,v1
-80027d80: 0046302b sltu a2,v0,a2
-80027d84: 00c53021 addu a2,a2,a1
-80027d88: 0126182b sltu v1,t1,a2
-80027d8c: 14600007 bnez v1,80027dac <SystemCheckTimer+0x64>
-80027d90: 00000000 nop
-80027d94: 14c90003 bne a2,t1,80027da4 <SystemCheckTimer+0x5c>
-80027d98: 0102102b sltu v0,t0,v0
-80027d9c: 14400003 bnez v0,80027dac <SystemCheckTimer+0x64>
-80027da0: 00000000 nop
- {
- *timer = true;
-80027da4: 24020001 li v0,1
-80027da8: a0820000 sb v0,0(a0)
-80027dac: 03e00008 jr ra
-80027db0: 00000000 nop
-
-80027db4 <SystemSetRandSeed>:
- StartRCnt(RCntCNT2);
-}
-
-void SystemSetRandSeed(void)
-{
- if(rand_seed == false)
-80027db4: 3c028007 lui v0,0x8007
-80027db8: 90431cb6 lbu v1,7350(v0)
-80027dbc: 00000000 nop
-80027dc0: 14600014 bnez v1,80027e14 <SystemSetRandSeed+0x60>
-80027dc4: 00000000 nop
- SetRCnt(RCntCNT2,0xFFFF,RCntSC);
- StartRCnt(RCntCNT2);
-}
-
-void SystemSetRandSeed(void)
-{
-80027dc8: 27bdffe8 addiu sp,sp,-24
-80027dcc: afb00010 sw s0,16(sp)
- if(rand_seed == false)
- {
- rand_seed = true;
- //Set random seed using global timer as reference
- srand((unsigned int)global_timer);
-80027dd0: 3c108007 lui s0,0x8007
-80027dd4: 8e041cb8 lw a0,7352(s0)
-
-void SystemSetRandSeed(void)
-{
- if(rand_seed == false)
- {
- rand_seed = true;
-80027dd8: 24030001 li v1,1
- SetRCnt(RCntCNT2,0xFFFF,RCntSC);
- StartRCnt(RCntCNT2);
-}
-
-void SystemSetRandSeed(void)
-{
-80027ddc: afbf0014 sw ra,20(sp)
- if(rand_seed == false)
- {
- rand_seed = true;
-80027de0: a0431cb6 sb v1,7350(v0)
- //Set random seed using global timer as reference
- srand((unsigned int)global_timer);
-80027de4: 8e051cbc lw a1,7356(s0)
-80027de8: 0c00d59b jal 8003566c <srand>
-80027dec: 00000000 nop
-
- dprintf("Seed used: %d\n",(unsigned int)global_timer);
-80027df0: 8e021cb8 lw v0,7352(s0)
- }
-}
-80027df4: 8fbf0014 lw ra,20(sp)
- {
- rand_seed = true;
- //Set random seed using global timer as reference
- srand((unsigned int)global_timer);
-
- dprintf("Seed used: %d\n",(unsigned int)global_timer);
-80027df8: 8e031cbc lw v1,7356(s0)
-80027dfc: 3c048004 lui a0,0x8004
- }
-}
-80027e00: 8fb00010 lw s0,16(sp)
- {
- rand_seed = true;
- //Set random seed using global timer as reference
- srand((unsigned int)global_timer);
-
- dprintf("Seed used: %d\n",(unsigned int)global_timer);
-80027e04: 00402821 move a1,v0
-80027e08: 24841204 addiu a0,a0,4612
-80027e0c: 0800ed8f j 8003b63c <printf>
-80027e10: 27bd0018 addiu sp,sp,24
-80027e14: 03e00008 jr ra
-80027e18: 00000000 nop
-
-80027e1c <SystemIsRandSeedSet>:
-}
-
-bool SystemIsRandSeedSet(void)
-{
- return rand_seed;
-}
-80027e1c: 3c028007 lui v0,0x8007
-80027e20: 90421cb6 lbu v0,7350(v0)
-80027e24: 03e00008 jr ra
-80027e28: 00000000 nop
-
-80027e2c <SystemDMAReady>:
-
-bool SystemDMAReady(void)
-{
- return (*((unsigned int*)0x1F801814) & 1<<28);
-80027e2c: 3c021f80 lui v0,0x1f80
-80027e30: 8c421814 lw v0,6164(v0)
-80027e34: 00000000 nop
-80027e38: 00021702 srl v0,v0,0x1c
-}
-80027e3c: 03e00008 jr ra
-80027e40: 30420001 andi v0,v0,0x1
-
-80027e44 <SystemDMABusy>:
-
-bool SystemDMABusy(void)
-{
-80027e44: 27bdffe8 addiu sp,sp,-24
-80027e48: afbf0014 sw ra,20(sp)
- return !SystemDMAReady();
-80027e4c: 0c009f8b jal 80027e2c <SystemDMAReady>
-80027e50: 00000000 nop
-}
-80027e54: 8fbf0014 lw ra,20(sp)
- return (*((unsigned int*)0x1F801814) & 1<<28);
-}
-
-bool SystemDMABusy(void)
-{
- return !SystemDMAReady();
-80027e58: 38420001 xori v0,v0,0x1
-}
-80027e5c: 304200ff andi v0,v0,0xff
-80027e60: 03e00008 jr ra
-80027e64: 27bd0018 addiu sp,sp,24
-
-80027e68 <SystemRefreshNeeded>:
-
-bool SystemRefreshNeeded(void)
-{
- return refresh_needed;
-80027e68: 3c028007 lui v0,0x8007
-80027e6c: 90421cb5 lbu v0,7349(v0)
-}
-80027e70: 03e00008 jr ra
-80027e74: 304200ff andi v0,v0,0xff
-
-80027e78 <SystemIncreaseGlobalTimer>:
- SystemIncreaseGlobalTimer();
-}
-
-void SystemIncreaseGlobalTimer(void)
-{
- global_timer++;
-80027e78: 3c068007 lui a2,0x8007
-80027e7c: 8cc41cb8 lw a0,7352(a2)
-80027e80: 8cc51cbc lw a1,7356(a2)
-80027e84: 24870001 addiu a3,a0,1
-80027e88: 00e4202b sltu a0,a3,a0
-80027e8c: 00851821 addu v1,a0,a1
-80027e90: acc71cb8 sw a3,7352(a2)
-80027e94: acc31cbc sw v1,7356(a2)
-80027e98: 03e00008 jr ra
-80027e9c: 00000000 nop
-
-80027ea0 <ISR_SystemDefaultVBlank>:
- return refresh_needed;
-}
-
-void ISR_SystemDefaultVBlank(void)
-{
- refresh_needed = true;
-80027ea0: 24030001 li v1,1
-80027ea4: 3c028007 lui v0,0x8007
-80027ea8: a0431cb5 sb v1,7349(v0)
- SystemIncreaseGlobalTimer();
-80027eac: 08009f9e j 80027e78 <SystemIncreaseGlobalTimer>
-80027eb0: 00000000 nop
-
-80027eb4 <SystemGetGlobalTimer>:
- global_timer++;
-}
-
-uint64_t SystemGetGlobalTimer(void)
-{
- return global_timer;
-80027eb4: 3c028007 lui v0,0x8007
-80027eb8: 8c431cbc lw v1,7356(v0)
-80027ebc: 8c421cb8 lw v0,7352(v0)
-}
-80027ec0: 03e00008 jr ra
-80027ec4: 00000000 nop
-
-80027ec8 <SystemDisableScreenRefresh>:
-
-void SystemDisableScreenRefresh(void)
-{
- refresh_needed = false;
-80027ec8: 3c028007 lui v0,0x8007
-80027ecc: a0401cb5 sb zero,7349(v0)
-80027ed0: 03e00008 jr ra
-80027ed4: 00000000 nop
-
-80027ed8 <System1SecondTick>:
-}
-
-bool System1SecondTick(void)
-{
- return one_second_timer;
-}
-80027ed8: 3c028007 lui v0,0x8007
-80027edc: 90421cb4 lbu v0,7348(v0)
-80027ee0: 03e00008 jr ra
-80027ee4: 00000000 nop
-
-80027ee8 <System100msTick>:
-
-bool System100msTick(void)
-{
- return hundred_ms_timer;
-}
-80027ee8: 3c028007 lui v0,0x8007
-80027eec: 90421cb3 lbu v0,7347(v0)
-80027ef0: 03e00008 jr ra
-80027ef4: 00000000 nop
-
-80027ef8 <System500msTick>:
-
-bool System500msTick(void)
-{
- return five_hundred_ms_timer;
-}
-80027ef8: 3c028007 lui v0,0x8007
-80027efc: 90421cb2 lbu v0,7346(v0)
-80027f00: 03e00008 jr ra
-80027f04: 00000000 nop
-
-80027f08 <SystemRunTimers>:
-{
- static uint64_t last_one_second_tick;
- static uint64_t last_100_ms_tick;
- static uint64_t last_500_ms_tick;
-
- SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY);
-80027f08: 3c058007 lui a1,0x8007
-80027f0c: 3c048007 lui a0,0x8007
-{
- return five_hundred_ms_timer;
-}
-
-void SystemRunTimers(void)
-{
-80027f10: 27bdffe8 addiu sp,sp,-24
- static uint64_t last_one_second_tick;
- static uint64_t last_100_ms_tick;
- static uint64_t last_500_ms_tick;
-
- SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY);
-80027f14: 24060032 li a2,50
-80027f18: 24a51ca8 addiu a1,a1,7336
-{
- return five_hundred_ms_timer;
-}
-
-void SystemRunTimers(void)
-{
-80027f1c: afbf0014 sw ra,20(sp)
- static uint64_t last_one_second_tick;
- static uint64_t last_100_ms_tick;
- static uint64_t last_500_ms_tick;
-
- SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY);
-80027f20: 0c009f52 jal 80027d48 <SystemCheckTimer>
-80027f24: 24841cb4 addiu a0,a0,7348
-
-#ifdef _PAL_MODE_
- SystemCheckTimer(&hundred_ms_timer, &last_100_ms_tick, 2 /* 2 * 50 ms = 100 ms */);
-80027f28: 3c058007 lui a1,0x8007
-80027f2c: 3c048007 lui a0,0x8007
-80027f30: 24060002 li a2,2
-80027f34: 24a51ca0 addiu a1,a1,7328
-80027f38: 0c009f52 jal 80027d48 <SystemCheckTimer>
-80027f3c: 24841cb3 addiu a0,a0,7347
- SystemCheckTimer(&five_hundred_ms_timer, &last_500_ms_tick, 10 /* 10 * 50 ms = 500 ms */);
-#else
- SystemCheckTimer(&hundred_ms_timer, &last_100_ms_tick, 3);
-#endif //VMODE_PAL
-
-}
-80027f40: 8fbf0014 lw ra,20(sp)
-
- SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY);
-
-#ifdef _PAL_MODE_
- SystemCheckTimer(&hundred_ms_timer, &last_100_ms_tick, 2 /* 2 * 50 ms = 100 ms */);
- SystemCheckTimer(&five_hundred_ms_timer, &last_500_ms_tick, 10 /* 10 * 50 ms = 500 ms */);
-80027f44: 3c058007 lui a1,0x8007
-80027f48: 3c048007 lui a0,0x8007
-80027f4c: 2406000a li a2,10
-80027f50: 24a51c98 addiu a1,a1,7320
-80027f54: 24841cb2 addiu a0,a0,7346
-80027f58: 08009f52 j 80027d48 <SystemCheckTimer>
-80027f5c: 27bd0018 addiu sp,sp,24
-
-80027f60 <SystemLoadFileToBuffer>:
- *timer = true;
- }
-}
-
-bool SystemLoadFileToBuffer(char * fname, uint8_t * buffer, uint32_t szBuffer)
-{
-80027f60: 27bdffd0 addiu sp,sp,-48
-80027f64: afbf002c sw ra,44(sp)
-80027f68: afb50028 sw s5,40(sp)
-80027f6c: afb40024 sw s4,36(sp)
-80027f70: afb30020 sw s3,32(sp)
-80027f74: afb2001c sw s2,28(sp)
-80027f78: afb10018 sw s1,24(sp)
- FILE *f;
- int32_t size;
-
- if(fname == NULL)
-80027f7c: 14800004 bnez a0,80027f90 <SystemLoadFileToBuffer+0x30>
-80027f80: afb00014 sw s0,20(sp)
- {
- dprintf("SystemLoadFile: NULL fname!\n");
-80027f84: 3c048004 lui a0,0x8004
-80027f88: 10000012 b 80027fd4 <SystemLoadFileToBuffer+0x74>
-80027f8c: 24841214 addiu a0,a0,4628
-80027f90: 00a0a821 move s5,a1
-80027f94: 00808821 move s1,a0
- return false;
- }
-
- memset(buffer,0,szBuffer);
-80027f98: 00002821 move a1,zero
-80027f9c: 02a02021 move a0,s5
-80027fa0: 0c00d7ab jal 80035eac <memset>
-80027fa4: 00c09821 move s3,a2
-
- system_busy = true;
- f = fopen(fname, "r");
-80027fa8: 3c058004 lui a1,0x8004
- return false;
- }
-
- memset(buffer,0,szBuffer);
-
- system_busy = true;
-80027fac: 24020001 li v0,1
-80027fb0: 3c148007 lui s4,0x8007
- f = fopen(fname, "r");
-80027fb4: 24a51234 addiu a1,a1,4660
-80027fb8: 02202021 move a0,s1
-80027fbc: 0c00a40c jal 80029030 <fopen>
-80027fc0: a2821cb0 sb v0,7344(s4)
-
- if(f == NULL)
-80027fc4: 14400007 bnez v0,80027fe4 <SystemLoadFileToBuffer+0x84>
-80027fc8: 00408021 move s0,v0
- {
- dprintf("SystemLoadFile: file could not be found!\n");
-80027fcc: 3c048004 lui a0,0x8004
-80027fd0: 24841238 addiu a0,a0,4664
-80027fd4: 0c00ed8f jal 8003b63c <printf>
-80027fd8: 00000000 nop
- //File couldn't be found
- return false;
-80027fdc: 10000021 b 80028064 <SystemLoadFileToBuffer+0x104>
-80027fe0: 00001021 move v0,zero
- }
-
- fseek(f, 0, SEEK_END);
-80027fe4: 24060002 li a2,2
-80027fe8: 00002821 move a1,zero
-80027fec: 0c00a598 jal 80029660 <fseek>
-80027ff0: 00402021 move a0,v0
-
- size = ftell(f);
-80027ff4: 0c00a58c jal 80029630 <ftell>
-80027ff8: 02002021 move a0,s0
-
- if(size > szBuffer)
-80027ffc: 0262982b sltu s3,s3,v0
-80028000: 12600007 beqz s3,80028020 <SystemLoadFileToBuffer+0xc0>
-80028004: 00409021 move s2,v0
- {
- dprintf("SystemLoadFile: Exceeds file buffer size (%d bytes)\n",size);
-80028008: 3c048004 lui a0,0x8004
-8002800c: 00402821 move a1,v0
-80028010: 0c00ed8f jal 8003b63c <printf>
-80028014: 24841264 addiu a0,a0,4708
-80028018: 10000012 b 80028064 <SystemLoadFileToBuffer+0x104>
-8002801c: 00001021 move v0,zero
- //Bigger than 128 kB (buffer's max size)
- return false;
- }
-
- fseek(f, 0, SEEK_SET); //f->pos = 0;
-80028020: 00003021 move a2,zero
-80028024: 00002821 move a1,zero
-80028028: 0c00a598 jal 80029660 <fseek>
-8002802c: 02002021 move a0,s0
-
- fread(buffer, sizeof(char), size, f);
-80028030: 02003821 move a3,s0
-80028034: 02403021 move a2,s2
-80028038: 24050001 li a1,1
-8002803c: 0c00a4b6 jal 800292d8 <fread>
-80028040: 02a02021 move a0,s5
-
- fclose(f);
-80028044: 0c00a4a0 jal 80029280 <fclose>
-80028048: 02002021 move a0,s0
-
- system_busy = false;
-
- dprintf("File \"%s\" loaded successfully!\n",fname);
-8002804c: 3c048004 lui a0,0x8004
-80028050: 02202821 move a1,s1
-80028054: 2484129c addiu a0,a0,4764
-80028058: 0c00ed8f jal 8003b63c <printf>
-8002805c: a2801cb0 sb zero,7344(s4)
-
- return true;
-80028060: 24020001 li v0,1
-}
-80028064: 8fbf002c lw ra,44(sp)
-80028068: 8fb50028 lw s5,40(sp)
-8002806c: 8fb40024 lw s4,36(sp)
-80028070: 8fb30020 lw s3,32(sp)
-80028074: 8fb2001c lw s2,28(sp)
-80028078: 8fb10018 lw s1,24(sp)
-8002807c: 8fb00014 lw s0,20(sp)
-80028080: 03e00008 jr ra
-80028084: 27bd0030 addiu sp,sp,48
-
-80028088 <SystemLoadFile>:
-
-bool SystemLoadFile(char *fname)
-{
- return SystemLoadFileToBuffer(fname,file_buffer,sizeof(file_buffer));
-80028088: 3c060002 lui a2,0x2
-8002808c: 3c058005 lui a1,0x8005
-80028090: 24c60014 addiu a2,a2,20
-80028094: 08009fd8 j 80027f60 <SystemLoadFileToBuffer>
-80028098: 24a5894c addiu a1,a1,-30388
-
-8002809c <SystemGetBufferAddress>:
-}
-
-uint8_t * SystemGetBufferAddress(void)
-{
- return file_buffer;
-}
-8002809c: 3c028005 lui v0,0x8005
-800280a0: 03e00008 jr ra
-800280a4: 2442894c addiu v0,v0,-30388
-
-800280a8 <SystemWaitCycles>:
-
-void SystemWaitCycles(uint32_t cycles)
-{
- uint64_t currentTime = global_timer;
-800280a8: 3c028007 lui v0,0x8007
-800280ac: 8c461cb8 lw a2,7352(v0)
-800280b0: 8c471cbc lw a3,7356(v0)
-
- while(global_timer < (currentTime + cycles) );
-800280b4: 00863021 addu a2,a0,a2
-800280b8: 00c4202b sltu a0,a2,a0
-800280bc: 00402821 move a1,v0
-800280c0: 00872021 addu a0,a0,a3
-800280c4: 8ca21cb8 lw v0,7352(a1)
-800280c8: 8ca31cbc lw v1,7356(a1)
-800280cc: 00000000 nop
-800280d0: 0064382b sltu a3,v1,a0
-800280d4: 14e0fffb bnez a3,800280c4 <SystemWaitCycles+0x1c>
-800280d8: 00000000 nop
-800280dc: 14830003 bne a0,v1,800280ec <SystemWaitCycles+0x44>
-800280e0: 0046102b sltu v0,v0,a2
-800280e4: 1440fff7 bnez v0,800280c4 <SystemWaitCycles+0x1c>
-800280e8: 00000000 nop
-800280ec: 03e00008 jr ra
-800280f0: 00000000 nop
-
-800280f4 <SystemRand>:
-}
-
-uint32_t SystemRand(uint32_t min, uint32_t max)
-{
-800280f4: 27bdffe0 addiu sp,sp,-32
-800280f8: afb10018 sw s1,24(sp)
-800280fc: afb00014 sw s0,20(sp)
-80028100: 00808821 move s1,a0
-80028104: afbf001c sw ra,28(sp)
- return rand() % (max - min + 1) + min;
-80028108: 0c00d5a9 jal 800356a4 <rand>
-8002810c: 00a08021 move s0,a1
-80028110: 02112823 subu a1,s0,s1
-80028114: 24a50001 addiu a1,a1,1
-80028118: 14a00002 bnez a1,80028124 <SystemRand+0x30>
-8002811c: 0045001b divu zero,v0,a1
-80028120: 0007000d break 0x7
-}
-80028124: 8fbf001c lw ra,28(sp)
-80028128: 8fb00014 lw s0,20(sp)
- while(global_timer < (currentTime + cycles) );
-}
-
-uint32_t SystemRand(uint32_t min, uint32_t max)
-{
- return rand() % (max - min + 1) + min;
-8002812c: 00001010 mfhi v0
-}
-80028130: 00511021 addu v0,v0,s1
-80028134: 8fb10018 lw s1,24(sp)
-80028138: 03e00008 jr ra
-8002813c: 27bd0020 addiu sp,sp,32
-
-80028140 <SystemSetEmergencyMode>:
-
-void SystemSetEmergencyMode(bool value)
-{
- emergency_mode = value;
-80028140: 3c028007 lui v0,0x8007
-80028144: 03e00008 jr ra
-80028148: a0441cb1 sb a0,7345(v0)
-
-8002814c <SystemGetEmergencyMode>:
-}
-
-bool SystemGetEmergencyMode(void)
-{
- return emergency_mode;
-}
-8002814c: 3c028007 lui v0,0x8007
-80028150: 90421cb1 lbu v0,7345(v0)
-80028154: 03e00008 jr ra
-80028158: 00000000 nop
-
-8002815c <SystemIsBusy>:
-
-bool SystemIsBusy(void)
-{
- return system_busy;
-}
-8002815c: 3c028007 lui v0,0x8007
-80028160: 90421cb0 lbu v0,7344(v0)
-80028164: 03e00008 jr ra
-80028168: 00000000 nop
-
-8002816c <SystemContains_u8>:
-
-bool SystemContains_u8(uint8_t value, uint8_t * buffer, size_t sz)
-{
-8002816c: 308400ff andi a0,a0,0xff
-80028170: 00a63021 addu a2,a1,a2
- size_t i = 0;
-
- for(i = 0; i < sz; i++)
-80028174: 10a60007 beq a1,a2,80028194 <SystemContains_u8+0x28>
-80028178: 24a50001 addiu a1,a1,1
- {
- if(buffer[i] == value)
-8002817c: 90a2ffff lbu v0,-1(a1)
-80028180: 00000000 nop
-80028184: 1444fffb bne v0,a0,80028174 <SystemContains_u8+0x8>
-80028188: 24020001 li v0,1
- return true;
- }
- }
-
- return false;
-}
-8002818c: 03e00008 jr ra
-80028190: 00000000 nop
-80028194: 03e00008 jr ra
-80028198: 00001021 move v0,zero
-
-8002819c <SystemContains_u16>:
-
-bool SystemContains_u16(uint16_t value, uint16_t * buffer, size_t sz)
-{
-8002819c: 3084ffff andi a0,a0,0xffff
- size_t i = 0;
-
- for(i = 0; i < sz; i++)
-800281a0: 00001021 move v0,zero
-800281a4: 10460007 beq v0,a2,800281c4 <SystemContains_u16+0x28>
-800281a8: 24a50002 addiu a1,a1,2
- {
- if(buffer[i] == value)
-800281ac: 94a3fffe lhu v1,-2(a1)
-800281b0: 00000000 nop
-800281b4: 10640005 beq v1,a0,800281cc <SystemContains_u16+0x30>
-800281b8: 00000000 nop
-
-bool SystemContains_u16(uint16_t value, uint16_t * buffer, size_t sz)
-{
- size_t i = 0;
-
- for(i = 0; i < sz; i++)
-800281bc: 1000fff9 b 800281a4 <SystemContains_u16+0x8>
-800281c0: 24420001 addiu v0,v0,1
-800281c4: 03e00008 jr ra
-800281c8: 00001021 move v0,zero
- return true;
- }
- }
-
- return false;
-}
-800281cc: 03e00008 jr ra
-800281d0: 24020001 li v0,1
-
-800281d4 <SystemCreateTimer>:
-
-TYPE_TIMER * SystemCreateTimer(uint32_t seconds, bool rf, void (*timer_callback)(void) )
-{
-800281d4: 27bdffe8 addiu sp,sp,-24
- bool success = false;
- uint8_t i;
-
- if(seconds == 0)
-800281d8: 14800004 bnez a0,800281ec <SystemCreateTimer+0x18>
-800281dc: afbf0014 sw ra,20(sp)
- {
- dprintf("Cannot create timer with time == 0!\n");
-800281e0: 3c048004 lui a0,0x8004
-800281e4: 10000019 b 8002824c <SystemCreateTimer+0x78>
-800281e8: 248412bc addiu a0,a0,4796
-800281ec: 3c078005 lui a3,0x8005
-800281f0: 24e7884c addiu a3,a3,-30644
-800281f4: 30a500ff andi a1,a1,0xff
-TYPE_TIMER * SystemCreateTimer(uint32_t seconds, bool rf, void (*timer_callback)(void) )
-{
- bool success = false;
- uint8_t i;
-
- if(seconds == 0)
-800281f8: 00001021 move v0,zero
-800281fc: 00e01821 move v1,a3
- {
- dprintf("Cannot create timer with time == 0!\n");
- return NULL;
- }
-
- for(i = 0; i < SYSTEM_MAX_TIMERS; i++)
-80028200: 24080010 li t0,16
- {
- if(timer_array[i].busy == false)
-80028204: 90e90009 lbu t1,9(a3)
-80028208: 00000000 nop
-8002820c: 1520000b bnez t1,8002823c <SystemCreateTimer+0x68>
-80028210: 24420001 addiu v0,v0,1
-80028214: 2442ffff addiu v0,v0,-1
- {
- timer_array[i].Timeout_Callback = timer_callback;
-80028218: 00021100 sll v0,v0,0x4
-8002821c: 00621021 addu v0,v1,v0
- timer_array[i].time = seconds;
- timer_array[i].orig_time = seconds;
- timer_array[i].repeat_flag = rf;
- timer_array[i].busy = true;
-80028220: 24030001 li v1,1
-
- for(i = 0; i < SYSTEM_MAX_TIMERS; i++)
- {
- if(timer_array[i].busy == false)
- {
- timer_array[i].Timeout_Callback = timer_callback;
-80028224: ac46000c sw a2,12(v0)
- timer_array[i].time = seconds;
-80028228: ac440000 sw a0,0(v0)
- timer_array[i].orig_time = seconds;
-8002822c: ac440004 sw a0,4(v0)
- timer_array[i].repeat_flag = rf;
-80028230: a0450008 sb a1,8(v0)
- {
- dprintf("Could not find any free timer!\n");
- return NULL;
- }
-
- return &timer_array[i];
-80028234: 10000008 b 80028258 <SystemCreateTimer+0x84>
-80028238: a0430009 sb v1,9(v0)
- {
- dprintf("Cannot create timer with time == 0!\n");
- return NULL;
- }
-
- for(i = 0; i < SYSTEM_MAX_TIMERS; i++)
-8002823c: 1448fff1 bne v0,t0,80028204 <SystemCreateTimer+0x30>
-80028240: 24e70010 addiu a3,a3,16
- }
- }
-
- if(success == false)
- {
- dprintf("Could not find any free timer!\n");
-80028244: 3c048004 lui a0,0x8004
-80028248: 248412e4 addiu a0,a0,4836
-8002824c: 0c00ed8f jal 8003b63c <printf>
-80028250: 00000000 nop
- return NULL;
-80028254: 00001021 move v0,zero
- }
-
- return &timer_array[i];
-}
-80028258: 8fbf0014 lw ra,20(sp)
-8002825c: 00000000 nop
-80028260: 03e00008 jr ra
-80028264: 27bd0018 addiu sp,sp,24
-
-80028268 <SystemResetTimers>:
-
-void SystemResetTimers(void)
-{
-80028268: 3c028005 lui v0,0x8005
-8002826c: 3c038005 lui v1,0x8005
-80028270: 2442884c addiu v0,v0,-30644
-80028274: 2463894c addiu v1,v1,-30388
- uint8_t i;
-
- for(i = 0; i < SYSTEM_MAX_TIMERS; i++)
- {
- timer_array[i].Timeout_Callback = NULL;
-80028278: ac40000c sw zero,12(v0)
- timer_array[i].busy = false;
-8002827c: a0400009 sb zero,9(v0)
- timer_array[i].repeat_flag = false;
-80028280: a0400008 sb zero,8(v0)
- timer_array[i].time = 0;
-80028284: ac400000 sw zero,0(v0)
- timer_array[i].orig_time = 0;
-80028288: ac400004 sw zero,4(v0)
-8002828c: 24420010 addiu v0,v0,16
-
-void SystemResetTimers(void)
-{
- uint8_t i;
-
- for(i = 0; i < SYSTEM_MAX_TIMERS; i++)
-80028290: 1443fff9 bne v0,v1,80028278 <SystemResetTimers+0x10>
-80028294: 00000000 nop
- timer_array[i].busy = false;
- timer_array[i].repeat_flag = false;
- timer_array[i].time = 0;
- timer_array[i].orig_time = 0;
- }
-}
-80028298: 03e00008 jr ra
-8002829c: 00000000 nop
-
-800282a0 <SystemInit>:
- * *************************************/
-
-void SystemInit(void)
-{
- //Reset global timer
- global_timer = 0;
-800282a0: 00002821 move a1,zero
-800282a4: 3c028007 lui v0,0x8007
-800282a8: 00002021 move a0,zero
- * @author: Xavier Del Campo
- * @brief:
- * *************************************/
-
-void SystemInit(void)
-{
-800282ac: 27bdffe8 addiu sp,sp,-24
- //Reset global timer
- global_timer = 0;
-800282b0: ac441cb8 sw a0,7352(v0)
-800282b4: ac451cbc sw a1,7356(v0)
- //Reset 1 second timer
- one_second_timer = 0;
- //PSXSDK init
- PSX_InitEx(PSX_INIT_SAVESTATE | PSX_INIT_CD);
-800282b8: 24040003 li a0,3
-void SystemInit(void)
-{
- //Reset global timer
- global_timer = 0;
- //Reset 1 second timer
- one_second_timer = 0;
-800282bc: 3c028007 lui v0,0x8007
-800282c0: a0401cb4 sb zero,7348(v0)
- * @author: Xavier Del Campo
- * @brief:
- * *************************************/
-
-void SystemInit(void)
-{
-800282c4: afbf0014 sw ra,20(sp)
- //Reset global timer
- global_timer = 0;
- //Reset 1 second timer
- one_second_timer = 0;
- //PSXSDK init
- PSX_InitEx(PSX_INIT_SAVESTATE | PSX_INIT_CD);
-800282c8: 0c00cfe4 jal 80033f90 <PSX_InitEx>
-800282cc: afb00010 sw s0,16(sp)
- //Graphics init
- GsInit();
-800282d0: 0c00bc55 jal 8002f154 <GsInit>
-800282d4: 3c10f200 lui s0,0xf200
- //Clear VRAM
- GsClearMem();
-800282d8: 0c00bd74 jal 8002f5d0 <GsClearMem>
-800282dc: 00000000 nop
- //Set Video Resolution
-#ifdef _PAL_MODE_
- GsSetVideoMode(X_SCREEN_RESOLUTION, Y_SCREEN_RESOLUTION, VMODE_PAL);
-800282e0: 24060001 li a2,1
-800282e4: 240500f0 li a1,240
-800282e8: 0c00bc63 jal 8002f18c <GsSetVideoMode>
-800282ec: 24040180 li a0,384
-#else
- GsSetVideoMode(X_SCREEN_RESOLUTION, Y_SCREEN_RESOLUTION, VMODE_NTSC);
-#endif //_PAL_MODE_
- //SPU init
- SsInit();
-800282f0: 0c00ccb2 jal 800332c8 <SsInit>
-800282f4: 00000000 nop
- //Reset all user-handled timers
- SystemResetTimers();
-800282f8: 0c00a09a jal 80028268 <SystemResetTimers>
-800282fc: 00000000 nop
- //Pads init
- PadInit();
-80028300: 0c009b8d jal 80026e34 <PadInit>
-80028304: 00000000 nop
- //Set Drawing Environment
- GfxInitDrawEnv();
-80028308: 0c008faf jal 80023ebc <GfxInitDrawEnv>
-8002830c: 00000000 nop
- //Set Display Environment
- GfxInitDispEnv();
-80028310: 0c008fb9 jal 80023ee4 <GfxInitDispEnv>
-80028314: 00000000 nop
- //Set VBlank Handler for screen refresh
- SetVBlankHandler(&ISR_SystemDefaultVBlank);
-80028318: 3c048002 lui a0,0x8002
-8002831c: 0c00d35e jal 80034d78 <SetVBlankHandler>
-80028320: 24847ea0 addiu a0,a0,32416
- //Set Primitive List
- GfxSetPrimitiveList();
-80028324: 0c008fbe jal 80023ef8 <GfxSetPrimitiveList>
-80028328: 00000000 nop
- // Init memory card
- MemCardInit();
-8002832c: 0c009545 jal 80025514 <MemCardInit>
-80028330: 00000000 nop
- //Initial value for system_busy
- system_busy = false;
-80028334: 3c028007 lui v0,0x8007
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-80028338: 24040080 li a0,128
-8002833c: 0c00900b jal 8002402c <GfxSetGlobalLuminance>
-80028340: a0401cb0 sb zero,7344(v0)
-{
- uint32_t * ptrStack = BEGIN_STACK_ADDRESS;
-
- ptrStack -= STACK_SIZE;
-
- *ptrStack = END_STACK_PATTERN;
-80028344: 3c031802 lui v1,0x1802
-80028348: 3c02801f lui v0,0x801f
-8002834c: 24632015 addiu v1,v1,8213
-80028350: 3442bf00 ori v0,v0,0xbf00
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-
- SystemSetStackPattern();
-
- SetRCnt(RCntCNT2,0xFFFF,RCntSC);
-80028354: 26040002 addiu a0,s0,2
-{
- uint32_t * ptrStack = BEGIN_STACK_ADDRESS;
-
- ptrStack -= STACK_SIZE;
-
- *ptrStack = END_STACK_PATTERN;
-80028358: ac430000 sw v1,0(v0)
-
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-
- SystemSetStackPattern();
-
- SetRCnt(RCntCNT2,0xFFFF,RCntSC);
-8002835c: 24060001 li a2,1
-80028360: 0c00d2c8 jal 80034b20 <SetRCnt>
-80028364: 3405ffff li a1,0xffff
- StartRCnt(RCntCNT2);
-}
-80028368: 8fbf0014 lw ra,20(sp)
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-
- SystemSetStackPattern();
-
- SetRCnt(RCntCNT2,0xFFFF,RCntSC);
- StartRCnt(RCntCNT2);
-8002836c: 36040002 ori a0,s0,0x2
-}
-80028370: 8fb00010 lw s0,16(sp)
- GfxSetGlobalLuminance(NORMAL_LUMINANCE);
-
- SystemSetStackPattern();
-
- SetRCnt(RCntCNT2,0xFFFF,RCntSC);
- StartRCnt(RCntCNT2);
-80028374: 0800d31a j 80034c68 <StartRCnt>
-80028378: 27bd0018 addiu sp,sp,24
-
-8002837c <SystemUserTimersHandler>:
- timer_array[i].orig_time = 0;
- }
-}
-
-void SystemUserTimersHandler(void)
-{
-8002837c: 27bdffe0 addiu sp,sp,-32
-80028380: afb10014 sw s1,20(sp)
-80028384: afb00010 sw s0,16(sp)
-80028388: 3c118005 lui s1,0x8005
-8002838c: 3c108005 lui s0,0x8005
-80028390: afb20018 sw s2,24(sp)
-80028394: afbf001c sw ra,28(sp)
-80028398: 2610884c addiu s0,s0,-30644
-8002839c: 2631894c addiu s1,s1,-30388
- refresh_needed = false;
-}
-
-bool System1SecondTick(void)
-{
- return one_second_timer;
-800283a0: 3c128007 lui s2,0x8007
-{
- uint8_t i;
-
- for(i = 0; i < SYSTEM_MAX_TIMERS; i++)
- {
- if(timer_array[i].busy == true)
-800283a4: 92020009 lbu v0,9(s0)
-800283a8: 00000000 nop
-800283ac: 10400018 beqz v0,80028410 <SystemUserTimersHandler+0x94>
-800283b0: 00000000 nop
- {
- if(System1SecondTick() == true)
-800283b4: 92421cb4 lbu v0,7348(s2)
-800283b8: 00000000 nop
-800283bc: 10400014 beqz v0,80028410 <SystemUserTimersHandler+0x94>
-800283c0: 00000000 nop
- {
- timer_array[i].time--;
-800283c4: 8e020000 lw v0,0(s0)
-800283c8: 00000000 nop
-800283cc: 2442ffff addiu v0,v0,-1
-
- if(timer_array[i].time == 0)
-800283d0: 1440000f bnez v0,80028410 <SystemUserTimersHandler+0x94>
-800283d4: ae020000 sw v0,0(s0)
- {
- timer_array[i].Timeout_Callback();
-800283d8: 8e02000c lw v0,12(s0)
-800283dc: 00000000 nop
-800283e0: 0040f809 jalr v0
-800283e4: 00000000 nop
-
- if(timer_array[i].repeat_flag == true)
-800283e8: 92020008 lbu v0,8(s0)
-800283ec: 00000000 nop
-800283f0: 10400004 beqz v0,80028404 <SystemUserTimersHandler+0x88>
-800283f4: 00000000 nop
- {
- timer_array[i].time = timer_array[i].orig_time;
-800283f8: 8e020004 lw v0,4(s0)
-800283fc: 10000004 b 80028410 <SystemUserTimersHandler+0x94>
-80028400: ae020000 sw v0,0(s0)
- }
- else
- {
- // Clean timer data
- timer_array[i].busy = false;
-80028404: a2000009 sb zero,9(s0)
- timer_array[i].orig_time = 0;
-80028408: ae000004 sw zero,4(s0)
- timer_array[i].Timeout_Callback = NULL;
-8002840c: ae00000c sw zero,12(s0)
-80028410: 26100010 addiu s0,s0,16
-
-void SystemUserTimersHandler(void)
-{
- uint8_t i;
-
- for(i = 0; i < SYSTEM_MAX_TIMERS; i++)
-80028414: 1611ffe3 bne s0,s1,800283a4 <SystemUserTimersHandler+0x28>
-80028418: 00000000 nop
- }
- }
- }
- }
- }
-}
-8002841c: 8fbf001c lw ra,28(sp)
-80028420: 8fb20018 lw s2,24(sp)
-80028424: 8fb10014 lw s1,20(sp)
-80028428: 8fb00010 lw s0,16(sp)
-8002842c: 03e00008 jr ra
-80028430: 27bd0020 addiu sp,sp,32
-
-80028434 <SystemTimerRestart>:
-
-void SystemTimerRestart(TYPE_TIMER * timer)
-{
- timer->time = timer->orig_time;
-80028434: 8c820004 lw v0,4(a0)
-80028438: 03e00008 jr ra
-8002843c: ac820000 sw v0,0(a0)
-
-80028440 <SystemTimerRemove>:
-}
-
-void SystemTimerRemove(TYPE_TIMER * timer)
-{
- timer->time = 0;
-80028440: ac800000 sw zero,0(a0)
- timer->orig_time = 0;
-80028444: ac800004 sw zero,4(a0)
- timer->Timeout_Callback = NULL;
-80028448: ac80000c sw zero,12(a0)
- timer->busy = false;
-8002844c: a0800009 sb zero,9(a0)
- timer->repeat_flag = false;
-80028450: 03e00008 jr ra
-80028454: a0800008 sb zero,8(a0)
-
-80028458 <SystemArrayCompare>:
-
-bool SystemArrayCompare(unsigned short * arr1, unsigned short * arr2, size_t sz)
-{
- size_t i;
-
- for(i = 0; i < sz; i++)
-80028458: 00001021 move v0,zero
-8002845c: 10460008 beq v0,a2,80028480 <SystemArrayCompare+0x28>
-80028460: 00000000 nop
- {
- if(arr1[i] != arr2[i])
-80028464: 94870000 lhu a3,0(a0)
-80028468: 94a30000 lhu v1,0(a1)
-8002846c: 24840002 addiu a0,a0,2
-80028470: 14e30005 bne a3,v1,80028488 <SystemArrayCompare+0x30>
-80028474: 24a50002 addiu a1,a1,2
-
-bool SystemArrayCompare(unsigned short * arr1, unsigned short * arr2, size_t sz)
-{
- size_t i;
-
- for(i = 0; i < sz; i++)
-80028478: 1000fff8 b 8002845c <SystemArrayCompare+0x4>
-8002847c: 24420001 addiu v0,v0,1
-80028480: 03e00008 jr ra
-80028484: 24020001 li v0,1
- return false;
- }
- }
-
- return true;
-}
-80028488: 03e00008 jr ra
-8002848c: 00001021 move v0,zero
-
-80028490 <SystemPrintStackPointerAddress>:
-
-void SystemPrintStackPointerAddress(void)
-{
-80028490: 27bdffd0 addiu sp,sp,-48
-80028494: afb00020 sw s0,32(sp)
-static const fix16_t fix16_one = 0x00010000; /*!< fix16_t value of 1 */
-
-/* Conversion functions between fix16_t and float/integer.
- * These are inlined to allow compiler to optimize away constant numbers
- */
-static inline fix16_t fix16_from_int(int a) { return a * fix16_one; }
-80028498: 3c10801f lui s0,0x801f
-8002849c: afb10024 sw s1,36(sp)
-800284a0: 3610ff00 ori s0,s0,0xff00
-800284a4: 27b10018 addiu s1,sp,24
-800284a8: 02118023 subu s0,s0,s1
-800284ac: 00108400 sll s0,s0,0x10
-#ifdef PSXSDK_DEBUG // Used to avoid unused variable warning
- void * ptr = NULL;
- fix16_t used_bytes = fix16_from_int((int)((void*)BEGIN_STACK_ADDRESS - (void*)&ptr));
- fix16_t stackPercent = fix16_sdiv(used_bytes,fix16_from_int((int)STACK_SIZE));
-800284b0: 3c051000 lui a1,0x1000
-800284b4: 02002021 move a0,s0
-
- return true;
-}
-
-void SystemPrintStackPointerAddress(void)
-{
-800284b8: afbf002c sw ra,44(sp)
-800284bc: afb20028 sw s2,40(sp)
-#ifdef PSXSDK_DEBUG // Used to avoid unused variable warning
- void * ptr = NULL;
- fix16_t used_bytes = fix16_from_int((int)((void*)BEGIN_STACK_ADDRESS - (void*)&ptr));
- fix16_t stackPercent = fix16_sdiv(used_bytes,fix16_from_int((int)STACK_SIZE));
-800284c0: 0c00a281 jal 80028a04 <fix16_sdiv>
-800284c4: afa00018 sw zero,24(sp)
-
- stackPercent = fix16_smul(stackPercent, fix16_from_int((int)100));
-800284c8: 00402021 move a0,v0
-800284cc: 0c00a1f8 jal 800287e0 <fix16_smul>
-800284d0: 3c050064 lui a1,0x64
-
- dprintf("stackPercent: %d\n", stackPercent);
-800284d4: 3c048004 lui a0,0x8004
-#ifdef PSXSDK_DEBUG // Used to avoid unused variable warning
- void * ptr = NULL;
- fix16_t used_bytes = fix16_from_int((int)((void*)BEGIN_STACK_ADDRESS - (void*)&ptr));
- fix16_t stackPercent = fix16_sdiv(used_bytes,fix16_from_int((int)STACK_SIZE));
-
- stackPercent = fix16_smul(stackPercent, fix16_from_int((int)100));
-800284d8: 00409021 move s2,v0
-
- dprintf("stackPercent: %d\n", stackPercent);
-800284dc: 00402821 move a1,v0
-800284e0: 0c00ed8f jal 8003b63c <printf>
-800284e4: 24841304 addiu a0,a0,4868
-static inline int fix16_to_int(fix16_t a)
-{
-#ifdef FIXMATH_NO_ROUNDING
- return a >> 16;
-#else
- if (a >= 0)
-800284e8: 06400003 bltz s2,800284f8 <SystemPrintStackPointerAddress+0x68>
-800284ec: 26478000 addiu a3,s2,-32768
- return (a + fix16_one / 2) / fix16_one;
-800284f0: 34078000 li a3,0x8000
-800284f4: 02473821 addu a3,s2,a3
- else
- return (a - fix16_one / 2) / fix16_one;
-800284f8: 00071fc3 sra v1,a3,0x1f
-800284fc: 3063ffff andi v1,v1,0xffff
-80028500: 00673821 addu a3,v1,a3
-static inline int fix16_to_int(fix16_t a)
-{
-#ifdef FIXMATH_NO_ROUNDING
- return a >> 16;
-#else
- if (a >= 0)
-80028504: 06000004 bltz s0,80028518 <SystemPrintStackPointerAddress+0x88>
-80028508: 00073c03 sra a3,a3,0x10
- return (a + fix16_one / 2) / fix16_one;
-8002850c: 34028000 li v0,0x8000
-80028510: 10000002 b 8002851c <SystemPrintStackPointerAddress+0x8c>
-80028514: 02028021 addu s0,s0,v0
- else
- return (a - fix16_one / 2) / fix16_one;
-80028518: 26108000 addiu s0,s0,-32768
-8002851c: 001017c3 sra v0,s0,0x1f
-80028520: 3042ffff andi v0,v0,0xffff
-80028524: 00508021 addu s0,v0,s0
-80028528: 00108403 sra s0,s0,0x10
-
- dprintf("Stack begin pointer: 0x%08X\n"
-8002852c: 3c05801f lui a1,0x801f
-80028530: 3c048004 lui a0,0x8004
-80028534: afb00010 sw s0,16(sp)
-80028538: 02203021 move a2,s1
-8002853c: 34a5ff00 ori a1,a1,0xff00
-80028540: 0c00ed8f jal 8003b63c <printf>
-80028544: 24841318 addiu a0,a0,4888
- (void*)&ptr,
- fix16_to_int(stackPercent),
- fix16_to_int(used_bytes) );
-#endif // PSXSDK_DEBUG
-
-}
-80028548: 8fbf002c lw ra,44(sp)
-8002854c: 8fb20028 lw s2,40(sp)
-80028550: 8fb10024 lw s1,36(sp)
-80028554: 8fb00020 lw s0,32(sp)
-80028558: 03e00008 jr ra
-8002855c: 27bd0030 addiu sp,sp,48
-
-80028560 <SystemCheckStack>:
-{
- uint32_t * ptrStack = BEGIN_STACK_ADDRESS;
- uint32_t data;
-
- ptrStack -= STACK_SIZE;
- data = (*ptrStack);
-80028560: 3c02801f lui v0,0x801f
-80028564: 3442bf00 ori v0,v0,0xbf00
-
- if(data != END_STACK_PATTERN)
-80028568: 8c430000 lw v1,0(v0)
-8002856c: 3c021802 lui v0,0x1802
-80028570: 24422015 addiu v0,v0,8213
-80028574: 10620007 beq v1,v0,80028594 <SystemCheckStack+0x34>
-80028578: 3c048004 lui a0,0x8004
-#endif // PSXSDK_DEBUG
-
-}
-
-void SystemCheckStack(void)
-{
-8002857c: 27bdffe8 addiu sp,sp,-24
-80028580: afbf0014 sw ra,20(sp)
- ptrStack -= STACK_SIZE;
- data = (*ptrStack);
-
- if(data != END_STACK_PATTERN)
- {
- dprintf("Stack overflow?\n");
-80028584: 0c00ed8f jal 8003b63c <printf>
-80028588: 2484137c addiu a0,a0,4988
-8002858c: 1000ffff b 8002858c <SystemCheckStack+0x2c>
-80028590: 00000000 nop
-80028594: 03e00008 jr ra
-80028598: 00000000 nop
-
-8002859c <SystemIndexOfStringArray>:
-
- *ptrStack = END_STACK_PATTERN;
-}
-
-int32_t SystemIndexOfStringArray(char * str, char ** array)
-{
-8002859c: 27bdffd8 addiu sp,sp,-40
-800285a0: afb2001c sw s2,28(sp)
- int32_t i;
-
- for(i = 0; array[i] != NULL; i++)
- {
- dprintf("String to find: %s\nEntry: %s\n", str, array[i]);
-800285a4: 3c128004 lui s2,0x8004
-
- *ptrStack = END_STACK_PATTERN;
-}
-
-int32_t SystemIndexOfStringArray(char * str, char ** array)
-{
-800285a8: afb30020 sw s3,32(sp)
-800285ac: afb10018 sw s1,24(sp)
-800285b0: afb00014 sw s0,20(sp)
-800285b4: afbf0024 sw ra,36(sp)
-800285b8: 00809821 move s3,a0
-800285bc: 00a08821 move s1,a1
- int32_t i;
-
- for(i = 0; array[i] != NULL; i++)
-800285c0: 00008021 move s0,zero
- {
- dprintf("String to find: %s\nEntry: %s\n", str, array[i]);
-800285c4: 26521390 addiu s2,s2,5008
-
-int32_t SystemIndexOfStringArray(char * str, char ** array)
-{
- int32_t i;
-
- for(i = 0; array[i] != NULL; i++)
-800285c8: 8e260000 lw a2,0(s1)
-800285cc: 00000000 nop
-800285d0: 10c00010 beqz a2,80028614 <SystemIndexOfStringArray+0x78>
-800285d4: 02602821 move a1,s3
- {
- dprintf("String to find: %s\nEntry: %s\n", str, array[i]);
-800285d8: 0c00ed8f jal 8003b63c <printf>
-800285dc: 02402021 move a0,s2
-
- if(strcmp(str, array[i]) == 0)
-800285e0: 8e250000 lw a1,0(s1)
-800285e4: 0c00d9aa jal 800366a8 <strcmp>
-800285e8: 02602021 move a0,s3
-800285ec: 14400007 bnez v0,8002860c <SystemIndexOfStringArray+0x70>
-800285f0: 26310004 addiu s1,s1,4
- {
- dprintf("Match! Returning index %d...\n", i);
-800285f4: 3c048004 lui a0,0x8004
-800285f8: 02002821 move a1,s0
-800285fc: 0c00ed8f jal 8003b63c <printf>
-80028600: 248413b0 addiu a0,a0,5040
- return i;
-80028604: 10000004 b 80028618 <SystemIndexOfStringArray+0x7c>
-80028608: 02001021 move v0,s0
-
-int32_t SystemIndexOfStringArray(char * str, char ** array)
-{
- int32_t i;
-
- for(i = 0; array[i] != NULL; i++)
-8002860c: 1000ffee b 800285c8 <SystemIndexOfStringArray+0x2c>
-80028610: 26100001 addiu s0,s0,1
- dprintf("Match! Returning index %d...\n", i);
- return i;
- }
- }
-
- return -1;
-80028614: 2402ffff li v0,-1
-}
-80028618: 8fbf0024 lw ra,36(sp)
-8002861c: 8fb30020 lw s3,32(sp)
-80028620: 8fb2001c lw s2,28(sp)
-80028624: 8fb10018 lw s1,24(sp)
-80028628: 8fb00014 lw s0,20(sp)
-8002862c: 03e00008 jr ra
-80028630: 27bd0028 addiu sp,sp,40
-
-80028634 <SystemIndexOf_U16>:
-
-int32_t SystemIndexOf_U16(uint16_t value, uint16_t * array, uint32_t sz)
-{
-80028634: 3084ffff andi a0,a0,0xffff
- int32_t i;
-
- for(i = 0; i < sz; i++)
-80028638: 00001021 move v0,zero
-8002863c: 10460007 beq v0,a2,8002865c <SystemIndexOf_U16+0x28>
-80028640: 24a50002 addiu a1,a1,2
- {
- if(value == array[i])
-80028644: 94a3fffe lhu v1,-2(a1)
-80028648: 00000000 nop
-8002864c: 10640004 beq v1,a0,80028660 <SystemIndexOf_U16+0x2c>
-80028650: 00000000 nop
-
-int32_t SystemIndexOf_U16(uint16_t value, uint16_t * array, uint32_t sz)
-{
- int32_t i;
-
- for(i = 0; i < sz; i++)
-80028654: 1000fff9 b 8002863c <SystemIndexOf_U16+0x8>
-80028658: 24420001 addiu v0,v0,1
- {
- return i;
- }
- }
-
- return -1;
-8002865c: 2402ffff li v0,-1
-}
-80028660: 03e00008 jr ra
-80028664: 00000000 nop
-
-80028668 <SystemIndexOf_U8>:
-
-int32_t SystemIndexOf_U8(uint8_t value, uint8_t * array, uint32_t from, uint32_t sz)
-{
-80028668: 308400ff andi a0,a0,0xff
- int32_t i;
-
- for(i = from; i < sz; i++)
-8002866c: 00c7102b sltu v0,a2,a3
-80028670: 10400008 beqz v0,80028694 <SystemIndexOf_U8+0x2c>
-80028674: 00000000 nop
- {
- if(value == array[i])
-80028678: 00a61021 addu v0,a1,a2
-8002867c: 90420000 lbu v0,0(v0)
-80028680: 00000000 nop
-80028684: 10440005 beq v0,a0,8002869c <SystemIndexOf_U8+0x34>
-80028688: 00000000 nop
-
-int32_t SystemIndexOf_U8(uint8_t value, uint8_t * array, uint32_t from, uint32_t sz)
-{
- int32_t i;
-
- for(i = from; i < sz; i++)
-8002868c: 1000fff7 b 8002866c <SystemIndexOf_U8+0x4>
-80028690: 24c60001 addiu a2,a2,1
-80028694: 03e00008 jr ra
-80028698: 2402ffff li v0,-1
- return i;
- }
- }
-
- return -1;
-}
-8002869c: 03e00008 jr ra
-800286a0: 00c01021 move v0,a2
-
-800286a4 <fix16_add>:
- uint32_t _a = a, _b = b;
- uint32_t sum = _a + _b;
-
- // Overflow can only happen if sign of a == sign of b, and then
- // it causes sign of sum != sign of a.
- if (!((_a ^ _b) & 0x80000000) && ((_a ^ sum) & 0x80000000))
-800286a4: 00851826 xor v1,a0,a1
-800286a8: 04600004 bltz v1,800286bc <fix16_add+0x18>
-800286ac: 00851021 addu v0,a0,a1
-800286b0: 00822026 xor a0,a0,v0
-800286b4: 04800003 bltz a0,800286c4 <fix16_add+0x20>
-800286b8: 00000000 nop
- return fix16_overflow;
-
- return sum;
-}
-800286bc: 03e00008 jr ra
-800286c0: 00000000 nop
-800286c4: 03e00008 jr ra
-800286c8: 3c028000 lui v0,0x8000
-
-800286cc <fix16_sub>:
- uint32_t _a = a, _b = b;
- uint32_t diff = _a - _b;
-
- // Overflow can only happen if sign of a != sign of b, and then
- // it causes sign of diff != sign of a.
- if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000))
-800286cc: 00851826 xor v1,a0,a1
-800286d0: 04600003 bltz v1,800286e0 <fix16_sub+0x14>
-800286d4: 00851023 subu v0,a0,a1
- return fix16_overflow;
-
- return diff;
-}
-800286d8: 03e00008 jr ra
-800286dc: 00000000 nop
- uint32_t _a = a, _b = b;
- uint32_t diff = _a - _b;
-
- // Overflow can only happen if sign of a != sign of b, and then
- // it causes sign of diff != sign of a.
- if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000))
-800286e0: 00822026 xor a0,a0,v0
-800286e4: 0481fffc bgez a0,800286d8 <fix16_sub+0xc>
-800286e8: 00000000 nop
- return fix16_overflow;
-
- return diff;
-}
-800286ec: 03e00008 jr ra
-800286f0: 3c028000 lui v0,0x8000
-
-800286f4 <fix16_sadd>:
- uint32_t _a = a, _b = b;
- uint32_t sum = _a + _b;
-
- // Overflow can only happen if sign of a == sign of b, and then
- // it causes sign of sum != sign of a.
- if (!((_a ^ _b) & 0x80000000) && ((_a ^ sum) & 0x80000000))
-800286f4: 00851826 xor v1,a0,a1
-800286f8: 04600004 bltz v1,8002870c <fix16_sadd+0x18>
-800286fc: 00851021 addu v0,a0,a1
-80028700: 00821826 xor v1,a0,v0
-80028704: 04600006 bltz v1,80028720 <fix16_sadd+0x2c>
-80028708: 00000000 nop
-/* Saturating arithmetic */
-fix16_t fix16_sadd(fix16_t a, fix16_t b)
-{
- fix16_t result = fix16_add(a, b);
-
- if (result == fix16_overflow)
-8002870c: 3c038000 lui v1,0x8000
-80028710: 10430003 beq v0,v1,80028720 <fix16_sadd+0x2c>
-80028714: 00000000 nop
- return (a > 0) ? fix16_max : fix16_min;
-
- return result;
-}
-80028718: 03e00008 jr ra
-8002871c: 00000000 nop
-fix16_t fix16_sadd(fix16_t a, fix16_t b)
-{
- fix16_t result = fix16_add(a, b);
-
- if (result == fix16_overflow)
- return (a > 0) ? fix16_max : fix16_min;
-80028720: 18800004 blez a0,80028734 <fix16_sadd+0x40>
-80028724: 00000000 nop
-80028728: 3c027fff lui v0,0x7fff
-
- return result;
-}
-8002872c: 03e00008 jr ra
-80028730: 3442ffff ori v0,v0,0xffff
-fix16_t fix16_sadd(fix16_t a, fix16_t b)
-{
- fix16_t result = fix16_add(a, b);
-
- if (result == fix16_overflow)
- return (a > 0) ? fix16_max : fix16_min;
-80028734: 03e00008 jr ra
-80028738: 3c028000 lui v0,0x8000
-
-8002873c <fix16_ssub>:
- uint32_t _a = a, _b = b;
- uint32_t diff = _a - _b;
-
- // Overflow can only happen if sign of a != sign of b, and then
- // it causes sign of diff != sign of a.
- if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000))
-8002873c: 00851826 xor v1,a0,a1
-80028740: 04600006 bltz v1,8002875c <fix16_ssub+0x20>
-80028744: 00851023 subu v0,a0,a1
-
-fix16_t fix16_ssub(fix16_t a, fix16_t b)
-{
- fix16_t result = fix16_sub(a, b);
-
- if (result == fix16_overflow)
-80028748: 3c038000 lui v1,0x8000
-8002874c: 10430006 beq v0,v1,80028768 <fix16_ssub+0x2c>
-80028750: 00000000 nop
- return (a > 0) ? fix16_max : fix16_min;
-
- return result;
-}
-80028754: 03e00008 jr ra
-80028758: 00000000 nop
- uint32_t _a = a, _b = b;
- uint32_t diff = _a - _b;
-
- // Overflow can only happen if sign of a != sign of b, and then
- // it causes sign of diff != sign of a.
- if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000))
-8002875c: 00821826 xor v1,a0,v0
-80028760: 0461fffa bgez v1,8002874c <fix16_ssub+0x10>
-80028764: 3c038000 lui v1,0x8000
-fix16_t fix16_ssub(fix16_t a, fix16_t b)
-{
- fix16_t result = fix16_sub(a, b);
-
- if (result == fix16_overflow)
- return (a > 0) ? fix16_max : fix16_min;
-80028768: 18800004 blez a0,8002877c <fix16_ssub+0x40>
-8002876c: 00000000 nop
-80028770: 3c027fff lui v0,0x7fff
-
- return result;
-}
-80028774: 03e00008 jr ra
-80028778: 3442ffff ori v0,v0,0xffff
-fix16_t fix16_ssub(fix16_t a, fix16_t b)
-{
- fix16_t result = fix16_sub(a, b);
-
- if (result == fix16_overflow)
- return (a > 0) ? fix16_max : fix16_min;
-8002877c: 03e00008 jr ra
-80028780: 3c028000 lui v0,0x8000
-
-80028784 <fix16_mul>:
- */
-
-#if !defined(FIXMATH_NO_64BIT) && !defined(FIXMATH_OPTIMIZE_8BIT)
-fix16_t fix16_mul(fix16_t inArg0, fix16_t inArg1)
-{
- int64_t product = (int64_t)inArg0 * inArg1;
-80028784: 00850018 mult a0,a1
-80028788: 00002810 mfhi a1
-8002878c: 00002012 mflo a0
- #ifndef FIXMATH_NO_OVERFLOW
- // The upper 17 bits should all be the same (the sign).
- uint32_t upper = (product >> 47);
- #endif
-
- if (product < 0)
-80028790: 04a1000f bgez a1,800287d0 <fix16_mul+0x4c>
-80028794: 000513c3 sra v0,a1,0xf
- {
- #ifndef FIXMATH_NO_OVERFLOW
- if (~upper)
-80028798: 2403ffff li v1,-1
-8002879c: 1443000e bne v0,v1,800287d8 <fix16_mul+0x54>
-800287a0: 24a3ffff addiu v1,a1,-1
- return fix16_overflow;
- #endif
-
- #ifndef FIXMATH_NO_ROUNDING
- // This adjustment is required in order to round -1/2 correctly
- product--;
-800287a4: 2482ffff addiu v0,a0,-1
-800287a8: 0044302b sltu a2,v0,a0
-800287ac: 00402021 move a0,v0
-800287b0: 00c32821 addu a1,a2,v1
-
- #ifdef FIXMATH_NO_ROUNDING
- return product >> 16;
- #else
- fix16_t result = product >> 16;
- result += (product & 0x8000) >> 15;
-800287b4: 30828000 andi v0,a0,0x8000
-800287b8: 00051c00 sll v1,a1,0x10
-800287bc: 00042402 srl a0,a0,0x10
-800287c0: 00642025 or a0,v1,a0
-800287c4: 000213c2 srl v0,v0,0xf
-
- return result;
-800287c8: 03e00008 jr ra
-800287cc: 00441021 addu v0,v0,a0
- #endif
- }
- else
- {
- #ifndef FIXMATH_NO_OVERFLOW
- if (upper)
-800287d0: 1040fff8 beqz v0,800287b4 <fix16_mul+0x30>
-800287d4: 00000000 nop
- fix16_t result = product >> 16;
- result += (product & 0x8000) >> 15;
-
- return result;
- #endif
-}
-800287d8: 03e00008 jr ra
-800287dc: 3c028000 lui v0,0x8000
-
-800287e0 <fix16_smul>:
- */
-
-#if !defined(FIXMATH_NO_64BIT) && !defined(FIXMATH_OPTIMIZE_8BIT)
-fix16_t fix16_mul(fix16_t inArg0, fix16_t inArg1)
-{
- int64_t product = (int64_t)inArg0 * inArg1;
-800287e0: 00850018 mult a0,a1
-800287e4: 00001810 mfhi v1
-800287e8: 00001012 mflo v0
- #ifndef FIXMATH_NO_OVERFLOW
- // The upper 17 bits should all be the same (the sign).
- uint32_t upper = (product >> 47);
- #endif
-
- if (product < 0)
-800287ec: 0461000c bgez v1,80028820 <fix16_smul+0x40>
-800287f0: 000333c3 sra a2,v1,0xf
- {
- #ifndef FIXMATH_NO_OVERFLOW
- if (~upper)
-800287f4: 2407ffff li a3,-1
-800287f8: 10c70016 beq a2,a3,80028854 <fix16_smul+0x74>
-800287fc: 2446ffff addiu a2,v0,-1
-fix16_t fix16_smul(fix16_t inArg0, fix16_t inArg1) {
- fix16_t result = fix16_mul(inArg0, inArg1);
-
- if (result == fix16_overflow)
- {
- if ((inArg0 >= 0) == (inArg1 >= 0))
-80028800: 00052827 nor a1,zero,a1
-80028804: 000427c2 srl a0,a0,0x1f
-80028808: 00052fc2 srl a1,a1,0x1f
-8002880c: 10850016 beq a0,a1,80028868 <fix16_smul+0x88>
-80028810: 00000000 nop
- return fix16_max;
-80028814: 3c027fff lui v0,0x7fff
- else
- return fix16_min;
- }
-
- return result;
-}
-80028818: 03e00008 jr ra
-8002881c: 3442ffff ori v0,v0,0xffff
- #endif
- }
- else
- {
- #ifndef FIXMATH_NO_OVERFLOW
- if (upper)
-80028820: 14c0fff7 bnez a2,80028800 <fix16_smul+0x20>
-80028824: 00000000 nop
-
- #ifdef FIXMATH_NO_ROUNDING
- return product >> 16;
- #else
- fix16_t result = product >> 16;
- result += (product & 0x8000) >> 15;
-80028828: 30468000 andi a2,v0,0x8000
-8002882c: 00033c00 sll a3,v1,0x10
-80028830: 00021402 srl v0,v0,0x10
-80028834: 00061bc2 srl v1,a2,0xf
-80028838: 00e21025 or v0,a3,v0
-8002883c: 00621021 addu v0,v1,v0
-#ifndef FIXMATH_NO_OVERFLOW
-/* Wrapper around fix16_mul to add saturating arithmetic. */
-fix16_t fix16_smul(fix16_t inArg0, fix16_t inArg1) {
- fix16_t result = fix16_mul(inArg0, inArg1);
-
- if (result == fix16_overflow)
-80028840: 3c038000 lui v1,0x8000
-80028844: 1043ffef beq v0,v1,80028804 <fix16_smul+0x24>
-80028848: 00052827 nor a1,zero,a1
- else
- return fix16_min;
- }
-
- return result;
-}
-8002884c: 03e00008 jr ra
-80028850: 00000000 nop
- return fix16_overflow;
- #endif
-
- #ifndef FIXMATH_NO_ROUNDING
- // This adjustment is required in order to round -1/2 correctly
- product--;
-80028854: 00c2402b sltu t0,a2,v0
-80028858: 2467ffff addiu a3,v1,-1
-8002885c: 00c01021 move v0,a2
-80028860: 1000fff1 b 80028828 <fix16_smul+0x48>
-80028864: 01071821 addu v1,t0,a3
- if (result == fix16_overflow)
- {
- if ((inArg0 >= 0) == (inArg1 >= 0))
- return fix16_max;
- else
- return fix16_min;
-80028868: 03e00008 jr ra
-8002886c: 3c028000 lui v0,0x8000
-
-80028870 <fix16_div>:
-fix16_t fix16_div(fix16_t a, fix16_t b)
-{
- // This uses a hardware 32/32 bit division multiple times, until we have
- // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations.
-
- if (b == 0)
-80028870: 10a00062 beqz a1,800289fc <fix16_div+0x18c>
-80028874: 00000000 nop
- return result;
-}
-#endif
-
-fix16_t fix16_div(fix16_t a, fix16_t b)
-{
-80028878: 27bdffd0 addiu sp,sp,-48
- // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations.
-
- if (b == 0)
- return fix16_min;
-
- uint32_t remainder = (a >= 0) ? a : (-a);
-8002887c: 00803821 move a3,a0
- return result;
-}
-#endif
-
-fix16_t fix16_div(fix16_t a, fix16_t b)
-{
-80028880: afbf002c sw ra,44(sp)
-80028884: afb60028 sw s6,40(sp)
-80028888: afb50024 sw s5,36(sp)
-8002888c: afb40020 sw s4,32(sp)
-80028890: afb3001c sw s3,28(sp)
-80028894: afb20018 sw s2,24(sp)
-80028898: afb10014 sw s1,20(sp)
- // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations.
-
- if (b == 0)
- return fix16_min;
-
- uint32_t remainder = (a >= 0) ? a : (-a);
-8002889c: 04800055 bltz a0,800289f4 <fix16_div+0x184>
-800288a0: afb00010 sw s0,16(sp)
-800288a4: 00e08021 move s0,a3
- uint32_t divider = (b >= 0) ? b : (-b);
-800288a8: 04a00050 bltz a1,800289ec <fix16_div+0x17c>
-800288ac: 00a03021 move a2,a1
- int bit_pos = 17;
-
- // Kick-start the division a bit.
- // This improves speed in the worst-case scenarios where N and D are large
- // It gets a lower estimate for the result by N/(D >> 17 + 1).
- if (divider & 0xFFF00000)
-800288b0: 3c02fff0 lui v0,0xfff0
-800288b4: 00c21024 and v0,a2,v0
-800288b8: 14400036 bnez v0,80028994 <fix16_div+0x124>
-800288bc: 00c08821 move s1,a2
- if (b == 0)
- return fix16_min;
-
- uint32_t remainder = (a >= 0) ? a : (-a);
- uint32_t divider = (b >= 0) ? b : (-b);
- uint32_t quotient = 0;
-800288c0: 0000b021 move s6,zero
- quotient = remainder / shifted_div;
- remainder -= ((uint64_t)quotient * divider) >> 17;
- }
-
- // If the divider is divisible by 2^n, take advantage of it.
- while (!(divider & 0xF) && bit_pos >= 4)
-800288c4: 30c6000f andi a2,a2,0xf
-800288c8: 0080a021 move s4,a0
-800288cc: 00a09821 move s3,a1
-800288d0: 14c00008 bnez a2,800288f4 <fix16_div+0x84>
-800288d4: 24150011 li s5,17
-800288d8: 24030001 li v1,1
- {
- divider >>= 4;
-800288dc: 00118902 srl s1,s1,0x4
- quotient = remainder / shifted_div;
- remainder -= ((uint64_t)quotient * divider) >> 17;
- }
-
- // If the divider is divisible by 2^n, take advantage of it.
- while (!(divider & 0xF) && bit_pos >= 4)
-800288e0: 3222000f andi v0,s1,0xf
-800288e4: 14400003 bnez v0,800288f4 <fix16_div+0x84>
-800288e8: 26b5fffc addiu s5,s5,-4
-800288ec: 16a3fffb bne s5,v1,800288dc <fix16_div+0x6c>
-800288f0: 00000000 nop
- {
- divider >>= 4;
- bit_pos -= 4;
- }
-
- while (remainder && bit_pos >= 0)
-800288f4: 12000037 beqz s0,800289d4 <fix16_div+0x164>
-800288f8: 2412ffff li s2,-1
-800288fc: 10000005 b 80028914 <fix16_div+0xa4>
-80028900: 00000000 nop
-80028904: 12000033 beqz s0,800289d4 <fix16_div+0x164>
-80028908: 00000000 nop
-8002890c: 06a00031 bltz s5,800289d4 <fix16_div+0x164>
-80028910: 00000000 nop
- {
- // Shift remainder as much as we can without overflowing
- int shift = clz(remainder);
-80028914: 0c00a2d8 jal 80028b60 <__clzsi2>
-80028918: 02002021 move a0,s0
-8002891c: 02a2182a slt v1,s5,v0
-80028920: 10600002 beqz v1,8002892c <fix16_div+0xbc>
-80028924: 00000000 nop
-80028928: 02a01021 move v0,s5
- if (shift > bit_pos) shift = bit_pos;
- remainder <<= shift;
-8002892c: 00508004 sllv s0,s0,v0
- bit_pos -= shift;
-
- uint32_t div = remainder / divider;
-80028930: 16200002 bnez s1,8002893c <fix16_div+0xcc>
-80028934: 0211001b divu zero,s0,s1
-80028938: 0007000d break 0x7
- {
- // Shift remainder as much as we can without overflowing
- int shift = clz(remainder);
- if (shift > bit_pos) shift = bit_pos;
- remainder <<= shift;
- bit_pos -= shift;
-8002893c: 02a21023 subu v0,s5,v0
- uint32_t div = remainder / divider;
- remainder = remainder % divider;
- quotient += div << bit_pos;
-
- #ifndef FIXMATH_NO_OVERFLOW
- if (div & ~(0xFFFFFFFF >> bit_pos))
-80028940: 00521806 srlv v1,s2,v0
-80028944: 00031827 nor v1,zero,v1
- return fix16_overflow;
- #endif
-
- remainder <<= 1;
- bit_pos--;
-80028948: 2455ffff addiu s5,v0,-1
- int shift = clz(remainder);
- if (shift > bit_pos) shift = bit_pos;
- remainder <<= shift;
- bit_pos -= shift;
-
- uint32_t div = remainder / divider;
-8002894c: 00008012 mflo s0
- remainder = remainder % divider;
- quotient += div << bit_pos;
-80028950: 00501004 sllv v0,s0,v0
-
- #ifndef FIXMATH_NO_OVERFLOW
- if (div & ~(0xFFFFFFFF >> bit_pos))
-80028954: 00701824 and v1,v1,s0
- int shift = clz(remainder);
- if (shift > bit_pos) shift = bit_pos;
- remainder <<= shift;
- bit_pos -= shift;
-
- uint32_t div = remainder / divider;
-80028958: 00002010 mfhi a0
- #ifndef FIXMATH_NO_OVERFLOW
- if (div & ~(0xFFFFFFFF >> bit_pos))
- return fix16_overflow;
- #endif
-
- remainder <<= 1;
-8002895c: 00048040 sll s0,a0,0x1
- uint32_t div = remainder / divider;
- remainder = remainder % divider;
- quotient += div << bit_pos;
-
- #ifndef FIXMATH_NO_OVERFLOW
- if (div & ~(0xFFFFFFFF >> bit_pos))
-80028960: 1060ffe8 beqz v1,80028904 <fix16_div+0x94>
-80028964: 02c2b021 addu s6,s6,v0
-{
- // This uses a hardware 32/32 bit division multiple times, until we have
- // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations.
-
- if (b == 0)
- return fix16_min;
-80028968: 3c028000 lui v0,0x8000
-
- result = -result;
- }
-
- return result;
-}
-8002896c: 8fbf002c lw ra,44(sp)
-80028970: 8fb60028 lw s6,40(sp)
-80028974: 8fb50024 lw s5,36(sp)
-80028978: 8fb40020 lw s4,32(sp)
-8002897c: 8fb3001c lw s3,28(sp)
-80028980: 8fb20018 lw s2,24(sp)
-80028984: 8fb10014 lw s1,20(sp)
-80028988: 8fb00010 lw s0,16(sp)
-8002898c: 03e00008 jr ra
-80028990: 27bd0030 addiu sp,sp,48
- // This improves speed in the worst-case scenarios where N and D are large
- // It gets a lower estimate for the result by N/(D >> 17 + 1).
- if (divider & 0xFFF00000)
- {
- uint32_t shifted_div = ((divider >> 17) + 1);
- quotient = remainder / shifted_div;
-80028994: 0006b442 srl s6,a2,0x11
-80028998: 26d60001 addiu s6,s6,1
-8002899c: 16c00002 bnez s6,800289a8 <fix16_div+0x138>
-800289a0: 00f6001b divu zero,a3,s6
-800289a4: 0007000d break 0x7
-800289a8: 0000b012 mflo s6
- ...
- remainder -= ((uint64_t)quotient * divider) >> 17;
-800289b4: 02c60019 multu s6,a2
-800289b8: 00001012 mflo v0
-800289bc: 00021442 srl v0,v0,0x11
-800289c0: 00001810 mfhi v1
-800289c4: 00031bc0 sll v1,v1,0xf
-800289c8: 00621025 or v0,v1,v0
-800289cc: 1000ffbd b 800288c4 <fix16_div+0x54>
-800289d0: 00e28023 subu s0,a3,v0
- #ifndef FIXMATH_NO_ROUNDING
- // Quotient is always positive so rounding is easy
- quotient++;
- #endif
-
- fix16_t result = quotient >> 1;
-800289d4: 26d60001 addiu s6,s6,1
-
- // Figure out the sign of the result
- if ((a ^ b) & 0x80000000)
-800289d8: 02749826 xor s3,s3,s4
-800289dc: 0661ffe3 bgez s3,8002896c <fix16_div+0xfc>
-800289e0: 00161042 srl v0,s6,0x1
- #ifndef FIXMATH_NO_OVERFLOW
- if (result == fix16_min)
- return fix16_overflow;
- #endif
-
- result = -result;
-800289e4: 1000ffe1 b 8002896c <fix16_div+0xfc>
-800289e8: 00021023 negu v0,v0
-
- if (b == 0)
- return fix16_min;
-
- uint32_t remainder = (a >= 0) ? a : (-a);
- uint32_t divider = (b >= 0) ? b : (-b);
-800289ec: 1000ffb0 b 800288b0 <fix16_div+0x40>
-800289f0: 00053023 negu a2,a1
- // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations.
-
- if (b == 0)
- return fix16_min;
-
- uint32_t remainder = (a >= 0) ? a : (-a);
-800289f4: 1000ffab b 800288a4 <fix16_div+0x34>
-800289f8: 00043823 negu a3,a0
-
- result = -result;
- }
-
- return result;
-}
-800289fc: 03e00008 jr ra
-80028a00: 3c028000 lui v0,0x8000
-
-80028a04 <fix16_sdiv>:
-}
-#endif
-
-#ifndef FIXMATH_NO_OVERFLOW
-/* Wrapper around fix16_div to add saturating arithmetic. */
-fix16_t fix16_sdiv(fix16_t inArg0, fix16_t inArg1) {
-80028a04: 27bdffe0 addiu sp,sp,-32
-80028a08: afb10018 sw s1,24(sp)
-80028a0c: afb00014 sw s0,20(sp)
-80028a10: afbf001c sw ra,28(sp)
-80028a14: 00808821 move s1,a0
- fix16_t result = fix16_div(inArg0, inArg1);
-80028a18: 0c00a21c jal 80028870 <fix16_div>
-80028a1c: 00a08021 move s0,a1
-
- if (result == fix16_overflow)
-80028a20: 3c038000 lui v1,0x8000
-80028a24: 10430006 beq v0,v1,80028a40 <fix16_sdiv+0x3c>
-80028a28: 00108027 nor s0,zero,s0
- else
- return fix16_min;
- }
-
- return result;
-}
-80028a2c: 8fbf001c lw ra,28(sp)
-80028a30: 8fb10018 lw s1,24(sp)
-80028a34: 8fb00014 lw s0,20(sp)
-80028a38: 03e00008 jr ra
-80028a3c: 27bd0020 addiu sp,sp,32
-fix16_t fix16_sdiv(fix16_t inArg0, fix16_t inArg1) {
- fix16_t result = fix16_div(inArg0, inArg1);
-
- if (result == fix16_overflow)
- {
- if ((inArg0 >= 0) == (inArg1 >= 0))
-80028a40: 00118fc2 srl s1,s1,0x1f
-80028a44: 001087c2 srl s0,s0,0x1f
-80028a48: 1230fff8 beq s1,s0,80028a2c <fix16_sdiv+0x28>
-80028a4c: 3c028000 lui v0,0x8000
- else
- return fix16_min;
- }
-
- return result;
-}
-80028a50: 8fbf001c lw ra,28(sp)
- fix16_t result = fix16_div(inArg0, inArg1);
-
- if (result == fix16_overflow)
- {
- if ((inArg0 >= 0) == (inArg1 >= 0))
- return fix16_max;
-80028a54: 3c027fff lui v0,0x7fff
- else
- return fix16_min;
- }
-
- return result;
-}
-80028a58: 8fb10018 lw s1,24(sp)
-80028a5c: 8fb00014 lw s0,20(sp)
- fix16_t result = fix16_div(inArg0, inArg1);
-
- if (result == fix16_overflow)
- {
- if ((inArg0 >= 0) == (inArg1 >= 0))
- return fix16_max;
-80028a60: 3442ffff ori v0,v0,0xffff
- else
- return fix16_min;
- }
-
- return result;
-}
-80028a64: 03e00008 jr ra
-80028a68: 27bd0020 addiu sp,sp,32
-
-80028a6c <fix16_lerp8>:
-#endif
-
-fix16_t fix16_lerp8(fix16_t inArg0, fix16_t inArg1, uint8_t inFract) {
-80028a6c: 30c600ff andi a2,a2,0xff
- int64_t tempOut = int64_mul_i32_i32(inArg0, ((1 << 8) - inFract));
- tempOut = int64_add(tempOut, int64_mul_i32_i32(inArg1, inFract));
- tempOut = int64_shift(tempOut, -8);
- return (fix16_t)int64_lo(tempOut);
-80028a70: 24020100 li v0,256
-80028a74: 00461023 subu v0,v0,a2
-80028a78: 00440018 mult v0,a0
-80028a7c: 00002012 mflo a0
-80028a80: 000417c3 sra v0,a0,0x1f
-80028a84: 00000000 nop
-80028a88: 00c50018 mult a2,a1
-80028a8c: 00002812 mflo a1
-80028a90: 00853821 addu a3,a0,a1
-80028a94: 000537c3 sra a2,a1,0x1f
-80028a98: 00e4182b sltu v1,a3,a0
-80028a9c: 00462021 addu a0,v0,a2
-80028aa0: 00642021 addu a0,v1,a0
-80028aa4: 00042600 sll a0,a0,0x18
-80028aa8: 00071202 srl v0,a3,0x8
-}
-80028aac: 03e00008 jr ra
-80028ab0: 00821025 or v0,a0,v0
-
-80028ab4 <fix16_lerp16>:
-
-fix16_t fix16_lerp16(fix16_t inArg0, fix16_t inArg1, uint16_t inFract) {
-80028ab4: 30c6ffff andi a2,a2,0xffff
- int64_t tempOut = int64_mul_i32_i32(inArg0, ((1 << 16) - inFract));
- tempOut = int64_add(tempOut, int64_mul_i32_i32(inArg1, inFract));
- tempOut = int64_shift(tempOut, -16);
- return (fix16_t)int64_lo(tempOut);
-80028ab8: 3c020001 lui v0,0x1
-80028abc: 00461023 subu v0,v0,a2
-80028ac0: 00440018 mult v0,a0
-80028ac4: 00002012 mflo a0
-80028ac8: 000417c3 sra v0,a0,0x1f
-80028acc: 00000000 nop
-80028ad0: 00c50018 mult a2,a1
-80028ad4: 00002812 mflo a1
-80028ad8: 00853821 addu a3,a0,a1
-80028adc: 000537c3 sra a2,a1,0x1f
-80028ae0: 00e4182b sltu v1,a3,a0
-80028ae4: 00462021 addu a0,v0,a2
-80028ae8: 00642021 addu a0,v1,a0
-80028aec: 00042400 sll a0,a0,0x10
-80028af0: 00071402 srl v0,a3,0x10
-}
-80028af4: 03e00008 jr ra
-80028af8: 00821025 or v0,a0,v0
-
-80028afc <fix16_lerp32>:
-
-#ifndef FIXMATH_NO_64BIT
-fix16_t fix16_lerp32(fix16_t inArg0, fix16_t inArg1, uint32_t inFract) {
- int64_t tempOut;
- tempOut = ((int64_t)inArg0 * (0 - inFract));
-80028afc: 00061023 negu v0,a2
-80028b00: 00043fc3 sra a3,a0,0x1f
-80028b04: 00e20018 mult a3,v0
- tempOut += ((int64_t)inArg1 * inFract);
-80028b08: 00051fc3 sra v1,a1,0x1f
-}
-
-#ifndef FIXMATH_NO_64BIT
-fix16_t fix16_lerp32(fix16_t inArg0, fix16_t inArg1, uint32_t inFract) {
- int64_t tempOut;
- tempOut = ((int64_t)inArg0 * (0 - inFract));
-80028b0c: 00003812 mflo a3
- ...
-80028b18: 00440019 multu v0,a0
-80028b1c: 00004012 mflo t0
-80028b20: 00004810 mfhi t1
-80028b24: 00e94821 addu t1,a3,t1
-80028b28: 00000000 nop
- tempOut += ((int64_t)inArg1 * inFract);
-80028b2c: 00660018 mult v1,a2
-80028b30: 00001012 mflo v0
- ...
-80028b3c: 00a60019 multu a1,a2
-80028b40: 00003012 mflo a2
-80028b44: 00003810 mfhi a3
-80028b48: 00473821 addu a3,v0,a3
-80028b4c: 00c81021 addu v0,a2,t0
-80028b50: 0046102b sltu v0,v0,a2
-80028b54: 00e91821 addu v1,a3,t1
- tempOut >>= 32;
- return (fix16_t)tempOut;
-}
-80028b58: 03e00008 jr ra
-80028b5c: 00431021 addu v0,v0,v1
-
-80028b60 <__clzsi2>:
-80028b60: 3c020001 lui v0,0x1
-80028b64: 0082102b sltu v0,a0,v0
-80028b68: 1040000c beqz v0,80028b9c <__clzsi2+0x3c>
-80028b6c: 3c020100 lui v0,0x100
-80028b70: 2c820100 sltiu v0,a0,256
-80028b74: 10400014 beqz v0,80028bc8 <__clzsi2+0x68>
-80028b78: 3c038004 lui v1,0x8004
-80028b7c: 00001021 move v0,zero
-80028b80: 00442006 srlv a0,a0,v0
-80028b84: 2463f818 addiu v1,v1,-2024
-80028b88: 00832021 addu a0,a0,v1
-80028b8c: 90820000 lbu v0,0(a0)
-80028b90: 24050020 li a1,32
-80028b94: 03e00008 jr ra
-80028b98: 00a21023 subu v0,a1,v0
-80028b9c: 0082102b sltu v0,a0,v0
-80028ba0: 14400011 bnez v0,80028be8 <__clzsi2+0x88>
-80028ba4: 3c038004 lui v1,0x8004
-80028ba8: 24020018 li v0,24
-80028bac: 00442006 srlv a0,a0,v0
-80028bb0: 2463f818 addiu v1,v1,-2024
-80028bb4: 00832021 addu a0,a0,v1
-80028bb8: 90820000 lbu v0,0(a0)
-80028bbc: 24050008 li a1,8
-80028bc0: 03e00008 jr ra
-80028bc4: 00a21023 subu v0,a1,v0
-80028bc8: 24020008 li v0,8
-80028bcc: 00442006 srlv a0,a0,v0
-80028bd0: 2463f818 addiu v1,v1,-2024
-80028bd4: 00832021 addu a0,a0,v1
-80028bd8: 90820000 lbu v0,0(a0)
-80028bdc: 24050018 li a1,24
-80028be0: 03e00008 jr ra
-80028be4: 00a21023 subu v0,a1,v0
-80028be8: 24020010 li v0,16
-80028bec: 00442006 srlv a0,a0,v0
-80028bf0: 2463f818 addiu v1,v1,-2024
-80028bf4: 00832021 addu a0,a0,v1
-80028bf8: 90820000 lbu v0,0(a0)
-80028bfc: 24050010 li a1,16
-80028c00: 03e00008 jr ra
-80028c04: 00a21023 subu v0,a1,v0
-
-80028c08 <__do_global_ctors_aux>:
-80028c08: 3c028004 lui v0,0x8004
-80028c0c: 8c422574 lw v0,9588(v0)
-80028c10: 2403ffff li v1,-1
-80028c14: 10430012 beq v0,v1,80028c60 <__do_global_ctors_aux+0x58>
-80028c18: 00000000 nop
-80028c1c: 27bdffe0 addiu sp,sp,-32
-80028c20: afb00014 sw s0,20(sp)
-80028c24: 3c108004 lui s0,0x8004
-80028c28: afb10018 sw s1,24(sp)
-80028c2c: afbf001c sw ra,28(sp)
-80028c30: 26102574 addiu s0,s0,9588
-80028c34: 2411ffff li s1,-1
-80028c38: 0040f809 jalr v0
-80028c3c: 2610fffc addiu s0,s0,-4
-80028c40: 8e020000 lw v0,0(s0)
-80028c44: 00000000 nop
-80028c48: 1451fffb bne v0,s1,80028c38 <__do_global_ctors_aux+0x30>
-80028c4c: 00000000 nop
-80028c50: 8fbf001c lw ra,28(sp)
-80028c54: 8fb10018 lw s1,24(sp)
-80028c58: 8fb00014 lw s0,20(sp)
-80028c5c: 27bd0020 addiu sp,sp,32
-80028c60: 03e00008 jr ra
-80028c64: 00000000 nop
-
-80028c68 <fmode_to_desmode>:
- FDEV_CDROM,
- FDEV_MEMCARD
-};
-
-unsigned int fmode_to_desmode(const char *fmode)
-{
-80028c68: 27bdffd0 addiu sp,sp,-48
-80028c6c: afbf002c sw ra,44(sp)
-80028c70: afbe0028 sw s8,40(sp)
-80028c74: 03a0f021 move s8,sp
-80028c78: afc40030 sw a0,48(s8)
- char rmode[16];
- int x, y;
-
- y = 0;
-80028c7c: afc00014 sw zero,20(s8)
-
- for(x=0;x<15;x++)
-80028c80: afc00010 sw zero,16(s8)
-80028c84: 10000029 b 80028d2c <fmode_to_desmode+0xc4>
-80028c88: 00000000 nop
- {
- if(fmode[x] == 0)
-80028c8c: 8fc20010 lw v0,16(s8)
-80028c90: 8fc30030 lw v1,48(s8)
-80028c94: 00000000 nop
-80028c98: 00621021 addu v0,v1,v0
-80028c9c: 80420000 lb v0,0(v0)
-80028ca0: 00000000 nop
-80028ca4: 10400028 beqz v0,80028d48 <fmode_to_desmode+0xe0>
-80028ca8: 00000000 nop
- break;
- else
- {
- if(fmode[x] != 'b' && fmode[x] != 'f')
-80028cac: 8fc20010 lw v0,16(s8)
-80028cb0: 8fc30030 lw v1,48(s8)
-80028cb4: 00000000 nop
-80028cb8: 00621021 addu v0,v1,v0
-80028cbc: 80430000 lb v1,0(v0)
-80028cc0: 24020062 li v0,98
-80028cc4: 10620015 beq v1,v0,80028d1c <fmode_to_desmode+0xb4>
-80028cc8: 00000000 nop
-80028ccc: 8fc20010 lw v0,16(s8)
-80028cd0: 8fc30030 lw v1,48(s8)
-80028cd4: 00000000 nop
-80028cd8: 00621021 addu v0,v1,v0
-80028cdc: 80430000 lb v1,0(v0)
-80028ce0: 24020066 li v0,102
-80028ce4: 1062000d beq v1,v0,80028d1c <fmode_to_desmode+0xb4>
-80028ce8: 00000000 nop
- rmode[y++] = fmode[x];
-80028cec: 8fc20014 lw v0,20(s8)
-80028cf0: 00000000 nop
-80028cf4: 24430001 addiu v1,v0,1
-80028cf8: afc30014 sw v1,20(s8)
-80028cfc: 8fc30010 lw v1,16(s8)
-80028d00: 8fc40030 lw a0,48(s8)
-80028d04: 00000000 nop
-80028d08: 00831821 addu v1,a0,v1
-80028d0c: 80630000 lb v1,0(v1)
-80028d10: 27c40010 addiu a0,s8,16
-80028d14: 00821021 addu v0,a0,v0
-80028d18: a0430008 sb v1,8(v0)
- char rmode[16];
- int x, y;
-
- y = 0;
-
- for(x=0;x<15;x++)
-80028d1c: 8fc20010 lw v0,16(s8)
-80028d20: 00000000 nop
-80028d24: 24420001 addiu v0,v0,1
-80028d28: afc20010 sw v0,16(s8)
-80028d2c: 8fc20010 lw v0,16(s8)
-80028d30: 00000000 nop
-80028d34: 2842000f slti v0,v0,15
-80028d38: 1440ffd4 bnez v0,80028c8c <fmode_to_desmode+0x24>
-80028d3c: 00000000 nop
-80028d40: 10000002 b 80028d4c <fmode_to_desmode+0xe4>
-80028d44: 00000000 nop
- {
- if(fmode[x] == 0)
- break;
-80028d48: 00000000 nop
- if(fmode[x] != 'b' && fmode[x] != 'f')
- rmode[y++] = fmode[x];
- }
- }
-
- rmode[y] = 0;
-80028d4c: 8fc20014 lw v0,20(s8)
-80028d50: 27c30010 addiu v1,s8,16
-80028d54: 00621021 addu v0,v1,v0
-80028d58: a0400008 sb zero,8(v0)
-
- if(strcmp(rmode, "r") == 0)
-80028d5c: 27c30018 addiu v1,s8,24
-80028d60: 3c028004 lui v0,0x8004
-80028d64: 2445f918 addiu a1,v0,-1768
-80028d68: 00602021 move a0,v1
-80028d6c: 0c00d9aa jal 800366a8 <strcmp>
-80028d70: 00000000 nop
-80028d74: 14400004 bnez v0,80028d88 <fmode_to_desmode+0x120>
-80028d78: 00000000 nop
- {
- return O_RDONLY;
-80028d7c: 24020001 li v0,1
-80028d80: 10000039 b 80028e68 <fmode_to_desmode+0x200>
-80028d84: 00000000 nop
- }
- else if(strcmp(rmode, "r+") == 0)
-80028d88: 27c30018 addiu v1,s8,24
-80028d8c: 3c028004 lui v0,0x8004
-80028d90: 2445f91c addiu a1,v0,-1764
-80028d94: 00602021 move a0,v1
-80028d98: 0c00d9aa jal 800366a8 <strcmp>
-80028d9c: 00000000 nop
-80028da0: 14400004 bnez v0,80028db4 <fmode_to_desmode+0x14c>
-80028da4: 00000000 nop
- {
- dprintf("Open for reading and writing.\n");
- return O_RDWR;
-80028da8: 24020003 li v0,3
-80028dac: 1000002e b 80028e68 <fmode_to_desmode+0x200>
-80028db0: 00000000 nop
- }
- else if(strcmp(rmode, "w") == 0)
-80028db4: 27c30018 addiu v1,s8,24
-80028db8: 3c028004 lui v0,0x8004
-80028dbc: 2445f920 addiu a1,v0,-1760
-80028dc0: 00602021 move a0,v1
-80028dc4: 0c00d9aa jal 800366a8 <strcmp>
-80028dc8: 00000000 nop
-80028dcc: 14400004 bnez v0,80028de0 <fmode_to_desmode+0x178>
-80028dd0: 00000000 nop
- {
- dprintf("Open for writing.\n");
- return O_WRONLY | O_CREAT | O_TRUNC;
-80028dd4: 24020602 li v0,1538
-80028dd8: 10000023 b 80028e68 <fmode_to_desmode+0x200>
-80028ddc: 00000000 nop
- }
- else if(strcmp(rmode, "w+") == 0)
-80028de0: 27c30018 addiu v1,s8,24
-80028de4: 3c028004 lui v0,0x8004
-80028de8: 2445f924 addiu a1,v0,-1756
-80028dec: 00602021 move a0,v1
-80028df0: 0c00d9aa jal 800366a8 <strcmp>
-80028df4: 00000000 nop
-80028df8: 14400004 bnez v0,80028e0c <fmode_to_desmode+0x1a4>
-80028dfc: 00000000 nop
- {
- dprintf("Open for writing. Truncate to zero or create file.\n");
- return O_RDWR | O_CREAT | O_TRUNC;
-80028e00: 24020603 li v0,1539
-80028e04: 10000018 b 80028e68 <fmode_to_desmode+0x200>
-80028e08: 00000000 nop
- }
- else if(strcmp(rmode, "a") == 0)
-80028e0c: 27c30018 addiu v1,s8,24
-80028e10: 3c028004 lui v0,0x8004
-80028e14: 2445f928 addiu a1,v0,-1752
-80028e18: 00602021 move a0,v1
-80028e1c: 0c00d9aa jal 800366a8 <strcmp>
-80028e20: 00000000 nop
-80028e24: 14400004 bnez v0,80028e38 <fmode_to_desmode+0x1d0>
-80028e28: 00000000 nop
- {
- dprintf("Append; open for writing. Create file if it doesn't exist.\n");
- return O_WRONLY | O_APPEND;
-80028e2c: 24020102 li v0,258
-80028e30: 1000000d b 80028e68 <fmode_to_desmode+0x200>
-80028e34: 00000000 nop
- }
- else if(strcmp(rmode, "a+") == 0)
-80028e38: 27c30018 addiu v1,s8,24
-80028e3c: 3c028004 lui v0,0x8004
-80028e40: 2445f92c addiu a1,v0,-1748
-80028e44: 00602021 move a0,v1
-80028e48: 0c00d9aa jal 800366a8 <strcmp>
-80028e4c: 00000000 nop
-80028e50: 14400004 bnez v0,80028e64 <fmode_to_desmode+0x1fc>
-80028e54: 00000000 nop
- {
- dprintf("Append; open for reading and writing. Create file if it doesn't exist.\n");
- return O_RDWR | O_APPEND | O_CREAT;
-80028e58: 24020303 li v0,771
-80028e5c: 10000002 b 80028e68 <fmode_to_desmode+0x200>
-80028e60: 00000000 nop
- }
- else
- {
- return 0;
-80028e64: 00001021 move v0,zero
- }
-}
-80028e68: 03c0e821 move sp,s8
-80028e6c: 8fbf002c lw ra,44(sp)
-80028e70: 8fbe0028 lw s8,40(sp)
-80028e74: 27bd0030 addiu sp,sp,48
-80028e78: 03e00008 jr ra
-80028e7c: 00000000 nop
-
-80028e80 <fdopen>:
-
-FILE *fdopen(int fildes, const char *mode)
-{
-80028e80: 27bdffe0 addiu sp,sp,-32
-80028e84: afbf001c sw ra,28(sp)
-80028e88: afbe0018 sw s8,24(sp)
-80028e8c: 03a0f021 move s8,sp
-80028e90: afc40020 sw a0,32(s8)
-80028e94: afc50024 sw a1,36(s8)
-// Adjust for malloc
- int x;
-
-// Find a free file structure
- for(x = 0; x < 256; x++)
-80028e98: afc00010 sw zero,16(s8)
-80028e9c: 1000001d b 80028f14 <fdopen+0x94>
-80028ea0: 00000000 nop
- {
- if(file_structs[x].used == 0)
-80028ea4: 3c028007 lui v0,0x8007
-80028ea8: 8fc40010 lw a0,16(s8)
-80028eac: 2443db6c addiu v1,v0,-9364
-80028eb0: 00801021 move v0,a0
-80028eb4: 000210c0 sll v0,v0,0x3
-80028eb8: 00022080 sll a0,v0,0x2
-80028ebc: 00821023 subu v0,a0,v0
-80028ec0: 00621021 addu v0,v1,v0
-80028ec4: 8c420014 lw v0,20(v0)
-80028ec8: 00000000 nop
-80028ecc: 1440000d bnez v0,80028f04 <fdopen+0x84>
-80028ed0: 00000000 nop
- {
- file_structs[x].used = 1;
-80028ed4: 3c028007 lui v0,0x8007
-80028ed8: 8fc40010 lw a0,16(s8)
-80028edc: 2443db6c addiu v1,v0,-9364
-80028ee0: 00801021 move v0,a0
-80028ee4: 000210c0 sll v0,v0,0x3
-80028ee8: 00022080 sll a0,v0,0x2
-80028eec: 00821023 subu v0,a0,v0
-80028ef0: 00621021 addu v0,v1,v0
-80028ef4: 24030001 li v1,1
-80028ef8: ac430014 sw v1,20(v0)
- break;
-80028efc: 1000000a b 80028f28 <fdopen+0xa8>
-80028f00: 00000000 nop
-{
-// Adjust for malloc
- int x;
-
-// Find a free file structure
- for(x = 0; x < 256; x++)
-80028f04: 8fc20010 lw v0,16(s8)
-80028f08: 00000000 nop
-80028f0c: 24420001 addiu v0,v0,1
-80028f10: afc20010 sw v0,16(s8)
-80028f14: 8fc20010 lw v0,16(s8)
-80028f18: 00000000 nop
-80028f1c: 28420100 slti v0,v0,256
-80028f20: 1440ffe0 bnez v0,80028ea4 <fdopen+0x24>
-80028f24: 00000000 nop
- }
- }
-
-// If we found no free file structure, return NULL pointer
-
- if(x == 256)
-80028f28: 8fc30010 lw v1,16(s8)
-80028f2c: 24020100 li v0,256
-80028f30: 14620004 bne v1,v0,80028f44 <fdopen+0xc4>
-80028f34: 00000000 nop
- return NULL;
-80028f38: 00001021 move v0,zero
-80028f3c: 10000036 b 80029018 <fdopen+0x198>
-80028f40: 00000000 nop
-
-
- file_structs[x].fildes = fildes;
-80028f44: 3c048007 lui a0,0x8007
-80028f48: 8fc20010 lw v0,16(s8)
-80028f4c: 00000000 nop
-80028f50: 00401821 move v1,v0
-80028f54: 000310c0 sll v0,v1,0x3
-80028f58: 00401821 move v1,v0
-80028f5c: 00031080 sll v0,v1,0x2
-80028f60: 00431023 subu v0,v0,v1
-80028f64: 2483db6c addiu v1,a0,-9364
-80028f68: 00431021 addu v0,v0,v1
-80028f6c: 8fc30020 lw v1,32(s8)
-80028f70: 00000000 nop
-80028f74: ac430000 sw v1,0(v0)
- file_structs[x].pos = lseek(fildes, 0, SEEK_CUR);
-80028f78: 24060001 li a2,1
-80028f7c: 00002821 move a1,zero
-80028f80: 8fc40020 lw a0,32(s8)
-80028f84: 0c00ede0 jal 8003b780 <lseek>
-80028f88: 00000000 nop
-80028f8c: 00402821 move a1,v0
-80028f90: 3c028007 lui v0,0x8007
-80028f94: 8fc40010 lw a0,16(s8)
-80028f98: 2443db6c addiu v1,v0,-9364
-80028f9c: 00801021 move v0,a0
-80028fa0: 000210c0 sll v0,v0,0x3
-80028fa4: 00022080 sll a0,v0,0x2
-80028fa8: 00821023 subu v0,a0,v0
-80028fac: 00621021 addu v0,v1,v0
-80028fb0: ac450004 sw a1,4(v0)
- file_structs[x].mode = fmode_to_desmode(mode);
-80028fb4: 8fc40024 lw a0,36(s8)
-80028fb8: 0c00a31a jal 80028c68 <fmode_to_desmode>
-80028fbc: 00000000 nop
-80028fc0: 00402821 move a1,v0
-80028fc4: 3c048007 lui a0,0x8007
-80028fc8: 8fc20010 lw v0,16(s8)
-80028fcc: 00000000 nop
-80028fd0: 00401821 move v1,v0
-80028fd4: 000310c0 sll v0,v1,0x3
-80028fd8: 00401821 move v1,v0
-80028fdc: 00031080 sll v0,v1,0x2
-80028fe0: 00431023 subu v0,v0,v1
-80028fe4: 2483db6c addiu v1,a0,-9364
-80028fe8: 00431021 addu v0,v0,v1
-80028fec: ac450008 sw a1,8(v0)
-
- return &file_structs[x];
-80028ff0: 8fc20010 lw v0,16(s8)
-80028ff4: 00000000 nop
-80028ff8: 00401821 move v1,v0
-80028ffc: 000310c0 sll v0,v1,0x3
-80029000: 00401821 move v1,v0
-80029004: 00031080 sll v0,v1,0x2
-80029008: 00431023 subu v0,v0,v1
-8002900c: 3c038007 lui v1,0x8007
-80029010: 2463db6c addiu v1,v1,-9364
-80029014: 00431021 addu v0,v0,v1
-}
-80029018: 03c0e821 move sp,s8
-8002901c: 8fbf001c lw ra,28(sp)
-80029020: 8fbe0018 lw s8,24(sp)
-80029024: 27bd0020 addiu sp,sp,32
-80029028: 03e00008 jr ra
-8002902c: 00000000 nop
-
-80029030 <fopen>:
-
-FILE *fopen(char *path, const char *mode)
-{
-80029030: 27bdffd8 addiu sp,sp,-40
-80029034: afbf0024 sw ra,36(sp)
-80029038: afbe0020 sw s8,32(sp)
-8002903c: 03a0f021 move s8,sp
-80029040: afc40028 sw a0,40(s8)
-80029044: afc5002c sw a1,44(s8)
- int fd;
- FILE *f;
- char *s = NULL;
-80029048: afc00014 sw zero,20(s8)
-
- dprintf("fopen()\n");
-
- if(strncmp(path, "cdromL:", 7) == 0)
-8002904c: 24060007 li a2,7
-80029050: 3c028004 lui v0,0x8004
-80029054: 2445f930 addiu a1,v0,-1744
-80029058: 8fc40028 lw a0,40(s8)
-8002905c: 0c00d9dd jal 80036774 <strncmp>
-80029060: 00000000 nop
-80029064: 1440001c bnez v0,800290d8 <fopen+0xa8>
-80029068: 00000000 nop
- {
- //printf("strncmp=%d\n", strncmp(path, "cdromL:", 7) );
- s = malloc(1024);
-8002906c: 24040400 li a0,1024
-80029070: 0c00ac10 jal 8002b040 <malloc>
-80029074: 00000000 nop
-80029078: afc20014 sw v0,20(s8)
-
- if(libc_get_transtbl_fname(path+7, s, 1024) == 0)
-8002907c: 8fc20028 lw v0,40(s8)
-80029080: 00000000 nop
-80029084: 24420007 addiu v0,v0,7
-80029088: 24060400 li a2,1024
-8002908c: 8fc50014 lw a1,20(s8)
-80029090: 00402021 move a0,v0
-80029094: 0c00a604 jal 80029810 <libc_get_transtbl_fname>
-80029098: 00000000 nop
-8002909c: 14400004 bnez v0,800290b0 <fopen+0x80>
-800290a0: 00000000 nop
- return NULL;
-800290a4: 00001021 move v0,zero
-800290a8: 1000006f b 80029268 <fopen+0x238>
-800290ac: 00000000 nop
-
- fd = open(s, fmode_to_desmode(mode));
-800290b0: 8fc4002c lw a0,44(s8)
-800290b4: 0c00a31a jal 80028c68 <fmode_to_desmode>
-800290b8: 00000000 nop
-800290bc: 00402821 move a1,v0
-800290c0: 8fc40014 lw a0,20(s8)
-800290c4: 0c00eddc jal 8003b770 <open>
-800290c8: 00000000 nop
-800290cc: afc20010 sw v0,16(s8)
-800290d0: 10000009 b 800290f8 <fopen+0xc8>
-800290d4: 00000000 nop
- }
- else
- {
- fd = open(path, fmode_to_desmode(mode));
-800290d8: 8fc4002c lw a0,44(s8)
-800290dc: 0c00a31a jal 80028c68 <fmode_to_desmode>
-800290e0: 00000000 nop
-800290e4: 00402821 move a1,v0
-800290e8: 8fc40028 lw a0,40(s8)
-800290ec: 0c00eddc jal 8003b770 <open>
-800290f0: 00000000 nop
-800290f4: afc20010 sw v0,16(s8)
- }
-
- if(fd == -1)
-800290f8: 8fc30010 lw v1,16(s8)
-800290fc: 2402ffff li v0,-1
-80029100: 1462000b bne v1,v0,80029130 <fopen+0x100>
-80029104: 00000000 nop
- {
- if(s!=NULL)free(s);
-80029108: 8fc20014 lw v0,20(s8)
-8002910c: 00000000 nop
-80029110: 10400004 beqz v0,80029124 <fopen+0xf4>
-80029114: 00000000 nop
-80029118: 8fc40014 lw a0,20(s8)
-8002911c: 0c00acaf jal 8002b2bc <free>
-80029120: 00000000 nop
- return NULL;
-80029124: 00001021 move v0,zero
-80029128: 1000004f b 80029268 <fopen+0x238>
-8002912c: 00000000 nop
- }
-
- f = fdopen(fd, mode);
-80029130: 8fc5002c lw a1,44(s8)
-80029134: 8fc40010 lw a0,16(s8)
-80029138: 0c00a3a0 jal 80028e80 <fdopen>
-8002913c: 00000000 nop
-80029140: afc20018 sw v0,24(s8)
-
- if(f == NULL)
-80029144: 8fc20018 lw v0,24(s8)
-80029148: 00000000 nop
-8002914c: 1440000b bnez v0,8002917c <fopen+0x14c>
-80029150: 00000000 nop
- {
- if(s!=NULL)free(s);
-80029154: 8fc20014 lw v0,20(s8)
-80029158: 00000000 nop
-8002915c: 10400004 beqz v0,80029170 <fopen+0x140>
-80029160: 00000000 nop
-80029164: 8fc40014 lw a0,20(s8)
-80029168: 0c00acaf jal 8002b2bc <free>
-8002916c: 00000000 nop
- return NULL;
-80029170: 00001021 move v0,zero
-80029174: 1000003c b 80029268 <fopen+0x238>
-80029178: 00000000 nop
- }
-
- f->dev = FDEV_UNKNOWN;
-8002917c: 8fc20018 lw v0,24(s8)
-80029180: 00000000 nop
-80029184: ac40000c sw zero,12(v0)
-
- if(strncmp(path, "cdrom", 5) == 0 || strncmp(path, "cdromL", 6) == 0)
-80029188: 24060005 li a2,5
-8002918c: 3c028004 lui v0,0x8004
-80029190: 2445f938 addiu a1,v0,-1736
-80029194: 8fc40028 lw a0,40(s8)
-80029198: 0c00d9dd jal 80036774 <strncmp>
-8002919c: 00000000 nop
-800291a0: 10400009 beqz v0,800291c8 <fopen+0x198>
-800291a4: 00000000 nop
-800291a8: 24060006 li a2,6
-800291ac: 3c028004 lui v0,0x8004
-800291b0: 2445f940 addiu a1,v0,-1728
-800291b4: 8fc40028 lw a0,40(s8)
-800291b8: 0c00d9dd jal 80036774 <strncmp>
-800291bc: 00000000 nop
-800291c0: 14400006 bnez v0,800291dc <fopen+0x1ac>
-800291c4: 00000000 nop
- f->dev = FDEV_CDROM;
-800291c8: 8fc20018 lw v0,24(s8)
-800291cc: 24030001 li v1,1
-800291d0: ac43000c sw v1,12(v0)
-800291d4: 1000000c b 80029208 <fopen+0x1d8>
-800291d8: 00000000 nop
- else if(strncmp(path, "bu", 2) == 0)
-800291dc: 24060002 li a2,2
-800291e0: 3c028004 lui v0,0x8004
-800291e4: 2445f948 addiu a1,v0,-1720
-800291e8: 8fc40028 lw a0,40(s8)
-800291ec: 0c00d9dd jal 80036774 <strncmp>
-800291f0: 00000000 nop
-800291f4: 14400004 bnez v0,80029208 <fopen+0x1d8>
-800291f8: 00000000 nop
- f->dev = FDEV_MEMCARD;
-800291fc: 8fc20018 lw v0,24(s8)
-80029200: 24030002 li v1,2
-80029204: ac43000c sw v1,12(v0)
-
- if(s!=NULL)
-80029208: 8fc20014 lw v0,20(s8)
-8002920c: 00000000 nop
-80029210: 1040000d beqz v0,80029248 <fopen+0x218>
-80029214: 00000000 nop
- {
- f->size = get_real_file_size(s);
-80029218: 8fc40014 lw a0,20(s8)
-8002921c: 0c00d274 jal 800349d0 <get_real_file_size>
-80029220: 00000000 nop
-80029224: 00401821 move v1,v0
-80029228: 8fc20018 lw v0,24(s8)
-8002922c: 00000000 nop
-80029230: ac430010 sw v1,16(v0)
- free(s);
-80029234: 8fc40014 lw a0,20(s8)
-80029238: 0c00acaf jal 8002b2bc <free>
-8002923c: 00000000 nop
-80029240: 10000008 b 80029264 <fopen+0x234>
-80029244: 00000000 nop
- }
- else
- f->size = get_real_file_size(path);
-80029248: 8fc40028 lw a0,40(s8)
-8002924c: 0c00d274 jal 800349d0 <get_real_file_size>
-80029250: 00000000 nop
-80029254: 00401821 move v1,v0
-80029258: 8fc20018 lw v0,24(s8)
-8002925c: 00000000 nop
-80029260: ac430010 sw v1,16(v0)
-
- dprintf("Finished fopen()\n");
-
- return f;
-80029264: 8fc20018 lw v0,24(s8)
-}
-80029268: 03c0e821 move sp,s8
-8002926c: 8fbf0024 lw ra,36(sp)
-80029270: 8fbe0020 lw s8,32(sp)
-80029274: 27bd0028 addiu sp,sp,40
-80029278: 03e00008 jr ra
-8002927c: 00000000 nop
-
-80029280 <fclose>:
-
-int fclose(FILE *stream)
-{
-80029280: 27bdffe8 addiu sp,sp,-24
-80029284: afbf0014 sw ra,20(sp)
-80029288: afbe0010 sw s8,16(sp)
-8002928c: 03a0f021 move s8,sp
-80029290: afc40018 sw a0,24(s8)
- stream->used = 0;
-80029294: 8fc20018 lw v0,24(s8)
-80029298: 00000000 nop
-8002929c: ac400014 sw zero,20(v0)
- close(stream->fildes);
-800292a0: 8fc20018 lw v0,24(s8)
-800292a4: 00000000 nop
-800292a8: 8c420000 lw v0,0(v0)
-800292ac: 00000000 nop
-800292b0: 00402021 move a0,v0
-800292b4: 0c00edec jal 8003b7b0 <close>
-800292b8: 00000000 nop
- return 0;
-800292bc: 00001021 move v0,zero
-}
-800292c0: 03c0e821 move sp,s8
-800292c4: 8fbf0014 lw ra,20(sp)
-800292c8: 8fbe0010 lw s8,16(sp)
-800292cc: 27bd0018 addiu sp,sp,24
-800292d0: 03e00008 jr ra
-800292d4: 00000000 nop
-
-800292d8 <fread>:
- *
- * This is done to make programming and porting easier
- */
-
-int fread(void *ptr, int size, int nmemb, FILE *f)
-{
-800292d8: 27bdffd8 addiu sp,sp,-40
-800292dc: afbf0024 sw ra,36(sp)
-800292e0: afbe0020 sw s8,32(sp)
-800292e4: 03a0f021 move s8,sp
-800292e8: afc40028 sw a0,40(s8)
-800292ec: afc5002c sw a1,44(s8)
-800292f0: afc60030 sw a2,48(s8)
-800292f4: afc70034 sw a3,52(s8)
- int rsize = size * nmemb;
-800292f8: 8fc3002c lw v1,44(s8)
-800292fc: 8fc20030 lw v0,48(s8)
-80029300: 00000000 nop
-80029304: 00620018 mult v1,v0
-80029308: 00001012 mflo v0
-8002930c: afc20018 sw v0,24(s8)
- int csize = rsize;
-80029310: 8fc20018 lw v0,24(s8)
-80029314: 00000000 nop
-80029318: afc20010 sw v0,16(s8)
- int max;
- int nsect = (f->pos + rsize) >> 11;
-8002931c: 8fc20034 lw v0,52(s8)
-80029320: 00000000 nop
-80029324: 8c430004 lw v1,4(v0)
-80029328: 8fc20018 lw v0,24(s8)
-8002932c: 00000000 nop
-80029330: 00621021 addu v0,v1,v0
-80029334: 000212c2 srl v0,v0,0xb
-80029338: afc20014 sw v0,20(s8)
- nsect -= f->pos >> 11;
-8002933c: 8fc30014 lw v1,20(s8)
-80029340: 8fc20034 lw v0,52(s8)
-80029344: 00000000 nop
-80029348: 8c420004 lw v0,4(v0)
-8002934c: 00000000 nop
-80029350: 000212c2 srl v0,v0,0xb
-80029354: 00621023 subu v0,v1,v0
-80029358: afc20014 sw v0,20(s8)
- nsect++;
-8002935c: 8fc20014 lw v0,20(s8)
-80029360: 00000000 nop
-80029364: 24420001 addiu v0,v0,1
-80029368: afc20014 sw v0,20(s8)
-
- //printf("f->dev = %d, f->pos = %d, rsize = %d\n", f->dev, f->pos, rsize);
-
- if(f->dev == FDEV_CDROM)
-8002936c: 8fc20034 lw v0,52(s8)
-80029370: 00000000 nop
-80029374: 8c43000c lw v1,12(v0)
-80029378: 24020001 li v0,1
-8002937c: 1462007c bne v1,v0,80029570 <fread+0x298>
-80029380: 00000000 nop
- {
- // First sector
- lseek(f->fildes, f->pos & (~0x7ff), SEEK_SET);
-80029384: 8fc20034 lw v0,52(s8)
-80029388: 00000000 nop
-8002938c: 8c430000 lw v1,0(v0)
-80029390: 8fc20034 lw v0,52(s8)
-80029394: 00000000 nop
-80029398: 8c420004 lw v0,4(v0)
-8002939c: 00000000 nop
-800293a0: 00402021 move a0,v0
-800293a4: 2402f800 li v0,-2048
-800293a8: 00821024 and v0,a0,v0
-800293ac: 00003021 move a2,zero
-800293b0: 00402821 move a1,v0
-800293b4: 00602021 move a0,v1
-800293b8: 0c00ede0 jal 8003b780 <lseek>
-800293bc: 00000000 nop
- read(f->fildes, onesec_buf, 2048);
-800293c0: 8fc20034 lw v0,52(s8)
-800293c4: 00000000 nop
-800293c8: 8c430000 lw v1,0(v0)
-800293cc: 24060800 li a2,2048
-800293d0: 3c028007 lui v0,0x8007
-800293d4: 2445d36c addiu a1,v0,-11412
-800293d8: 00602021 move a0,v1
-800293dc: 0c00ede4 jal 8003b790 <read>
-800293e0: 00000000 nop
-
- max = 2048 - (f->pos & 2047);
-800293e4: 8fc20034 lw v0,52(s8)
-800293e8: 00000000 nop
-800293ec: 8c420004 lw v0,4(v0)
-800293f0: 00000000 nop
-800293f4: 304207ff andi v0,v0,0x7ff
-800293f8: 24030800 li v1,2048
-800293fc: 00621023 subu v0,v1,v0
-80029400: afc2001c sw v0,28(s8)
-
- //printf("ptr(FIRST) = %d, %x\n", ptr, ptr);
- dprintf("rsize = %d\n", rsize);
-
- memcpy(ptr, onesec_buf + (f->pos & 2047), (rsize > max) ? max : rsize);
-80029404: 8fc20034 lw v0,52(s8)
-80029408: 00000000 nop
-8002940c: 8c420004 lw v0,4(v0)
-80029410: 00000000 nop
-80029414: 304307ff andi v1,v0,0x7ff
-80029418: 3c028007 lui v0,0x8007
-8002941c: 2442d36c addiu v0,v0,-11412
-80029420: 00622821 addu a1,v1,v0
-80029424: 8fc3001c lw v1,28(s8)
-80029428: 8fc20018 lw v0,24(s8)
-8002942c: 00000000 nop
-80029430: 0062202a slt a0,v1,v0
-80029434: 10800002 beqz a0,80029440 <fread+0x168>
-80029438: 00000000 nop
-8002943c: 00601021 move v0,v1
-80029440: 00403021 move a2,v0
-80029444: 8fc40028 lw a0,40(s8)
-80029448: 0c00d75e jal 80035d78 <memcpy>
-8002944c: 00000000 nop
-
- // Middle sector
- ptr += max;
-80029450: 8fc2001c lw v0,28(s8)
-80029454: 8fc30028 lw v1,40(s8)
-80029458: 00000000 nop
-8002945c: 00621021 addu v0,v1,v0
-80029460: afc20028 sw v0,40(s8)
-
- //printf("ptr(MIDDLEsex) = %d, %x\n", ptr, ptr);
- nsect--;
-80029464: 8fc20014 lw v0,20(s8)
-80029468: 00000000 nop
-8002946c: 2442ffff addiu v0,v0,-1
-80029470: afc20014 sw v0,20(s8)
- csize -= max;
-80029474: 8fc30010 lw v1,16(s8)
-80029478: 8fc2001c lw v0,28(s8)
-8002947c: 00000000 nop
-80029480: 00621023 subu v0,v1,v0
-80029484: afc20010 sw v0,16(s8)
-
- if(nsect > 1)
-80029488: 8fc20014 lw v0,20(s8)
-8002948c: 00000000 nop
-80029490: 28420002 slti v0,v0,2
-80029494: 14400021 bnez v0,8002951c <fread+0x244>
-80029498: 00000000 nop
-
- sect_num -= 4096;*/
-
- //printf("read_middle=%d, sect_num = %d\n", read(f->fildes, ptr, sect_num), sect_num);
-
- read(f->fildes, ptr, (nsect - 1) * 2048);
-8002949c: 8fc20034 lw v0,52(s8)
-800294a0: 00000000 nop
-800294a4: 8c430000 lw v1,0(v0)
-800294a8: 8fc20014 lw v0,20(s8)
-800294ac: 00000000 nop
-800294b0: 2442ffff addiu v0,v0,-1
-800294b4: 000212c0 sll v0,v0,0xb
-800294b8: 00403021 move a2,v0
-800294bc: 8fc50028 lw a1,40(s8)
-800294c0: 00602021 move a0,v1
-800294c4: 0c00ede4 jal 8003b790 <read>
-800294c8: 00000000 nop
-
- ptr += (nsect - 1) * 2048;
-800294cc: 8fc20014 lw v0,20(s8)
-800294d0: 00000000 nop
-800294d4: 2442ffff addiu v0,v0,-1
-800294d8: 000212c0 sll v0,v0,0xb
-800294dc: 00401821 move v1,v0
-800294e0: 8fc20028 lw v0,40(s8)
-800294e4: 00000000 nop
-800294e8: 00431021 addu v0,v0,v1
-800294ec: afc20028 sw v0,40(s8)
- csize -= (nsect - 1) * 2048;
-800294f0: 24030001 li v1,1
-800294f4: 8fc20014 lw v0,20(s8)
-800294f8: 00000000 nop
-800294fc: 00621023 subu v0,v1,v0
-80029500: 000212c0 sll v0,v0,0xb
-80029504: 8fc30010 lw v1,16(s8)
-80029508: 00000000 nop
-8002950c: 00621021 addu v0,v1,v0
-80029510: afc20010 sw v0,16(s8)
- nsect = 1;
-80029514: 24020001 li v0,1
-80029518: afc20014 sw v0,20(s8)
- }
-
- //printf("ptr(LAST) = %d, %x\n", ptr, ptr);
-
- if(nsect == 1)
-8002951c: 8fc30014 lw v1,20(s8)
-80029520: 24020001 li v0,1
-80029524: 14620012 bne v1,v0,80029570 <fread+0x298>
-80029528: 00000000 nop
- {
- // Last sector
- read(f->fildes, onesec_buf, 2048);
-8002952c: 8fc20034 lw v0,52(s8)
-80029530: 00000000 nop
-80029534: 8c430000 lw v1,0(v0)
-80029538: 24060800 li a2,2048
-8002953c: 3c028007 lui v0,0x8007
-80029540: 2445d36c addiu a1,v0,-11412
-80029544: 00602021 move a0,v1
-80029548: 0c00ede4 jal 8003b790 <read>
-8002954c: 00000000 nop
-
- memcpy(ptr, onesec_buf, csize);
-80029550: 8fc20010 lw v0,16(s8)
-80029554: 00000000 nop
-80029558: 00403021 move a2,v0
-8002955c: 3c028007 lui v0,0x8007
-80029560: 2445d36c addiu a1,v0,-11412
-80029564: 8fc40028 lw a0,40(s8)
-80029568: 0c00d75e jal 80035d78 <memcpy>
-8002956c: 00000000 nop
- }
- }
-
- f->pos+= rsize;
-80029570: 8fc20034 lw v0,52(s8)
-80029574: 00000000 nop
-80029578: 8c430004 lw v1,4(v0)
-8002957c: 8fc20018 lw v0,24(s8)
-80029580: 00000000 nop
-80029584: 00621821 addu v1,v1,v0
-80029588: 8fc20034 lw v0,52(s8)
-8002958c: 00000000 nop
-80029590: ac430004 sw v1,4(v0)
- return rsize;
-80029594: 8fc20018 lw v0,24(s8)
-}
-80029598: 03c0e821 move sp,s8
-8002959c: 8fbf0024 lw ra,36(sp)
-800295a0: 8fbe0020 lw s8,32(sp)
-800295a4: 27bd0028 addiu sp,sp,40
-800295a8: 03e00008 jr ra
-800295ac: 00000000 nop
-
-800295b0 <fgetc>:
-
-int fgetc(FILE *f)
-{
-800295b0: 27bdffe0 addiu sp,sp,-32
-800295b4: afbf001c sw ra,28(sp)
-800295b8: afbe0018 sw s8,24(sp)
-800295bc: 03a0f021 move s8,sp
-800295c0: afc40020 sw a0,32(s8)
- unsigned char c;
-
- if(f->pos >= f->size)
-800295c4: 8fc20020 lw v0,32(s8)
-800295c8: 00000000 nop
-800295cc: 8c430004 lw v1,4(v0)
-800295d0: 8fc20020 lw v0,32(s8)
-800295d4: 00000000 nop
-800295d8: 8c420010 lw v0,16(v0)
-800295dc: 00000000 nop
-800295e0: 0062102b sltu v0,v1,v0
-800295e4: 14400004 bnez v0,800295f8 <fgetc+0x48>
-800295e8: 00000000 nop
- return EOF;
-800295ec: 2402ffff li v0,-1
-800295f0: 10000009 b 80029618 <fgetc+0x68>
-800295f4: 00000000 nop
-
- fread(&c, sizeof(char), 1, f);
-800295f8: 8fc70020 lw a3,32(s8)
-800295fc: 24060001 li a2,1
-80029600: 24050001 li a1,1
-80029604: 27c20010 addiu v0,s8,16
-80029608: 00402021 move a0,v0
-8002960c: 0c00a4b6 jal 800292d8 <fread>
-80029610: 00000000 nop
-
- return (int)c;
-80029614: 93c20010 lbu v0,16(s8)
-}
-80029618: 03c0e821 move sp,s8
-8002961c: 8fbf001c lw ra,28(sp)
-80029620: 8fbe0018 lw s8,24(sp)
-80029624: 27bd0020 addiu sp,sp,32
-80029628: 03e00008 jr ra
-8002962c: 00000000 nop
-
-80029630 <ftell>:
-
-int ftell(FILE *f)
-{
-80029630: 27bdfff8 addiu sp,sp,-8
-80029634: afbe0004 sw s8,4(sp)
-80029638: 03a0f021 move s8,sp
-8002963c: afc40008 sw a0,8(s8)
- return f->pos;
-80029640: 8fc20008 lw v0,8(s8)
-80029644: 00000000 nop
-80029648: 8c420004 lw v0,4(v0)
-}
-8002964c: 03c0e821 move sp,s8
-80029650: 8fbe0004 lw s8,4(sp)
-80029654: 27bd0008 addiu sp,sp,8
-80029658: 03e00008 jr ra
-8002965c: 00000000 nop
-
-80029660 <fseek>:
-
-int fseek(FILE *f, int offset, int whence)
-{
-80029660: 27bdfff8 addiu sp,sp,-8
-80029664: afbe0004 sw s8,4(sp)
-80029668: 03a0f021 move s8,sp
-8002966c: afc40008 sw a0,8(s8)
-80029670: afc5000c sw a1,12(s8)
-80029674: afc60010 sw a2,16(s8)
- switch(whence)
-80029678: 8fc20010 lw v0,16(s8)
-8002967c: 24030001 li v1,1
-80029680: 1043000c beq v0,v1,800296b4 <fseek+0x54>
-80029684: 00000000 nop
-80029688: 24030002 li v1,2
-8002968c: 10430014 beq v0,v1,800296e0 <fseek+0x80>
-80029690: 00000000 nop
-80029694: 1440001d bnez v0,8002970c <fseek+0xac>
-80029698: 00000000 nop
- {
- case SEEK_SET:
- f->pos = offset;
-8002969c: 8fc3000c lw v1,12(s8)
-800296a0: 8fc20008 lw v0,8(s8)
-800296a4: 00000000 nop
-800296a8: ac430004 sw v1,4(v0)
- break;
-800296ac: 10000020 b 80029730 <fseek+0xd0>
-800296b0: 00000000 nop
- case SEEK_CUR:
- f->pos+= offset;
-800296b4: 8fc20008 lw v0,8(s8)
-800296b8: 00000000 nop
-800296bc: 8c430004 lw v1,4(v0)
-800296c0: 8fc2000c lw v0,12(s8)
-800296c4: 00000000 nop
-800296c8: 00621821 addu v1,v1,v0
-800296cc: 8fc20008 lw v0,8(s8)
-800296d0: 00000000 nop
-800296d4: ac430004 sw v1,4(v0)
- break;
-800296d8: 10000015 b 80029730 <fseek+0xd0>
-800296dc: 00000000 nop
- case SEEK_END:
- f->pos = f->size + offset;
-800296e0: 8fc20008 lw v0,8(s8)
-800296e4: 00000000 nop
-800296e8: 8c430010 lw v1,16(v0)
-800296ec: 8fc2000c lw v0,12(s8)
-800296f0: 00000000 nop
-800296f4: 00621821 addu v1,v1,v0
-800296f8: 8fc20008 lw v0,8(s8)
-800296fc: 00000000 nop
-80029700: ac430004 sw v1,4(v0)
- break;
-80029704: 1000000a b 80029730 <fseek+0xd0>
-80029708: 00000000 nop
- default:
- f->pos = whence + offset;
-8002970c: 8fc30010 lw v1,16(s8)
-80029710: 8fc2000c lw v0,12(s8)
-80029714: 00000000 nop
-80029718: 00621021 addu v0,v1,v0
-8002971c: 00401821 move v1,v0
-80029720: 8fc20008 lw v0,8(s8)
-80029724: 00000000 nop
-80029728: ac430004 sw v1,4(v0)
- break;
-8002972c: 00000000 nop
- }
-
- return 0;
-80029730: 00001021 move v0,zero
-}
-80029734: 03c0e821 move sp,s8
-80029738: 8fbe0004 lw s8,4(sp)
-8002973c: 27bd0008 addiu sp,sp,8
-80029740: 03e00008 jr ra
-80029744: 00000000 nop
-
-80029748 <toupper>:
-
-int toupper(int c)
-{
-80029748: 27bdfff8 addiu sp,sp,-8
-8002974c: afbe0004 sw s8,4(sp)
-80029750: 03a0f021 move s8,sp
-80029754: afc40008 sw a0,8(s8)
- if(c >= 'a' && c <= 'z')
-80029758: 8fc20008 lw v0,8(s8)
-8002975c: 00000000 nop
-80029760: 28420061 slti v0,v0,97
-80029764: 1440000b bnez v0,80029794 <toupper+0x4c>
-80029768: 00000000 nop
-8002976c: 8fc20008 lw v0,8(s8)
-80029770: 00000000 nop
-80029774: 2842007b slti v0,v0,123
-80029778: 10400006 beqz v0,80029794 <toupper+0x4c>
-8002977c: 00000000 nop
- return (c-'a')+'A';
-80029780: 8fc20008 lw v0,8(s8)
-80029784: 00000000 nop
-80029788: 2442ffe0 addiu v0,v0,-32
-8002978c: 10000002 b 80029798 <toupper+0x50>
-80029790: 00000000 nop
-
- return c;
-80029794: 8fc20008 lw v0,8(s8)
-}
-80029798: 03c0e821 move sp,s8
-8002979c: 8fbe0004 lw s8,4(sp)
-800297a0: 27bd0008 addiu sp,sp,8
-800297a4: 03e00008 jr ra
-800297a8: 00000000 nop
-
-800297ac <tolower>:
-
-int tolower(int c)
-{
-800297ac: 27bdfff8 addiu sp,sp,-8
-800297b0: afbe0004 sw s8,4(sp)
-800297b4: 03a0f021 move s8,sp
-800297b8: afc40008 sw a0,8(s8)
- if(c >= 'A' && c <= 'Z')
-800297bc: 8fc20008 lw v0,8(s8)
-800297c0: 00000000 nop
-800297c4: 28420041 slti v0,v0,65
-800297c8: 1440000b bnez v0,800297f8 <tolower+0x4c>
-800297cc: 00000000 nop
-800297d0: 8fc20008 lw v0,8(s8)
-800297d4: 00000000 nop
-800297d8: 2842005b slti v0,v0,91
-800297dc: 10400006 beqz v0,800297f8 <tolower+0x4c>
-800297e0: 00000000 nop
- return (c-'A')+'a';
-800297e4: 8fc20008 lw v0,8(s8)
-800297e8: 00000000 nop
-800297ec: 24420020 addiu v0,v0,32
-800297f0: 10000002 b 800297fc <tolower+0x50>
-800297f4: 00000000 nop
-
- return c;
-800297f8: 8fc20008 lw v0,8(s8)
-}
-800297fc: 03c0e821 move sp,s8
-80029800: 8fbe0004 lw s8,4(sp)
-80029804: 27bd0008 addiu sp,sp,8
-80029808: 03e00008 jr ra
-8002980c: 00000000 nop
-
-80029810 <libc_get_transtbl_fname>:
-
-int libc_get_transtbl_fname(char *tofind, char *outstr, int outl)
-{
-80029810: 27bdbdb0 addiu sp,sp,-16976
-80029814: afbf424c sw ra,16972(sp)
-80029818: afbe4248 sw s8,16968(sp)
-8002981c: 03a0f021 move s8,sp
-80029820: afc44250 sw a0,16976(s8)
-80029824: afc54254 sw a1,16980(s8)
-80029828: afc64258 sw a2,16984(s8)
- FILE *f;
- int s;
- int x;
- int type;
- int y;
- int l = strlen(tofind);
-8002982c: 8fc44250 lw a0,16976(s8)
-80029830: 0c00d8af jal 800362bc <strlen>
-80029834: 00000000 nop
-80029838: afc20030 sw v0,48(s8)
- int filename_found = 0;
-8002983c: afc00020 sw zero,32(s8)
- int exit_loop = 0;
-80029840: afc00024 sw zero,36(s8)
- int otfp = 0;
-80029844: afc00028 sw zero,40(s8)
- int tfp = 0;
-80029848: afc0002c sw zero,44(s8)
- char transtbl[0x4000];
- char orgname[16];
- char newname[256];
- char rootpath[256];
-
- bzero(transtbl, 0x4000);
-8002984c: 27c20038 addiu v0,s8,56
-80029850: 24064000 li a2,16384
-80029854: 00002821 move a1,zero
-80029858: 00402021 move a0,v0
-8002985c: 0c00d7ab jal 80035eac <memset>
-80029860: 00000000 nop
- strcpy(rootpath, "cdrom:\\");
-80029864: 27c34148 addiu v1,s8,16712
-80029868: 3c028004 lui v0,0x8004
-8002986c: 2445f94c addiu a1,v0,-1716
-80029870: 00602021 move a0,v1
-80029874: 0c00d891 jal 80036244 <strcpy>
-80029878: 00000000 nop
-
- f = fopen("cdrom:\\TRANS.TBL;1", "rb");
-8002987c: 3c028004 lui v0,0x8004
-80029880: 2445f954 addiu a1,v0,-1708
-80029884: 3c028004 lui v0,0x8004
-80029888: 2444f958 addiu a0,v0,-1704
-8002988c: 0c00a40c jal 80029030 <fopen>
-80029890: 00000000 nop
-80029894: afc20034 sw v0,52(s8)
-
- if(f == NULL)
-80029898: 8fc20034 lw v0,52(s8)
-8002989c: 00000000 nop
-800298a0: 14400004 bnez v0,800298b4 <libc_get_transtbl_fname+0xa4>
-800298a4: 00000000 nop
- return 0;
-800298a8: 00001021 move v0,zero
-800298ac: 10000246 b 8002a1c8 <libc_get_transtbl_fname+0x9b8>
-800298b0: 00000000 nop
-
- fseek(f, 0, SEEK_END);
-800298b4: 24060002 li a2,2
-800298b8: 00002821 move a1,zero
-800298bc: 8fc40034 lw a0,52(s8)
-800298c0: 0c00a598 jal 80029660 <fseek>
-800298c4: 00000000 nop
- s = ftell(f);
-800298c8: 8fc40034 lw a0,52(s8)
-800298cc: 0c00a58c jal 80029630 <ftell>
-800298d0: 00000000 nop
-800298d4: afc20010 sw v0,16(s8)
- fseek(f, 0, SEEK_SET);
-800298d8: 00003021 move a2,zero
-800298dc: 00002821 move a1,zero
-800298e0: 8fc40034 lw a0,52(s8)
-800298e4: 0c00a598 jal 80029660 <fseek>
-800298e8: 00000000 nop
- fread(transtbl, 1, s, f);
-800298ec: 27c20038 addiu v0,s8,56
-800298f0: 8fc70034 lw a3,52(s8)
-800298f4: 8fc60010 lw a2,16(s8)
-800298f8: 24050001 li a1,1
-800298fc: 00402021 move a0,v0
-80029900: 0c00a4b6 jal 800292d8 <fread>
-80029904: 00000000 nop
- fclose(f);
-80029908: 8fc40034 lw a0,52(s8)
-8002990c: 0c00a4a0 jal 80029280 <fclose>
-80029910: 00000000 nop
-
- outstr[0] = 0;
-80029914: 8fc24254 lw v0,16980(s8)
-80029918: 00000000 nop
-8002991c: a0400000 sb zero,0(v0)
-
- x = 0;
-80029920: afc00014 sw zero,20(s8)
-
- exit_loop = 0;
-80029924: afc00024 sw zero,36(s8)
- filename_found = 0;
-80029928: afc00020 sw zero,32(s8)
-
- for(tfp = 0; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++);
-8002992c: afc0002c sw zero,44(s8)
-80029930: 10000005 b 80029948 <libc_get_transtbl_fname+0x138>
-80029934: 00000000 nop
-80029938: 8fc2002c lw v0,44(s8)
-8002993c: 00000000 nop
-80029940: 24420001 addiu v0,v0,1
-80029944: afc2002c sw v0,44(s8)
-80029948: 8fc2002c lw v0,44(s8)
-8002994c: 8fc34250 lw v1,16976(s8)
-80029950: 00000000 nop
-80029954: 00621021 addu v0,v1,v0
-80029958: 80430000 lb v1,0(v0)
-8002995c: 2402005c li v0,92
-80029960: 1062fff5 beq v1,v0,80029938 <libc_get_transtbl_fname+0x128>
-80029964: 00000000 nop
-80029968: 8fc2002c lw v0,44(s8)
-8002996c: 8fc34250 lw v1,16976(s8)
-80029970: 00000000 nop
-80029974: 00621021 addu v0,v1,v0
-80029978: 80430000 lb v1,0(v0)
-8002997c: 2402002f li v0,47
-80029980: 1062ffed beq v1,v0,80029938 <libc_get_transtbl_fname+0x128>
-80029984: 00000000 nop
-
- otfp = tfp;
-80029988: 8fc2002c lw v0,44(s8)
-8002998c: 00000000 nop
-80029990: afc20028 sw v0,40(s8)
-
- for(y = otfp; y < l; y++)
-80029994: 8fc20028 lw v0,40(s8)
-80029998: 00000000 nop
-8002999c: afc2001c sw v0,28(s8)
-800299a0: 1000001d b 80029a18 <libc_get_transtbl_fname+0x208>
-800299a4: 00000000 nop
- {
- if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/')
-800299a8: 8fc2001c lw v0,28(s8)
-800299ac: 8fc34250 lw v1,16976(s8)
-800299b0: 00000000 nop
-800299b4: 00621021 addu v0,v1,v0
-800299b8: 80420000 lb v0,0(v0)
-800299bc: 00000000 nop
-800299c0: 1040001b beqz v0,80029a30 <libc_get_transtbl_fname+0x220>
-800299c4: 00000000 nop
-800299c8: 8fc2001c lw v0,28(s8)
-800299cc: 8fc34250 lw v1,16976(s8)
-800299d0: 00000000 nop
-800299d4: 00621021 addu v0,v1,v0
-800299d8: 80430000 lb v1,0(v0)
-800299dc: 2402005c li v0,92
-800299e0: 10620013 beq v1,v0,80029a30 <libc_get_transtbl_fname+0x220>
-800299e4: 00000000 nop
-800299e8: 8fc2001c lw v0,28(s8)
-800299ec: 8fc34250 lw v1,16976(s8)
-800299f0: 00000000 nop
-800299f4: 00621021 addu v0,v1,v0
-800299f8: 80430000 lb v1,0(v0)
-800299fc: 2402002f li v0,47
-80029a00: 1062000b beq v1,v0,80029a30 <libc_get_transtbl_fname+0x220>
-80029a04: 00000000 nop
-
- for(tfp = 0; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++);
-
- otfp = tfp;
-
- for(y = otfp; y < l; y++)
-80029a08: 8fc2001c lw v0,28(s8)
-80029a0c: 00000000 nop
-80029a10: 24420001 addiu v0,v0,1
-80029a14: afc2001c sw v0,28(s8)
-80029a18: 8fc3001c lw v1,28(s8)
-80029a1c: 8fc20030 lw v0,48(s8)
-80029a20: 00000000 nop
-80029a24: 0062102a slt v0,v1,v0
-80029a28: 1440ffdf bnez v0,800299a8 <libc_get_transtbl_fname+0x198>
-80029a2c: 00000000 nop
- {
- if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/')
- break;
- }
-
- tfp = y;
-80029a30: 8fc2001c lw v0,28(s8)
-80029a34: 00000000 nop
-80029a38: afc2002c sw v0,44(s8)
-
- while((x < s) && !exit_loop)
-80029a3c: 100001d7 b 8002a19c <libc_get_transtbl_fname+0x98c>
-80029a40: 00000000 nop
- {
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
- x++;
-80029a44: 8fc20014 lw v0,20(s8)
-80029a48: 00000000 nop
-80029a4c: 24420001 addiu v0,v0,1
-80029a50: afc20014 sw v0,20(s8)
-
- tfp = y;
-
- while((x < s) && !exit_loop)
- {
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
-80029a54: 8fc20014 lw v0,20(s8)
-80029a58: 27c30010 addiu v1,s8,16
-80029a5c: 00621021 addu v0,v1,v0
-80029a60: 80430028 lb v1,40(v0)
-80029a64: 24020020 li v0,32
-80029a68: 1062fff6 beq v1,v0,80029a44 <libc_get_transtbl_fname+0x234>
-80029a6c: 00000000 nop
-80029a70: 8fc20014 lw v0,20(s8)
-80029a74: 27c30010 addiu v1,s8,16
-80029a78: 00621021 addu v0,v1,v0
-80029a7c: 80430028 lb v1,40(v0)
-80029a80: 24020009 li v0,9
-80029a84: 1062ffef beq v1,v0,80029a44 <libc_get_transtbl_fname+0x234>
-80029a88: 00000000 nop
-80029a8c: 8fc20014 lw v0,20(s8)
-80029a90: 27c30010 addiu v1,s8,16
-80029a94: 00621021 addu v0,v1,v0
-80029a98: 80430028 lb v1,40(v0)
-80029a9c: 2402000a li v0,10
-80029aa0: 1062ffe8 beq v1,v0,80029a44 <libc_get_transtbl_fname+0x234>
-80029aa4: 00000000 nop
-80029aa8: 8fc20014 lw v0,20(s8)
-80029aac: 27c30010 addiu v1,s8,16
-80029ab0: 00621021 addu v0,v1,v0
-80029ab4: 80430028 lb v1,40(v0)
-80029ab8: 2402000d li v0,13
-80029abc: 1062ffe1 beq v1,v0,80029a44 <libc_get_transtbl_fname+0x234>
-80029ac0: 00000000 nop
- x++;
-
- if(transtbl[x] == 'F')
-80029ac4: 8fc20014 lw v0,20(s8)
-80029ac8: 27c30010 addiu v1,s8,16
-80029acc: 00621021 addu v0,v1,v0
-80029ad0: 80430028 lb v1,40(v0)
-80029ad4: 24020046 li v0,70
-80029ad8: 14620004 bne v1,v0,80029aec <libc_get_transtbl_fname+0x2dc>
-80029adc: 00000000 nop
- type = 0;
-80029ae0: afc00018 sw zero,24(s8)
-80029ae4: 1000000a b 80029b10 <libc_get_transtbl_fname+0x300>
-80029ae8: 00000000 nop
- else if(transtbl[x] == 'D')
-80029aec: 8fc20014 lw v0,20(s8)
-80029af0: 27c30010 addiu v1,s8,16
-80029af4: 00621021 addu v0,v1,v0
-80029af8: 80430028 lb v1,40(v0)
-80029afc: 24020044 li v0,68
-80029b00: 14620003 bne v1,v0,80029b10 <libc_get_transtbl_fname+0x300>
-80029b04: 00000000 nop
- type = 1;
-80029b08: 24020001 li v0,1
-80029b0c: afc20018 sw v0,24(s8)
-
- x++;
-80029b10: 8fc20014 lw v0,20(s8)
-80029b14: 00000000 nop
-80029b18: 24420001 addiu v0,v0,1
-80029b1c: afc20014 sw v0,20(s8)
-
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
-80029b20: 10000005 b 80029b38 <libc_get_transtbl_fname+0x328>
-80029b24: 00000000 nop
- x++;
-80029b28: 8fc20014 lw v0,20(s8)
-80029b2c: 00000000 nop
-80029b30: 24420001 addiu v0,v0,1
-80029b34: afc20014 sw v0,20(s8)
- else if(transtbl[x] == 'D')
- type = 1;
-
- x++;
-
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
-80029b38: 8fc20014 lw v0,20(s8)
-80029b3c: 27c30010 addiu v1,s8,16
-80029b40: 00621021 addu v0,v1,v0
-80029b44: 80430028 lb v1,40(v0)
-80029b48: 24020020 li v0,32
-80029b4c: 1062fff6 beq v1,v0,80029b28 <libc_get_transtbl_fname+0x318>
-80029b50: 00000000 nop
-80029b54: 8fc20014 lw v0,20(s8)
-80029b58: 27c30010 addiu v1,s8,16
-80029b5c: 00621021 addu v0,v1,v0
-80029b60: 80430028 lb v1,40(v0)
-80029b64: 24020009 li v0,9
-80029b68: 1062ffef beq v1,v0,80029b28 <libc_get_transtbl_fname+0x318>
-80029b6c: 00000000 nop
-80029b70: 8fc20014 lw v0,20(s8)
-80029b74: 27c30010 addiu v1,s8,16
-80029b78: 00621021 addu v0,v1,v0
-80029b7c: 80430028 lb v1,40(v0)
-80029b80: 2402000a li v0,10
-80029b84: 1062ffe8 beq v1,v0,80029b28 <libc_get_transtbl_fname+0x318>
-80029b88: 00000000 nop
-80029b8c: 8fc20014 lw v0,20(s8)
-80029b90: 27c30010 addiu v1,s8,16
-80029b94: 00621021 addu v0,v1,v0
-80029b98: 80430028 lb v1,40(v0)
-80029b9c: 2402000d li v0,13
-80029ba0: 1062ffe1 beq v1,v0,80029b28 <libc_get_transtbl_fname+0x318>
-80029ba4: 00000000 nop
- x++;
-
- y = 0;
-80029ba8: afc0001c sw zero,28(s8)
-
- while(!(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r'
-80029bac: 1000000f b 80029bec <libc_get_transtbl_fname+0x3dc>
-80029bb0: 00000000 nop
- || transtbl[x] == 0))
- orgname[y++] = transtbl[x++];
-80029bb4: 8fc2001c lw v0,28(s8)
-80029bb8: 00000000 nop
-80029bbc: 24430001 addiu v1,v0,1
-80029bc0: afc3001c sw v1,28(s8)
-80029bc4: 8fc30014 lw v1,20(s8)
-80029bc8: 00000000 nop
-80029bcc: 24640001 addiu a0,v1,1
-80029bd0: afc40014 sw a0,20(s8)
-80029bd4: 27c40010 addiu a0,s8,16
-80029bd8: 00831821 addu v1,a0,v1
-80029bdc: 80630028 lb v1,40(v1)
-80029be0: 27c40010 addiu a0,s8,16
-80029be4: 00821021 addu v0,a0,v0
-80029be8: a0434028 sb v1,16424(v0)
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
- x++;
-
- y = 0;
-
- while(!(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r'
-80029bec: 8fc20014 lw v0,20(s8)
-80029bf0: 27c30010 addiu v1,s8,16
-80029bf4: 00621021 addu v0,v1,v0
-80029bf8: 80430028 lb v1,40(v0)
-80029bfc: 24020020 li v0,32
-80029c00: 1062001d beq v1,v0,80029c78 <libc_get_transtbl_fname+0x468>
-80029c04: 00000000 nop
-80029c08: 8fc20014 lw v0,20(s8)
-80029c0c: 27c30010 addiu v1,s8,16
-80029c10: 00621021 addu v0,v1,v0
-80029c14: 80430028 lb v1,40(v0)
-80029c18: 24020009 li v0,9
-80029c1c: 10620016 beq v1,v0,80029c78 <libc_get_transtbl_fname+0x468>
-80029c20: 00000000 nop
-80029c24: 8fc20014 lw v0,20(s8)
-80029c28: 27c30010 addiu v1,s8,16
-80029c2c: 00621021 addu v0,v1,v0
-80029c30: 80430028 lb v1,40(v0)
-80029c34: 2402000a li v0,10
-80029c38: 1062000f beq v1,v0,80029c78 <libc_get_transtbl_fname+0x468>
-80029c3c: 00000000 nop
-80029c40: 8fc20014 lw v0,20(s8)
-80029c44: 27c30010 addiu v1,s8,16
-80029c48: 00621021 addu v0,v1,v0
-80029c4c: 80430028 lb v1,40(v0)
-80029c50: 2402000d li v0,13
-80029c54: 10620008 beq v1,v0,80029c78 <libc_get_transtbl_fname+0x468>
-80029c58: 00000000 nop
- || transtbl[x] == 0))
-80029c5c: 8fc20014 lw v0,20(s8)
-80029c60: 27c30010 addiu v1,s8,16
-80029c64: 00621021 addu v0,v1,v0
-80029c68: 80420028 lb v0,40(v0)
-80029c6c: 00000000 nop
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
- x++;
-
- y = 0;
-
- while(!(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r'
-80029c70: 1440ffd0 bnez v0,80029bb4 <libc_get_transtbl_fname+0x3a4>
-80029c74: 00000000 nop
- || transtbl[x] == 0))
- orgname[y++] = transtbl[x++];
-
- orgname[y] = 0;
-80029c78: 8fc2001c lw v0,28(s8)
-80029c7c: 27c30010 addiu v1,s8,16
-80029c80: 00621021 addu v0,v1,v0
-80029c84: a0404028 sb zero,16424(v0)
- //printf("orgname = %s\n", orgname);
-
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
-80029c88: 10000005 b 80029ca0 <libc_get_transtbl_fname+0x490>
-80029c8c: 00000000 nop
- x++;
-80029c90: 8fc20014 lw v0,20(s8)
-80029c94: 00000000 nop
-80029c98: 24420001 addiu v0,v0,1
-80029c9c: afc20014 sw v0,20(s8)
- orgname[y++] = transtbl[x++];
-
- orgname[y] = 0;
- //printf("orgname = %s\n", orgname);
-
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
-80029ca0: 8fc20014 lw v0,20(s8)
-80029ca4: 27c30010 addiu v1,s8,16
-80029ca8: 00621021 addu v0,v1,v0
-80029cac: 80430028 lb v1,40(v0)
-80029cb0: 24020020 li v0,32
-80029cb4: 1062fff6 beq v1,v0,80029c90 <libc_get_transtbl_fname+0x480>
-80029cb8: 00000000 nop
-80029cbc: 8fc20014 lw v0,20(s8)
-80029cc0: 27c30010 addiu v1,s8,16
-80029cc4: 00621021 addu v0,v1,v0
-80029cc8: 80430028 lb v1,40(v0)
-80029ccc: 24020009 li v0,9
-80029cd0: 1062ffef beq v1,v0,80029c90 <libc_get_transtbl_fname+0x480>
-80029cd4: 00000000 nop
-80029cd8: 8fc20014 lw v0,20(s8)
-80029cdc: 27c30010 addiu v1,s8,16
-80029ce0: 00621021 addu v0,v1,v0
-80029ce4: 80430028 lb v1,40(v0)
-80029ce8: 2402000a li v0,10
-80029cec: 1062ffe8 beq v1,v0,80029c90 <libc_get_transtbl_fname+0x480>
-80029cf0: 00000000 nop
-80029cf4: 8fc20014 lw v0,20(s8)
-80029cf8: 27c30010 addiu v1,s8,16
-80029cfc: 00621021 addu v0,v1,v0
-80029d00: 80430028 lb v1,40(v0)
-80029d04: 2402000d li v0,13
-80029d08: 1062ffe1 beq v1,v0,80029c90 <libc_get_transtbl_fname+0x480>
-80029d0c: 00000000 nop
- x++;
-
- y = 0;
-80029d10: afc0001c sw zero,28(s8)
-
- while(!(transtbl[x] == '\n' || transtbl[x] == '\r' || transtbl[x] == 0))
-80029d14: 1000000f b 80029d54 <libc_get_transtbl_fname+0x544>
-80029d18: 00000000 nop
- newname[y++] = transtbl[x++];
-80029d1c: 8fc2001c lw v0,28(s8)
-80029d20: 00000000 nop
-80029d24: 24430001 addiu v1,v0,1
-80029d28: afc3001c sw v1,28(s8)
-80029d2c: 8fc30014 lw v1,20(s8)
-80029d30: 00000000 nop
-80029d34: 24640001 addiu a0,v1,1
-80029d38: afc40014 sw a0,20(s8)
-80029d3c: 27c40010 addiu a0,s8,16
-80029d40: 00831821 addu v1,a0,v1
-80029d44: 80630028 lb v1,40(v1)
-80029d48: 27c40010 addiu a0,s8,16
-80029d4c: 00821021 addu v0,a0,v0
-80029d50: a0434038 sb v1,16440(v0)
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
- x++;
-
- y = 0;
-
- while(!(transtbl[x] == '\n' || transtbl[x] == '\r' || transtbl[x] == 0))
-80029d54: 8fc20014 lw v0,20(s8)
-80029d58: 27c30010 addiu v1,s8,16
-80029d5c: 00621021 addu v0,v1,v0
-80029d60: 80430028 lb v1,40(v0)
-80029d64: 2402000a li v0,10
-80029d68: 1062000f beq v1,v0,80029da8 <libc_get_transtbl_fname+0x598>
-80029d6c: 00000000 nop
-80029d70: 8fc20014 lw v0,20(s8)
-80029d74: 27c30010 addiu v1,s8,16
-80029d78: 00621021 addu v0,v1,v0
-80029d7c: 80430028 lb v1,40(v0)
-80029d80: 2402000d li v0,13
-80029d84: 10620008 beq v1,v0,80029da8 <libc_get_transtbl_fname+0x598>
-80029d88: 00000000 nop
-80029d8c: 8fc20014 lw v0,20(s8)
-80029d90: 27c30010 addiu v1,s8,16
-80029d94: 00621021 addu v0,v1,v0
-80029d98: 80420028 lb v0,40(v0)
-80029d9c: 00000000 nop
-80029da0: 1440ffde bnez v0,80029d1c <libc_get_transtbl_fname+0x50c>
-80029da4: 00000000 nop
- newname[y++] = transtbl[x++];
-
- newname[y] = 0;
-80029da8: 8fc2001c lw v0,28(s8)
-80029dac: 27c30010 addiu v1,s8,16
-80029db0: 00621021 addu v0,v1,v0
-80029db4: a0404038 sb zero,16440(v0)
-
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
-80029db8: 10000005 b 80029dd0 <libc_get_transtbl_fname+0x5c0>
-80029dbc: 00000000 nop
- x++;
-80029dc0: 8fc20014 lw v0,20(s8)
-80029dc4: 00000000 nop
-80029dc8: 24420001 addiu v0,v0,1
-80029dcc: afc20014 sw v0,20(s8)
- while(!(transtbl[x] == '\n' || transtbl[x] == '\r' || transtbl[x] == 0))
- newname[y++] = transtbl[x++];
-
- newname[y] = 0;
-
- while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r')
-80029dd0: 8fc20014 lw v0,20(s8)
-80029dd4: 27c30010 addiu v1,s8,16
-80029dd8: 00621021 addu v0,v1,v0
-80029ddc: 80430028 lb v1,40(v0)
-80029de0: 24020020 li v0,32
-80029de4: 1062fff6 beq v1,v0,80029dc0 <libc_get_transtbl_fname+0x5b0>
-80029de8: 00000000 nop
-80029dec: 8fc20014 lw v0,20(s8)
-80029df0: 27c30010 addiu v1,s8,16
-80029df4: 00621021 addu v0,v1,v0
-80029df8: 80430028 lb v1,40(v0)
-80029dfc: 24020009 li v0,9
-80029e00: 1062ffef beq v1,v0,80029dc0 <libc_get_transtbl_fname+0x5b0>
-80029e04: 00000000 nop
-80029e08: 8fc20014 lw v0,20(s8)
-80029e0c: 27c30010 addiu v1,s8,16
-80029e10: 00621021 addu v0,v1,v0
-80029e14: 80430028 lb v1,40(v0)
-80029e18: 2402000a li v0,10
-80029e1c: 1062ffe8 beq v1,v0,80029dc0 <libc_get_transtbl_fname+0x5b0>
-80029e20: 00000000 nop
-80029e24: 8fc20014 lw v0,20(s8)
-80029e28: 27c30010 addiu v1,s8,16
-80029e2c: 00621021 addu v0,v1,v0
-80029e30: 80430028 lb v1,40(v0)
-80029e34: 2402000d li v0,13
-80029e38: 1062ffe1 beq v1,v0,80029dc0 <libc_get_transtbl_fname+0x5b0>
-80029e3c: 00000000 nop
- x++;
-
- //printf("newname = %s\n", newname);
-
- if(strncasecmp(&tofind[otfp], newname, tfp-otfp) == 0)
-80029e40: 8fc20028 lw v0,40(s8)
-80029e44: 8fc34250 lw v1,16976(s8)
-80029e48: 00000000 nop
-80029e4c: 00622021 addu a0,v1,v0
-80029e50: 8fc3002c lw v1,44(s8)
-80029e54: 8fc20028 lw v0,40(s8)
-80029e58: 00000000 nop
-80029e5c: 00621023 subu v0,v1,v0
-80029e60: 00401821 move v1,v0
-80029e64: 27c24048 addiu v0,s8,16456
-80029e68: 00603021 move a2,v1
-80029e6c: 00402821 move a1,v0
-80029e70: 0c00dcd3 jal 8003734c <strncasecmp>
-80029e74: 00000000 nop
-80029e78: 144000c8 bnez v0,8002a19c <libc_get_transtbl_fname+0x98c>
-80029e7c: 00000000 nop
- {
- if(type == 0)
-80029e80: 8fc20018 lw v0,24(s8)
-80029e84: 00000000 nop
-80029e88: 1440001d bnez v0,80029f00 <libc_get_transtbl_fname+0x6f0>
-80029e8c: 00000000 nop
- {
- dprintf("Filename found: %s -> %s%s\n", tofind, rootpath, orgname);
- filename_found = 1;
-80029e90: 24020001 li v0,1
-80029e94: afc20020 sw v0,32(s8)
- exit_loop = 1;
-80029e98: 24020001 li v0,1
-80029e9c: afc20024 sw v0,36(s8)
-
- strncpy(outstr, rootpath, outl);
-80029ea0: 8fc34258 lw v1,16984(s8)
-80029ea4: 27c24148 addiu v0,s8,16712
-80029ea8: 00603021 move a2,v1
-80029eac: 00402821 move a1,v0
-80029eb0: 8fc44254 lw a0,16980(s8)
-80029eb4: 0c00d860 jal 80036180 <strncpy>
-80029eb8: 00000000 nop
- strncat(outstr, orgname, outl-strlen(rootpath));
-80029ebc: 27c24148 addiu v0,s8,16712
-80029ec0: 00402021 move a0,v0
-80029ec4: 0c00d8af jal 800362bc <strlen>
-80029ec8: 00000000 nop
-80029ecc: 00401821 move v1,v0
-80029ed0: 8fc24258 lw v0,16984(s8)
-80029ed4: 00000000 nop
-80029ed8: 00431023 subu v0,v0,v1
-80029edc: 00401821 move v1,v0
-80029ee0: 27c24038 addiu v0,s8,16440
-80029ee4: 00603021 move a2,v1
-80029ee8: 00402821 move a1,v0
-80029eec: 8fc44254 lw a0,16980(s8)
-80029ef0: 0c00dc6e jal 800371b8 <strncat>
-80029ef4: 00000000 nop
-80029ef8: 100000a8 b 8002a19c <libc_get_transtbl_fname+0x98c>
-80029efc: 00000000 nop
- {
- //printf("Found directory! %s\n", newname);
-
- //printf("tfp = %d\n", tfp);
-
- if(tfp == l || tofind[l-1] == '/'
-80029f00: 8fc3002c lw v1,44(s8)
-80029f04: 8fc20030 lw v0,48(s8)
-80029f08: 00000000 nop
-80029f0c: 10620015 beq v1,v0,80029f64 <libc_get_transtbl_fname+0x754>
-80029f10: 00000000 nop
-80029f14: 8fc20030 lw v0,48(s8)
-80029f18: 00000000 nop
-80029f1c: 2442ffff addiu v0,v0,-1
-80029f20: 8fc34250 lw v1,16976(s8)
-80029f24: 00000000 nop
-80029f28: 00621021 addu v0,v1,v0
-80029f2c: 80430000 lb v1,0(v0)
-80029f30: 2402002f li v0,47
-80029f34: 1062000b beq v1,v0,80029f64 <libc_get_transtbl_fname+0x754>
-80029f38: 00000000 nop
- || tofind[l-1] == '\\')
-80029f3c: 8fc20030 lw v0,48(s8)
-80029f40: 00000000 nop
-80029f44: 2442ffff addiu v0,v0,-1
-80029f48: 8fc34250 lw v1,16976(s8)
-80029f4c: 00000000 nop
-80029f50: 00621021 addu v0,v1,v0
-80029f54: 80430000 lb v1,0(v0)
-80029f58: 2402005c li v0,92
-80029f5c: 14620009 bne v1,v0,80029f84 <libc_get_transtbl_fname+0x774>
-80029f60: 00000000 nop
- {
- dprintf("File not found. A directory was specified.\n");
- exit_loop = 1;
-80029f64: 24020001 li v0,1
-80029f68: afc20024 sw v0,36(s8)
- continue;
-80029f6c: 1000008b b 8002a19c <libc_get_transtbl_fname+0x98c>
-80029f70: 00000000 nop
- }
-
- //tfp++;
- for(; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++);
-80029f74: 8fc2002c lw v0,44(s8)
-80029f78: 00000000 nop
-80029f7c: 24420001 addiu v0,v0,1
-80029f80: afc2002c sw v0,44(s8)
-80029f84: 8fc2002c lw v0,44(s8)
-80029f88: 8fc34250 lw v1,16976(s8)
-80029f8c: 00000000 nop
-80029f90: 00621021 addu v0,v1,v0
-80029f94: 80430000 lb v1,0(v0)
-80029f98: 2402005c li v0,92
-80029f9c: 1062fff5 beq v1,v0,80029f74 <libc_get_transtbl_fname+0x764>
-80029fa0: 00000000 nop
-80029fa4: 8fc2002c lw v0,44(s8)
-80029fa8: 8fc34250 lw v1,16976(s8)
-80029fac: 00000000 nop
-80029fb0: 00621021 addu v0,v1,v0
-80029fb4: 80430000 lb v1,0(v0)
-80029fb8: 2402002f li v0,47
-80029fbc: 1062ffed beq v1,v0,80029f74 <libc_get_transtbl_fname+0x764>
-80029fc0: 00000000 nop
-
- otfp = tfp;
-80029fc4: 8fc2002c lw v0,44(s8)
-80029fc8: 00000000 nop
-80029fcc: afc20028 sw v0,40(s8)
-
- for(y = otfp; y < l; y++)
-80029fd0: 8fc20028 lw v0,40(s8)
-80029fd4: 00000000 nop
-80029fd8: afc2001c sw v0,28(s8)
-80029fdc: 1000001d b 8002a054 <libc_get_transtbl_fname+0x844>
-80029fe0: 00000000 nop
- {
- if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/')
-80029fe4: 8fc2001c lw v0,28(s8)
-80029fe8: 8fc34250 lw v1,16976(s8)
-80029fec: 00000000 nop
-80029ff0: 00621021 addu v0,v1,v0
-80029ff4: 80420000 lb v0,0(v0)
-80029ff8: 00000000 nop
-80029ffc: 1040001b beqz v0,8002a06c <libc_get_transtbl_fname+0x85c>
-8002a000: 00000000 nop
-8002a004: 8fc2001c lw v0,28(s8)
-8002a008: 8fc34250 lw v1,16976(s8)
-8002a00c: 00000000 nop
-8002a010: 00621021 addu v0,v1,v0
-8002a014: 80430000 lb v1,0(v0)
-8002a018: 2402005c li v0,92
-8002a01c: 10620013 beq v1,v0,8002a06c <libc_get_transtbl_fname+0x85c>
-8002a020: 00000000 nop
-8002a024: 8fc2001c lw v0,28(s8)
-8002a028: 8fc34250 lw v1,16976(s8)
-8002a02c: 00000000 nop
-8002a030: 00621021 addu v0,v1,v0
-8002a034: 80430000 lb v1,0(v0)
-8002a038: 2402002f li v0,47
-8002a03c: 1062000b beq v1,v0,8002a06c <libc_get_transtbl_fname+0x85c>
-8002a040: 00000000 nop
- //tfp++;
- for(; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++);
-
- otfp = tfp;
-
- for(y = otfp; y < l; y++)
-8002a044: 8fc2001c lw v0,28(s8)
-8002a048: 00000000 nop
-8002a04c: 24420001 addiu v0,v0,1
-8002a050: afc2001c sw v0,28(s8)
-8002a054: 8fc3001c lw v1,28(s8)
-8002a058: 8fc20030 lw v0,48(s8)
-8002a05c: 00000000 nop
-8002a060: 0062102a slt v0,v1,v0
-8002a064: 1440ffdf bnez v0,80029fe4 <libc_get_transtbl_fname+0x7d4>
-8002a068: 00000000 nop
- {
- if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/')
- break;
- }
-
- tfp = y;
-8002a06c: 8fc2001c lw v0,28(s8)
-8002a070: 00000000 nop
-8002a074: afc2002c sw v0,44(s8)
-
- strcat(rootpath, orgname);
-8002a078: 27c34038 addiu v1,s8,16440
-8002a07c: 27c24148 addiu v0,s8,16712
-8002a080: 00602821 move a1,v1
-8002a084: 00402021 move a0,v0
-8002a088: 0c00dc56 jal 80037158 <strcat>
-8002a08c: 00000000 nop
- strcat(rootpath, "\\");
-8002a090: 27c34148 addiu v1,s8,16712
-8002a094: 3c028004 lui v0,0x8004
-8002a098: 2445f96c addiu a1,v0,-1684
-8002a09c: 00602021 move a0,v1
-8002a0a0: 0c00dc56 jal 80037158 <strcat>
-8002a0a4: 00000000 nop
-
- y = strlen(rootpath);
-8002a0a8: 27c24148 addiu v0,s8,16712
-8002a0ac: 00402021 move a0,v0
-8002a0b0: 0c00d8af jal 800362bc <strlen>
-8002a0b4: 00000000 nop
-8002a0b8: afc2001c sw v0,28(s8)
- strcat(rootpath, "TRANS.TBL;1");
-8002a0bc: 27c34148 addiu v1,s8,16712
-8002a0c0: 3c028004 lui v0,0x8004
-8002a0c4: 2445f970 addiu a1,v0,-1680
-8002a0c8: 00602021 move a0,v1
-8002a0cc: 0c00dc56 jal 80037158 <strcat>
-8002a0d0: 00000000 nop
-
- bzero(transtbl, 0x4000);
-8002a0d4: 27c20038 addiu v0,s8,56
-8002a0d8: 24064000 li a2,16384
-8002a0dc: 00002821 move a1,zero
-8002a0e0: 00402021 move a0,v0
-8002a0e4: 0c00d7ab jal 80035eac <memset>
-8002a0e8: 00000000 nop
-
- f = fopen(rootpath, "rb");
-8002a0ec: 27c34148 addiu v1,s8,16712
-8002a0f0: 3c028004 lui v0,0x8004
-8002a0f4: 2445f954 addiu a1,v0,-1708
-8002a0f8: 00602021 move a0,v1
-8002a0fc: 0c00a40c jal 80029030 <fopen>
-8002a100: 00000000 nop
-8002a104: afc20034 sw v0,52(s8)
-
- if(f == NULL)
-8002a108: 8fc20034 lw v0,52(s8)
-8002a10c: 00000000 nop
-8002a110: 14400005 bnez v0,8002a128 <libc_get_transtbl_fname+0x918>
-8002a114: 00000000 nop
- {
- dprintf("Couldn't find %s\n", rootpath);
- exit_loop = 1;
-8002a118: 24020001 li v0,1
-8002a11c: afc20024 sw v0,36(s8)
- continue;
-8002a120: 1000001e b 8002a19c <libc_get_transtbl_fname+0x98c>
-8002a124: 00000000 nop
- }
-
- rootpath[y] = 0;
-8002a128: 8fc2001c lw v0,28(s8)
-8002a12c: 27c30010 addiu v1,s8,16
-8002a130: 00621021 addu v0,v1,v0
-8002a134: a0404138 sb zero,16696(v0)
-
- fseek(f, 0, SEEK_END);
-8002a138: 24060002 li a2,2
-8002a13c: 00002821 move a1,zero
-8002a140: 8fc40034 lw a0,52(s8)
-8002a144: 0c00a598 jal 80029660 <fseek>
-8002a148: 00000000 nop
- s = ftell(f);
-8002a14c: 8fc40034 lw a0,52(s8)
-8002a150: 0c00a58c jal 80029630 <ftell>
-8002a154: 00000000 nop
-8002a158: afc20010 sw v0,16(s8)
- fseek(f, 0, SEEK_SET);
-8002a15c: 00003021 move a2,zero
-8002a160: 00002821 move a1,zero
-8002a164: 8fc40034 lw a0,52(s8)
-8002a168: 0c00a598 jal 80029660 <fseek>
-8002a16c: 00000000 nop
- fread(transtbl, 1, s, f);
-8002a170: 27c20038 addiu v0,s8,56
-8002a174: 8fc70034 lw a3,52(s8)
-8002a178: 8fc60010 lw a2,16(s8)
-8002a17c: 24050001 li a1,1
-8002a180: 00402021 move a0,v0
-8002a184: 0c00a4b6 jal 800292d8 <fread>
-8002a188: 00000000 nop
- fclose(f);
-8002a18c: 8fc40034 lw a0,52(s8)
-8002a190: 0c00a4a0 jal 80029280 <fclose>
-8002a194: 00000000 nop
-
- x = 0;
-8002a198: afc00014 sw zero,20(s8)
- break;
- }
-
- tfp = y;
-
- while((x < s) && !exit_loop)
-8002a19c: 8fc30014 lw v1,20(s8)
-8002a1a0: 8fc20010 lw v0,16(s8)
-8002a1a4: 00000000 nop
-8002a1a8: 0062102a slt v0,v1,v0
-8002a1ac: 10400005 beqz v0,8002a1c4 <libc_get_transtbl_fname+0x9b4>
-8002a1b0: 00000000 nop
-8002a1b4: 8fc20024 lw v0,36(s8)
-8002a1b8: 00000000 nop
-8002a1bc: 1040fe25 beqz v0,80029a54 <libc_get_transtbl_fname+0x244>
-8002a1c0: 00000000 nop
- x = 0;
- }
- }
- }
-
- return filename_found;
-8002a1c4: 8fc20020 lw v0,32(s8)
-}
-8002a1c8: 03c0e821 move sp,s8
-8002a1cc: 8fbf424c lw ra,16972(sp)
-8002a1d0: 8fbe4248 lw s8,16968(sp)
-8002a1d4: 27bd4250 addiu sp,sp,16976
-8002a1d8: 03e00008 jr ra
-8002a1dc: 00000000 nop
-
-8002a1e0 <isupper>:
-
-int isupper(int c)
-{
-8002a1e0: 27bdfff8 addiu sp,sp,-8
-8002a1e4: afbe0004 sw s8,4(sp)
-8002a1e8: 03a0f021 move s8,sp
-8002a1ec: afc40008 sw a0,8(s8)
- return (c >= 'A' && c <= 'Z');
-8002a1f0: 8fc20008 lw v0,8(s8)
-8002a1f4: 00000000 nop
-8002a1f8: 28420041 slti v0,v0,65
-8002a1fc: 14400009 bnez v0,8002a224 <isupper+0x44>
-8002a200: 00000000 nop
-8002a204: 8fc20008 lw v0,8(s8)
-8002a208: 00000000 nop
-8002a20c: 2842005b slti v0,v0,91
-8002a210: 10400004 beqz v0,8002a224 <isupper+0x44>
-8002a214: 00000000 nop
-8002a218: 24020001 li v0,1
-8002a21c: 10000002 b 8002a228 <isupper+0x48>
-8002a220: 00000000 nop
-8002a224: 00001021 move v0,zero
-}
-8002a228: 03c0e821 move sp,s8
-8002a22c: 8fbe0004 lw s8,4(sp)
-8002a230: 27bd0008 addiu sp,sp,8
-8002a234: 03e00008 jr ra
-8002a238: 00000000 nop
-
-8002a23c <islower>:
-
-int islower(int c)
-{
-8002a23c: 27bdfff8 addiu sp,sp,-8
-8002a240: afbe0004 sw s8,4(sp)
-8002a244: 03a0f021 move s8,sp
-8002a248: afc40008 sw a0,8(s8)
- return (c >= 'a' && c <= 'z');
-8002a24c: 8fc20008 lw v0,8(s8)
-8002a250: 00000000 nop
-8002a254: 28420061 slti v0,v0,97
-8002a258: 14400009 bnez v0,8002a280 <islower+0x44>
-8002a25c: 00000000 nop
-8002a260: 8fc20008 lw v0,8(s8)
-8002a264: 00000000 nop
-8002a268: 2842007b slti v0,v0,123
-8002a26c: 10400004 beqz v0,8002a280 <islower+0x44>
-8002a270: 00000000 nop
-8002a274: 24020001 li v0,1
-8002a278: 10000002 b 8002a284 <islower+0x48>
-8002a27c: 00000000 nop
-8002a280: 00001021 move v0,zero
-}
-8002a284: 03c0e821 move sp,s8
-8002a288: 8fbe0004 lw s8,4(sp)
-8002a28c: 27bd0008 addiu sp,sp,8
-8002a290: 03e00008 jr ra
-8002a294: 00000000 nop
-
-8002a298 <isdigit>:
-
-int isdigit(int c)
-{
-8002a298: 27bdfff8 addiu sp,sp,-8
-8002a29c: afbe0004 sw s8,4(sp)
-8002a2a0: 03a0f021 move s8,sp
-8002a2a4: afc40008 sw a0,8(s8)
- return (c >= '0' && c <= '9');
-8002a2a8: 8fc20008 lw v0,8(s8)
-8002a2ac: 00000000 nop
-8002a2b0: 28420030 slti v0,v0,48
-8002a2b4: 14400009 bnez v0,8002a2dc <isdigit+0x44>
-8002a2b8: 00000000 nop
-8002a2bc: 8fc20008 lw v0,8(s8)
-8002a2c0: 00000000 nop
-8002a2c4: 2842003a slti v0,v0,58
-8002a2c8: 10400004 beqz v0,8002a2dc <isdigit+0x44>
-8002a2cc: 00000000 nop
-8002a2d0: 24020001 li v0,1
-8002a2d4: 10000002 b 8002a2e0 <isdigit+0x48>
-8002a2d8: 00000000 nop
-8002a2dc: 00001021 move v0,zero
-}
-8002a2e0: 03c0e821 move sp,s8
-8002a2e4: 8fbe0004 lw s8,4(sp)
-8002a2e8: 27bd0008 addiu sp,sp,8
-8002a2ec: 03e00008 jr ra
-8002a2f0: 00000000 nop
-
-8002a2f4 <isxdigit>:
-
-int isxdigit(int c)
-{
-8002a2f4: 27bdfff8 addiu sp,sp,-8
-8002a2f8: afbe0004 sw s8,4(sp)
-8002a2fc: 03a0f021 move s8,sp
-8002a300: afc40008 sw a0,8(s8)
- return ((c >= '0' && c <= '9') || (c >= 'A' && c<='F') || (c >= 'a' && c<='f'));
-8002a304: 8fc20008 lw v0,8(s8)
-8002a308: 00000000 nop
-8002a30c: 28420030 slti v0,v0,48
-8002a310: 14400006 bnez v0,8002a32c <isxdigit+0x38>
-8002a314: 00000000 nop
-8002a318: 8fc20008 lw v0,8(s8)
-8002a31c: 00000000 nop
-8002a320: 2842003a slti v0,v0,58
-8002a324: 14400015 bnez v0,8002a37c <isxdigit+0x88>
-8002a328: 00000000 nop
-8002a32c: 8fc20008 lw v0,8(s8)
-8002a330: 00000000 nop
-8002a334: 28420041 slti v0,v0,65
-8002a338: 14400006 bnez v0,8002a354 <isxdigit+0x60>
-8002a33c: 00000000 nop
-8002a340: 8fc20008 lw v0,8(s8)
-8002a344: 00000000 nop
-8002a348: 28420047 slti v0,v0,71
-8002a34c: 1440000b bnez v0,8002a37c <isxdigit+0x88>
-8002a350: 00000000 nop
-8002a354: 8fc20008 lw v0,8(s8)
-8002a358: 00000000 nop
-8002a35c: 28420061 slti v0,v0,97
-8002a360: 14400009 bnez v0,8002a388 <isxdigit+0x94>
-8002a364: 00000000 nop
-8002a368: 8fc20008 lw v0,8(s8)
-8002a36c: 00000000 nop
-8002a370: 28420067 slti v0,v0,103
-8002a374: 10400004 beqz v0,8002a388 <isxdigit+0x94>
-8002a378: 00000000 nop
-8002a37c: 24020001 li v0,1
-8002a380: 10000002 b 8002a38c <isxdigit+0x98>
-8002a384: 00000000 nop
-8002a388: 00001021 move v0,zero
-}
-8002a38c: 03c0e821 move sp,s8
-8002a390: 8fbe0004 lw s8,4(sp)
-8002a394: 27bd0008 addiu sp,sp,8
-8002a398: 03e00008 jr ra
-8002a39c: 00000000 nop
-
-8002a3a0 <isalpha>:
-
-int isalpha(int c)
-{
-8002a3a0: 27bdfff8 addiu sp,sp,-8
-8002a3a4: afbe0004 sw s8,4(sp)
-8002a3a8: 03a0f021 move s8,sp
-8002a3ac: afc40008 sw a0,8(s8)
- return ((c>='a' && c<='z') || (c>='A' && c<='Z'));
-8002a3b0: 8fc20008 lw v0,8(s8)
-8002a3b4: 00000000 nop
-8002a3b8: 28420061 slti v0,v0,97
-8002a3bc: 14400006 bnez v0,8002a3d8 <isalpha+0x38>
-8002a3c0: 00000000 nop
-8002a3c4: 8fc20008 lw v0,8(s8)
-8002a3c8: 00000000 nop
-8002a3cc: 2842007b slti v0,v0,123
-8002a3d0: 1440000b bnez v0,8002a400 <isalpha+0x60>
-8002a3d4: 00000000 nop
-8002a3d8: 8fc20008 lw v0,8(s8)
-8002a3dc: 00000000 nop
-8002a3e0: 28420041 slti v0,v0,65
-8002a3e4: 14400009 bnez v0,8002a40c <isalpha+0x6c>
-8002a3e8: 00000000 nop
-8002a3ec: 8fc20008 lw v0,8(s8)
-8002a3f0: 00000000 nop
-8002a3f4: 2842005b slti v0,v0,91
-8002a3f8: 10400004 beqz v0,8002a40c <isalpha+0x6c>
-8002a3fc: 00000000 nop
-8002a400: 24020001 li v0,1
-8002a404: 10000002 b 8002a410 <isalpha+0x70>
-8002a408: 00000000 nop
-8002a40c: 00001021 move v0,zero
-}
-8002a410: 03c0e821 move sp,s8
-8002a414: 8fbe0004 lw s8,4(sp)
-8002a418: 27bd0008 addiu sp,sp,8
-8002a41c: 03e00008 jr ra
-8002a420: 00000000 nop
-
-8002a424 <isalnum>:
-
-int isalnum(int c)
-{
-8002a424: 27bdfff8 addiu sp,sp,-8
-8002a428: afbe0004 sw s8,4(sp)
-8002a42c: 03a0f021 move s8,sp
-8002a430: afc40008 sw a0,8(s8)
- return ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9'));
-8002a434: 8fc20008 lw v0,8(s8)
-8002a438: 00000000 nop
-8002a43c: 28420061 slti v0,v0,97
-8002a440: 14400006 bnez v0,8002a45c <isalnum+0x38>
-8002a444: 00000000 nop
-8002a448: 8fc20008 lw v0,8(s8)
-8002a44c: 00000000 nop
-8002a450: 2842007b slti v0,v0,123
-8002a454: 14400015 bnez v0,8002a4ac <isalnum+0x88>
-8002a458: 00000000 nop
-8002a45c: 8fc20008 lw v0,8(s8)
-8002a460: 00000000 nop
-8002a464: 28420041 slti v0,v0,65
-8002a468: 14400006 bnez v0,8002a484 <isalnum+0x60>
-8002a46c: 00000000 nop
-8002a470: 8fc20008 lw v0,8(s8)
-8002a474: 00000000 nop
-8002a478: 2842005b slti v0,v0,91
-8002a47c: 1440000b bnez v0,8002a4ac <isalnum+0x88>
-8002a480: 00000000 nop
-8002a484: 8fc20008 lw v0,8(s8)
-8002a488: 00000000 nop
-8002a48c: 28420030 slti v0,v0,48
-8002a490: 14400009 bnez v0,8002a4b8 <isalnum+0x94>
-8002a494: 00000000 nop
-8002a498: 8fc20008 lw v0,8(s8)
-8002a49c: 00000000 nop
-8002a4a0: 2842003a slti v0,v0,58
-8002a4a4: 10400004 beqz v0,8002a4b8 <isalnum+0x94>
-8002a4a8: 00000000 nop
-8002a4ac: 24020001 li v0,1
-8002a4b0: 10000002 b 8002a4bc <isalnum+0x98>
-8002a4b4: 00000000 nop
-8002a4b8: 00001021 move v0,zero
-}
-8002a4bc: 03c0e821 move sp,s8
-8002a4c0: 8fbe0004 lw s8,4(sp)
-8002a4c4: 27bd0008 addiu sp,sp,8
-8002a4c8: 03e00008 jr ra
-8002a4cc: 00000000 nop
-
-8002a4d0 <isspace>:
-
-int isspace(int c)
-{
-8002a4d0: 27bdfff8 addiu sp,sp,-8
-8002a4d4: afbe0004 sw s8,4(sp)
-8002a4d8: 03a0f021 move s8,sp
-8002a4dc: afc40008 sw a0,8(s8)
- return ((c == ' ') || (c == '\f') || (c == '\n') || (c == '\r') || (c == '\t') || (c == '\v'));
-8002a4e0: 8fc30008 lw v1,8(s8)
-8002a4e4: 24020020 li v0,32
-8002a4e8: 10620015 beq v1,v0,8002a540 <isspace+0x70>
-8002a4ec: 00000000 nop
-8002a4f0: 8fc30008 lw v1,8(s8)
-8002a4f4: 2402000c li v0,12
-8002a4f8: 10620011 beq v1,v0,8002a540 <isspace+0x70>
-8002a4fc: 00000000 nop
-8002a500: 8fc30008 lw v1,8(s8)
-8002a504: 2402000a li v0,10
-8002a508: 1062000d beq v1,v0,8002a540 <isspace+0x70>
-8002a50c: 00000000 nop
-8002a510: 8fc30008 lw v1,8(s8)
-8002a514: 2402000d li v0,13
-8002a518: 10620009 beq v1,v0,8002a540 <isspace+0x70>
-8002a51c: 00000000 nop
-8002a520: 8fc30008 lw v1,8(s8)
-8002a524: 24020009 li v0,9
-8002a528: 10620005 beq v1,v0,8002a540 <isspace+0x70>
-8002a52c: 00000000 nop
-8002a530: 8fc30008 lw v1,8(s8)
-8002a534: 2402000b li v0,11
-8002a538: 14620004 bne v1,v0,8002a54c <isspace+0x7c>
-8002a53c: 00000000 nop
-8002a540: 24020001 li v0,1
-8002a544: 10000002 b 8002a550 <isspace+0x80>
-8002a548: 00000000 nop
-8002a54c: 00001021 move v0,zero
-}
-8002a550: 03c0e821 move sp,s8
-8002a554: 8fbe0004 lw s8,4(sp)
-8002a558: 27bd0008 addiu sp,sp,8
-8002a55c: 03e00008 jr ra
-8002a560: 00000000 nop
-
-8002a564 <isprint>:
-
-int isprint(int c)
-{
-8002a564: 27bdfff8 addiu sp,sp,-8
-8002a568: afbe0004 sw s8,4(sp)
-8002a56c: 03a0f021 move s8,sp
-8002a570: afc40008 sw a0,8(s8)
- return (c >= 0x20) && (c <= 0x7E);
-8002a574: 8fc20008 lw v0,8(s8)
-8002a578: 00000000 nop
-8002a57c: 28420020 slti v0,v0,32
-8002a580: 14400009 bnez v0,8002a5a8 <isprint+0x44>
-8002a584: 00000000 nop
-8002a588: 8fc20008 lw v0,8(s8)
-8002a58c: 00000000 nop
-8002a590: 2842007f slti v0,v0,127
-8002a594: 10400004 beqz v0,8002a5a8 <isprint+0x44>
-8002a598: 00000000 nop
-8002a59c: 24020001 li v0,1
-8002a5a0: 10000002 b 8002a5ac <isprint+0x48>
-8002a5a4: 00000000 nop
-8002a5a8: 00001021 move v0,zero
-}
-8002a5ac: 03c0e821 move sp,s8
-8002a5b0: 8fbe0004 lw s8,4(sp)
-8002a5b4: 27bd0008 addiu sp,sp,8
-8002a5b8: 03e00008 jr ra
-8002a5bc: 00000000 nop
-
-8002a5c0 <isgraph>:
-
-int isgraph(int c)
-{
-8002a5c0: 27bdfff8 addiu sp,sp,-8
-8002a5c4: afbe0004 sw s8,4(sp)
-8002a5c8: 03a0f021 move s8,sp
-8002a5cc: afc40008 sw a0,8(s8)
- return (c > 0x20) && (c <= 0x7E);
-8002a5d0: 8fc20008 lw v0,8(s8)
-8002a5d4: 00000000 nop
-8002a5d8: 28420021 slti v0,v0,33
-8002a5dc: 14400009 bnez v0,8002a604 <isgraph+0x44>
-8002a5e0: 00000000 nop
-8002a5e4: 8fc20008 lw v0,8(s8)
-8002a5e8: 00000000 nop
-8002a5ec: 2842007f slti v0,v0,127
-8002a5f0: 10400004 beqz v0,8002a604 <isgraph+0x44>
-8002a5f4: 00000000 nop
-8002a5f8: 24020001 li v0,1
-8002a5fc: 10000002 b 8002a608 <isgraph+0x48>
-8002a600: 00000000 nop
-8002a604: 00001021 move v0,zero
-}
-8002a608: 03c0e821 move sp,s8
-8002a60c: 8fbe0004 lw s8,4(sp)
-8002a610: 27bd0008 addiu sp,sp,8
-8002a614: 03e00008 jr ra
-8002a618: 00000000 nop
-
-8002a61c <iscntrl>:
-
-int iscntrl(int c)
-{
-8002a61c: 27bdfff8 addiu sp,sp,-8
-8002a620: afbe0004 sw s8,4(sp)
-8002a624: 03a0f021 move s8,sp
-8002a628: afc40008 sw a0,8(s8)
- return (c < 0x20);
-8002a62c: 8fc20008 lw v0,8(s8)
-8002a630: 00000000 nop
-8002a634: 28420020 slti v0,v0,32
-8002a638: 304200ff andi v0,v0,0xff
-}
-8002a63c: 03c0e821 move sp,s8
-8002a640: 8fbe0004 lw s8,4(sp)
-8002a644: 27bd0008 addiu sp,sp,8
-8002a648: 03e00008 jr ra
-8002a64c: 00000000 nop
-
-8002a650 <isblank>:
-
-int isblank(int c)
-{
-8002a650: 27bdfff8 addiu sp,sp,-8
-8002a654: afbe0004 sw s8,4(sp)
-8002a658: 03a0f021 move s8,sp
-8002a65c: afc40008 sw a0,8(s8)
- return ((c == ' ') || (c == '\t'));
-8002a660: 8fc30008 lw v1,8(s8)
-8002a664: 24020020 li v0,32
-8002a668: 10620005 beq v1,v0,8002a680 <isblank+0x30>
-8002a66c: 00000000 nop
-8002a670: 8fc30008 lw v1,8(s8)
-8002a674: 24020009 li v0,9
-8002a678: 14620004 bne v1,v0,8002a68c <isblank+0x3c>
-8002a67c: 00000000 nop
-8002a680: 24020001 li v0,1
-8002a684: 10000002 b 8002a690 <isblank+0x40>
-8002a688: 00000000 nop
-8002a68c: 00001021 move v0,zero
-}
-8002a690: 03c0e821 move sp,s8
-8002a694: 8fbe0004 lw s8,4(sp)
-8002a698: 27bd0008 addiu sp,sp,8
-8002a69c: 03e00008 jr ra
-8002a6a0: 00000000 nop
-
-8002a6a4 <redirect_stdio_to_sio>:
-
-void redirect_stdio_to_sio(void)
-{
-8002a6a4: 27bdfff8 addiu sp,sp,-8
-8002a6a8: afbe0004 sw s8,4(sp)
-8002a6ac: 03a0f021 move s8,sp
- __stdio_direction = STDIO_DIRECTION_SIO;
-8002a6b0: 3c028007 lui v0,0x8007
-8002a6b4: 24030001 li v1,1
-8002a6b8: ac431cc0 sw v1,7360(v0)
-}
-8002a6bc: 00000000 nop
-8002a6c0: 03c0e821 move sp,s8
-8002a6c4: 8fbe0004 lw s8,4(sp)
-8002a6c8: 27bd0008 addiu sp,sp,8
-8002a6cc: 03e00008 jr ra
-8002a6d0: 00000000 nop
-
-8002a6d4 <sio_stdio_mapcr>:
-
-void sio_stdio_mapcr(unsigned int setting)
-{
-8002a6d4: 27bdfff8 addiu sp,sp,-8
-8002a6d8: afbe0004 sw s8,4(sp)
-8002a6dc: 03a0f021 move s8,sp
-8002a6e0: afc40008 sw a0,8(s8)
- __sio_cr_mapped = setting;
-8002a6e4: 3c028007 lui v0,0x8007
-8002a6e8: 8fc30008 lw v1,8(s8)
-8002a6ec: 00000000 nop
-8002a6f0: ac431cc4 sw v1,7364(v0)
-}
-8002a6f4: 00000000 nop
-8002a6f8: 03c0e821 move sp,s8
-8002a6fc: 8fbe0004 lw s8,4(sp)
-8002a700: 27bd0008 addiu sp,sp,8
-8002a704: 03e00008 jr ra
-8002a708: 00000000 nop
-
-8002a70c <sio_putchar>:
-
-int sio_putchar(int c)
-{
-8002a70c: 27bdffe8 addiu sp,sp,-24
-8002a710: afbf0014 sw ra,20(sp)
-8002a714: afbe0010 sw s8,16(sp)
-8002a718: 03a0f021 move s8,sp
-8002a71c: afc40018 sw a0,24(s8)
- if(c == '\n' && __sio_cr_mapped)
-8002a720: 8fc30018 lw v1,24(s8)
-8002a724: 2402000a li v0,10
-8002a728: 14620009 bne v1,v0,8002a750 <sio_putchar+0x44>
-8002a72c: 00000000 nop
-8002a730: 3c028007 lui v0,0x8007
-8002a734: 8c421cc4 lw v0,7364(v0)
-8002a738: 00000000 nop
-8002a73c: 10400004 beqz v0,8002a750 <sio_putchar+0x44>
-8002a740: 00000000 nop
- sio_putchar('\r');
-8002a744: 2404000d li a0,13
-8002a748: 0c00a9c3 jal 8002a70c <sio_putchar>
-8002a74c: 00000000 nop
-
- while(!SIOCheckOutBuffer());
-8002a750: 00000000 nop
-8002a754: 0c00cfd4 jal 80033f50 <SIOCheckOutBuffer>
-8002a758: 00000000 nop
-8002a75c: 1040fffd beqz v0,8002a754 <sio_putchar+0x48>
-8002a760: 00000000 nop
-
- SIOSendByte(c);
-8002a764: 8fc20018 lw v0,24(s8)
-8002a768: 00000000 nop
-8002a76c: 304200ff andi v0,v0,0xff
-8002a770: 00402021 move a0,v0
-8002a774: 0c00cfb4 jal 80033ed0 <SIOSendByte>
-8002a778: 00000000 nop
-
- return c;
-8002a77c: 8fc20018 lw v0,24(s8)
-}
-8002a780: 03c0e821 move sp,s8
-8002a784: 8fbf0014 lw ra,20(sp)
-8002a788: 8fbe0010 lw s8,16(sp)
-8002a78c: 27bd0018 addiu sp,sp,24
-8002a790: 03e00008 jr ra
-8002a794: 00000000 nop
-
-8002a798 <sio_puts>:
-
-int sio_puts(const char *str)
-{
-8002a798: 27bdffe8 addiu sp,sp,-24
-8002a79c: afbf0014 sw ra,20(sp)
-8002a7a0: afbe0010 sw s8,16(sp)
-8002a7a4: 03a0f021 move s8,sp
-8002a7a8: afc40018 sw a0,24(s8)
- while(*str)
-8002a7ac: 1000000a b 8002a7d8 <sio_puts+0x40>
-8002a7b0: 00000000 nop
- sio_putchar(*(str++));
-8002a7b4: 8fc20018 lw v0,24(s8)
-8002a7b8: 00000000 nop
-8002a7bc: 24430001 addiu v1,v0,1
-8002a7c0: afc30018 sw v1,24(s8)
-8002a7c4: 80420000 lb v0,0(v0)
-8002a7c8: 00000000 nop
-8002a7cc: 00402021 move a0,v0
-8002a7d0: 0c00a9c3 jal 8002a70c <sio_putchar>
-8002a7d4: 00000000 nop
- return c;
-}
-
-int sio_puts(const char *str)
-{
- while(*str)
-8002a7d8: 8fc20018 lw v0,24(s8)
-8002a7dc: 00000000 nop
-8002a7e0: 80420000 lb v0,0(v0)
-8002a7e4: 00000000 nop
-8002a7e8: 1440fff2 bnez v0,8002a7b4 <sio_puts+0x1c>
-8002a7ec: 00000000 nop
- sio_putchar(*(str++));
-
- sio_putchar('\n');
-8002a7f0: 2404000a li a0,10
-8002a7f4: 0c00a9c3 jal 8002a70c <sio_putchar>
-8002a7f8: 00000000 nop
-
- return 1;
-8002a7fc: 24020001 li v0,1
-}
-8002a800: 03c0e821 move sp,s8
-8002a804: 8fbf0014 lw ra,20(sp)
-8002a808: 8fbe0010 lw s8,16(sp)
-8002a80c: 27bd0018 addiu sp,sp,24
-8002a810: 03e00008 jr ra
-8002a814: 00000000 nop
-
-8002a818 <putchar>:
-
-extern int bios_putchar(int c);
-extern int bios_puts(const char *str);
-
-int putchar(int c)
-{
-8002a818: 27bdffe8 addiu sp,sp,-24
-8002a81c: afbf0014 sw ra,20(sp)
-8002a820: afbe0010 sw s8,16(sp)
-8002a824: 03a0f021 move s8,sp
-8002a828: afc40018 sw a0,24(s8)
- switch(__stdio_direction)
-8002a82c: 3c028007 lui v0,0x8007
-8002a830: 8c421cc0 lw v0,7360(v0)
-8002a834: 00000000 nop
-8002a838: 10400006 beqz v0,8002a854 <putchar+0x3c>
-8002a83c: 00000000 nop
-8002a840: 24030001 li v1,1
-8002a844: 10430008 beq v0,v1,8002a868 <putchar+0x50>
-8002a848: 00000000 nop
-8002a84c: 1000000b b 8002a87c <putchar+0x64>
-8002a850: 00000000 nop
- {
- case STDIO_DIRECTION_BIOS:
- return bios_putchar(c);
-8002a854: 8fc40018 lw a0,24(s8)
-8002a858: 0c00ed87 jal 8003b61c <bios_putchar>
-8002a85c: 00000000 nop
-8002a860: 10000007 b 8002a880 <putchar+0x68>
-8002a864: 00000000 nop
- break;
- case STDIO_DIRECTION_SIO:
- return sio_putchar(c);
-8002a868: 8fc40018 lw a0,24(s8)
-8002a86c: 0c00a9c3 jal 8002a70c <sio_putchar>
-8002a870: 00000000 nop
-8002a874: 10000002 b 8002a880 <putchar+0x68>
-8002a878: 00000000 nop
- break;
- }
-
- return -1;
-8002a87c: 2402ffff li v0,-1
-}
-8002a880: 03c0e821 move sp,s8
-8002a884: 8fbf0014 lw ra,20(sp)
-8002a888: 8fbe0010 lw s8,16(sp)
-8002a88c: 27bd0018 addiu sp,sp,24
-8002a890: 03e00008 jr ra
-8002a894: 00000000 nop
-
-8002a898 <puts>:
-
-int puts(const char *str)
-{
-8002a898: 27bdffe8 addiu sp,sp,-24
-8002a89c: afbf0014 sw ra,20(sp)
-8002a8a0: afbe0010 sw s8,16(sp)
-8002a8a4: 03a0f021 move s8,sp
-8002a8a8: afc40018 sw a0,24(s8)
- switch(__stdio_direction)
-8002a8ac: 3c028007 lui v0,0x8007
-8002a8b0: 8c421cc0 lw v0,7360(v0)
-8002a8b4: 00000000 nop
-8002a8b8: 10400006 beqz v0,8002a8d4 <puts+0x3c>
-8002a8bc: 00000000 nop
-8002a8c0: 24030001 li v1,1
-8002a8c4: 10430008 beq v0,v1,8002a8e8 <puts+0x50>
-8002a8c8: 00000000 nop
-8002a8cc: 1000000b b 8002a8fc <puts+0x64>
-8002a8d0: 00000000 nop
- {
- case STDIO_DIRECTION_BIOS:
- return bios_puts(str);
-8002a8d4: 8fc40018 lw a0,24(s8)
-8002a8d8: 0c00ed8b jal 8003b62c <bios_puts>
-8002a8dc: 00000000 nop
-8002a8e0: 10000007 b 8002a900 <puts+0x68>
-8002a8e4: 00000000 nop
- break;
- case STDIO_DIRECTION_SIO:
- return sio_puts(str);
-8002a8e8: 8fc40018 lw a0,24(s8)
-8002a8ec: 0c00a9e6 jal 8002a798 <sio_puts>
-8002a8f0: 00000000 nop
-8002a8f4: 10000002 b 8002a900 <puts+0x68>
-8002a8f8: 00000000 nop
- break;
- }
-
- return -1;
-8002a8fc: 2402ffff li v0,-1
-}
-8002a900: 03c0e821 move sp,s8
-8002a904: 8fbf0014 lw ra,20(sp)
-8002a908: 8fbe0010 lw s8,16(sp)
-8002a90c: 27bd0018 addiu sp,sp,24
-8002a910: 03e00008 jr ra
-8002a914: 00000000 nop
-
-8002a918 <CdSendCommand>:
- 0xFF, // ??? 1D
- 1, // ReadToc 1E
-};
-
-void CdSendCommand(int cmd, int num, ...)
-{
-8002a918: 27bdfff0 addiu sp,sp,-16
-8002a91c: afbe000c sw s8,12(sp)
-8002a920: 03a0f021 move s8,sp
-8002a924: afc40010 sw a0,16(s8)
-8002a928: afc50014 sw a1,20(s8)
-8002a92c: afc60018 sw a2,24(s8)
-8002a930: afc7001c sw a3,28(s8)
- int x;
- va_list ap;
- va_start(ap, num);
-8002a934: 27c20018 addiu v0,s8,24
-8002a938: afc20004 sw v0,4(s8)
-// while(CDREG(0) & 128);
-
-// Flush old interrupts
-// If this is not done, some events (like the opening of the shell) will hang the CD controller.
-
- CDREG(0) = 1;
-8002a93c: 3c021f80 lui v0,0x1f80
-8002a940: 34421800 ori v0,v0,0x1800
-8002a944: 24030001 li v1,1
-8002a948: a0430000 sb v1,0(v0)
- CDREG(3) = 7;
-8002a94c: 3c021f80 lui v0,0x1f80
-8002a950: 34421803 ori v0,v0,0x1803
-8002a954: 24030007 li v1,7
-8002a958: a0430000 sb v1,0(v0)
-
-// Send parameters
-
- CDREG(0) = 0;
-8002a95c: 3c021f80 lui v0,0x1f80
-8002a960: 34421800 ori v0,v0,0x1800
-8002a964: a0400000 sb zero,0(v0)
-
- while(num)
-8002a968: 1000000f b 8002a9a8 <CdSendCommand+0x90>
-8002a96c: 00000000 nop
- {
- CDREG(2) = (unsigned char)va_arg(ap, unsigned int);
-8002a970: 3c021f80 lui v0,0x1f80
-8002a974: 34431802 ori v1,v0,0x1802
-8002a978: 8fc20004 lw v0,4(s8)
-8002a97c: 00000000 nop
-8002a980: 24440004 addiu a0,v0,4
-8002a984: afc40004 sw a0,4(s8)
-8002a988: 8c420000 lw v0,0(v0)
-8002a98c: 00000000 nop
-8002a990: 304200ff andi v0,v0,0xff
-8002a994: a0620000 sb v0,0(v1)
- num--;
-8002a998: 8fc20014 lw v0,20(s8)
-8002a99c: 00000000 nop
-8002a9a0: 2442ffff addiu v0,v0,-1
-8002a9a4: afc20014 sw v0,20(s8)
-
-// Send parameters
-
- CDREG(0) = 0;
-
- while(num)
-8002a9a8: 8fc20014 lw v0,20(s8)
-8002a9ac: 00000000 nop
-8002a9b0: 1440ffef bnez v0,8002a970 <CdSendCommand+0x58>
-8002a9b4: 00000000 nop
- num--;
- }
-
-// Send command
-
- CDREG(0) = 0;
-8002a9b8: 3c021f80 lui v0,0x1f80
-8002a9bc: 34421800 ori v0,v0,0x1800
-8002a9c0: a0400000 sb zero,0(v0)
- CDREG(1) = cmd;
-8002a9c4: 3c021f80 lui v0,0x1f80
-8002a9c8: 34421801 ori v0,v0,0x1801
-8002a9cc: 8fc30010 lw v1,16(s8)
-8002a9d0: 00000000 nop
-8002a9d4: 306300ff andi v1,v1,0xff
-8002a9d8: a0430000 sb v1,0(v0)
-
-// Depending on the number of INTs we expect for a command,
-// we wait for an INT to occur, we store the response data returned,
-// and we flush the INT.
- for(x = 0; x < (cdrom_command_type[cmd] + 1); x++)
-8002a9dc: afc00000 sw zero,0(s8)
-8002a9e0: 10000022 b 8002aa6c <CdSendCommand+0x154>
-8002a9e4: 00000000 nop
- {
- CDREG(0) = 1;
-8002a9e8: 3c021f80 lui v0,0x1f80
-8002a9ec: 34421800 ori v0,v0,0x1800
-8002a9f0: 24030001 li v1,1
-8002a9f4: a0430000 sb v1,0(v0)
- // PROBLEMATIC INSTRUCTION - CHECK!
- while((CDREG(3) & 7) == 0);
-8002a9f8: 00000000 nop
-8002a9fc: 3c021f80 lui v0,0x1f80
-8002aa00: 34421803 ori v0,v0,0x1803
-8002aa04: 90420000 lbu v0,0(v0)
-8002aa08: 00000000 nop
-8002aa0c: 30420007 andi v0,v0,0x7
-8002aa10: 1040fffa beqz v0,8002a9fc <CdSendCommand+0xe4>
-8002aa14: 00000000 nop
-
- cdrom_command_stat[x] = CDREG(1);
-8002aa18: 3c021f80 lui v0,0x1f80
-8002aa1c: 34421801 ori v0,v0,0x1801
-8002aa20: 90430000 lbu v1,0(v0)
-8002aa24: 3c028007 lui v0,0x8007
-8002aa28: 24441d2c addiu a0,v0,7468
-8002aa2c: 8fc20000 lw v0,0(s8)
-8002aa30: 00000000 nop
-8002aa34: 00821021 addu v0,a0,v0
-8002aa38: a0430000 sb v1,0(v0)
-
- CDREG(0) = 1;
-8002aa3c: 3c021f80 lui v0,0x1f80
-8002aa40: 34421800 ori v0,v0,0x1800
-8002aa44: 24030001 li v1,1
-8002aa48: a0430000 sb v1,0(v0)
- CDREG(3) = 7;
-8002aa4c: 3c021f80 lui v0,0x1f80
-8002aa50: 34421803 ori v0,v0,0x1803
-8002aa54: 24030007 li v1,7
-8002aa58: a0430000 sb v1,0(v0)
- CDREG(1) = cmd;
-
-// Depending on the number of INTs we expect for a command,
-// we wait for an INT to occur, we store the response data returned,
-// and we flush the INT.
- for(x = 0; x < (cdrom_command_type[cmd] + 1); x++)
-8002aa5c: 8fc20000 lw v0,0(s8)
-8002aa60: 00000000 nop
-8002aa64: 24420001 addiu v0,v0,1
-8002aa68: afc20000 sw v0,0(s8)
-8002aa6c: 3c028004 lui v0,0x8004
-8002aa70: 2443f97c addiu v1,v0,-1668
-8002aa74: 8fc20010 lw v0,16(s8)
-8002aa78: 00000000 nop
-8002aa7c: 00621021 addu v0,v1,v0
-8002aa80: 90420000 lbu v0,0(v0)
-8002aa84: 00000000 nop
-8002aa88: 24430001 addiu v1,v0,1
-8002aa8c: 8fc20000 lw v0,0(s8)
-8002aa90: 00000000 nop
-8002aa94: 0043102a slt v0,v0,v1
-8002aa98: 1440ffd3 bnez v0,8002a9e8 <CdSendCommand+0xd0>
-8002aa9c: 00000000 nop
- CDREG(0) = 1;
- CDREG(3) = 7;
- }
-
-// Store ID number of last executed command (this)
- cdrom_last_command = cmd;
-8002aaa0: 8fc20010 lw v0,16(s8)
-8002aaa4: 00000000 nop
-8002aaa8: 304300ff andi v1,v0,0xff
-8002aaac: 3c028007 lui v0,0x8007
-8002aab0: a0431d2e sb v1,7470(v0)
-
- va_end(ap);
-}
-8002aab4: 00000000 nop
-8002aab8: 03c0e821 move sp,s8
-8002aabc: 8fbe000c lw s8,12(sp)
-8002aac0: 27bd0010 addiu sp,sp,16
-8002aac4: 03e00008 jr ra
-8002aac8: 00000000 nop
-
-8002aacc <CdReadResults>:
-
-int CdReadResults(unsigned char *out, int max)
-{
-8002aacc: 27bdffe8 addiu sp,sp,-24
-8002aad0: afbe0014 sw s8,20(sp)
-8002aad4: 03a0f021 move s8,sp
-8002aad8: afc40018 sw a0,24(s8)
-8002aadc: afc5001c sw a1,28(s8)
- int x;
- unsigned char *outo = out;
-8002aae0: 8fc20018 lw v0,24(s8)
-8002aae4: 00000000 nop
-8002aae8: afc20004 sw v0,4(s8)
- unsigned char b;
-
- for(x = 0; x < (cdrom_command_type[cdrom_last_command] + 1); x++)
-8002aaec: afc00000 sw zero,0(s8)
-8002aaf0: 1000001a b 8002ab5c <CdReadResults+0x90>
-8002aaf4: 00000000 nop
- {
- if(max > 0)
-8002aaf8: 8fc2001c lw v0,28(s8)
-8002aafc: 00000000 nop
-8002ab00: 18400012 blez v0,8002ab4c <CdReadResults+0x80>
-8002ab04: 00000000 nop
- {
- *(out++) = cdrom_command_stat[x];
-8002ab08: 8fc20018 lw v0,24(s8)
-8002ab0c: 00000000 nop
-8002ab10: 24430001 addiu v1,v0,1
-8002ab14: afc30018 sw v1,24(s8)
-8002ab18: 3c038007 lui v1,0x8007
-8002ab1c: 24641d2c addiu a0,v1,7468
-8002ab20: 8fc30000 lw v1,0(s8)
-8002ab24: 00000000 nop
-8002ab28: 00831821 addu v1,a0,v1
-8002ab2c: 90630000 lbu v1,0(v1)
-8002ab30: 00000000 nop
-8002ab34: 306300ff andi v1,v1,0xff
-8002ab38: a0430000 sb v1,0(v0)
- max--;
-8002ab3c: 8fc2001c lw v0,28(s8)
-8002ab40: 00000000 nop
-8002ab44: 2442ffff addiu v0,v0,-1
-8002ab48: afc2001c sw v0,28(s8)
-{
- int x;
- unsigned char *outo = out;
- unsigned char b;
-
- for(x = 0; x < (cdrom_command_type[cdrom_last_command] + 1); x++)
-8002ab4c: 8fc20000 lw v0,0(s8)
-8002ab50: 00000000 nop
-8002ab54: 24420001 addiu v0,v0,1
-8002ab58: afc20000 sw v0,0(s8)
-8002ab5c: 3c028007 lui v0,0x8007
-8002ab60: 90421d2e lbu v0,7470(v0)
-8002ab64: 00000000 nop
-8002ab68: 304200ff andi v0,v0,0xff
-8002ab6c: 00401821 move v1,v0
-8002ab70: 3c028004 lui v0,0x8004
-8002ab74: 2442f97c addiu v0,v0,-1668
-8002ab78: 00621021 addu v0,v1,v0
-8002ab7c: 90420000 lbu v0,0(v0)
-8002ab80: 00000000 nop
-8002ab84: 24430001 addiu v1,v0,1
-8002ab88: 8fc20000 lw v0,0(s8)
-8002ab8c: 00000000 nop
-8002ab90: 0043102a slt v0,v0,v1
-8002ab94: 1440ffd8 bnez v0,8002aaf8 <CdReadResults+0x2c>
-8002ab98: 00000000 nop
- *(out++) = cdrom_command_stat[x];
- max--;
- }
- }
-
- CDREG(0) = 1;
-8002ab9c: 3c021f80 lui v0,0x1f80
-8002aba0: 34421800 ori v0,v0,0x1800
-8002aba4: 24030001 li v1,1
-8002aba8: a0430000 sb v1,0(v0)
-
- while(CDREG(0) & 0x20)
-8002abac: 10000015 b 8002ac04 <CdReadResults+0x138>
-8002abb0: 00000000 nop
- {
- b = CDREG(1);
-8002abb4: 3c021f80 lui v0,0x1f80
-8002abb8: 34421801 ori v0,v0,0x1801
-8002abbc: 90420000 lbu v0,0(v0)
-8002abc0: 00000000 nop
-8002abc4: a3c20008 sb v0,8(s8)
- if(max>0)
-8002abc8: 8fc2001c lw v0,28(s8)
-8002abcc: 00000000 nop
-8002abd0: 1840000c blez v0,8002ac04 <CdReadResults+0x138>
-8002abd4: 00000000 nop
- {
- *(out++) = b;
-8002abd8: 8fc20018 lw v0,24(s8)
-8002abdc: 00000000 nop
-8002abe0: 24430001 addiu v1,v0,1
-8002abe4: afc30018 sw v1,24(s8)
-8002abe8: 93c30008 lbu v1,8(s8)
-8002abec: 00000000 nop
-8002abf0: a0430000 sb v1,0(v0)
- max--;
-8002abf4: 8fc2001c lw v0,28(s8)
-8002abf8: 00000000 nop
-8002abfc: 2442ffff addiu v0,v0,-1
-8002ac00: afc2001c sw v0,28(s8)
- }
- }
-
- CDREG(0) = 1;
-
- while(CDREG(0) & 0x20)
-8002ac04: 3c021f80 lui v0,0x1f80
-8002ac08: 34421800 ori v0,v0,0x1800
-8002ac0c: 90420000 lbu v0,0(v0)
-8002ac10: 00000000 nop
-8002ac14: 30420020 andi v0,v0,0x20
-8002ac18: 1440ffe6 bnez v0,8002abb4 <CdReadResults+0xe8>
-8002ac1c: 00000000 nop
- *(out++) = b;
- max--;
- }
- }
-
- return (out-outo);
-8002ac20: 8fc30018 lw v1,24(s8)
-8002ac24: 8fc20004 lw v0,4(s8)
-8002ac28: 00000000 nop
-8002ac2c: 00621023 subu v0,v1,v0
-}
-8002ac30: 03c0e821 move sp,s8
-8002ac34: 8fbe0014 lw s8,20(sp)
-8002ac38: 27bd0018 addiu sp,sp,24
-8002ac3c: 03e00008 jr ra
-8002ac40: 00000000 nop
-
-8002ac44 <_internal_cdromlib_callback>:
-
-void _internal_cdromlib_callback()
-{
-8002ac44: 27bdffe8 addiu sp,sp,-24
-8002ac48: afbf0014 sw ra,20(sp)
-8002ac4c: afbe0010 sw s8,16(sp)
-8002ac50: 03a0f021 move s8,sp
- printf("Call from CD-ROM interrupt!\n");
-8002ac54: 3c028004 lui v0,0x8004
-8002ac58: 2444f99c addiu a0,v0,-1636
-8002ac5c: 0c00ed8f jal 8003b63c <printf>
-8002ac60: 00000000 nop
- printf("Status: %d\n", IPENDING);
-8002ac64: 3c021f80 lui v0,0x1f80
-8002ac68: 34421070 ori v0,v0,0x1070
-8002ac6c: 8c420000 lw v0,0(v0)
-8002ac70: 00000000 nop
-8002ac74: 00402821 move a1,v0
-8002ac78: 3c028004 lui v0,0x8004
-8002ac7c: 2444f9bc addiu a0,v0,-1604
-8002ac80: 0c00ed8f jal 8003b63c <printf>
-8002ac84: 00000000 nop
- IPENDING &= ~(1<<2);
-8002ac88: 3c021f80 lui v0,0x1f80
-8002ac8c: 34421070 ori v0,v0,0x1070
-8002ac90: 3c031f80 lui v1,0x1f80
-8002ac94: 34631070 ori v1,v1,0x1070
-8002ac98: 8c640000 lw a0,0(v1)
-8002ac9c: 2403fffb li v1,-5
-8002aca0: 00831824 and v1,a0,v1
-8002aca4: ac430000 sw v1,0(v0)
- CDREG(3) = 7;
- i = CDREG(1);
- cdrom_command_stat[1] = i;
-
- //printf("cdrom_command_done = %d\n", cdrom_command_done);*/
-}
-8002aca8: 00000000 nop
-8002acac: 03c0e821 move sp,s8
-8002acb0: 8fbf0014 lw ra,20(sp)
-8002acb4: 8fbe0010 lw s8,16(sp)
-8002acb8: 27bd0018 addiu sp,sp,24
-8002acbc: 03e00008 jr ra
-8002acc0: 00000000 nop
-
-8002acc4 <_internal_cdromlib_init>:
-
-void _internal_cdromlib_init()
-{
-8002acc4: 27bdffe8 addiu sp,sp,-24
-8002acc8: afbf0014 sw ra,20(sp)
-8002accc: afbe0010 sw s8,16(sp)
-8002acd0: 03a0f021 move s8,sp
- printf("Starting CDROMlib...\n");
-8002acd4: 3c028004 lui v0,0x8004
-8002acd8: 2444f9c8 addiu a0,v0,-1592
-8002acdc: 0c00ed8f jal 8003b63c <printf>
-8002ace0: 00000000 nop
-
- EnterCriticalSection(); // Disable IRQs
-8002ace4: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-8002ace8: 00000000 nop
-
- SysEnqIntRP(0, cdrom_queue_buf);
-8002acec: 3c028004 lui v0,0x8004
-8002acf0: 2445153c addiu a1,v0,5436
-8002acf4: 00002021 move a0,zero
-8002acf8: 0c00ee10 jal 8003b840 <SysEnqIntRP>
-8002acfc: 00000000 nop
-
- IMASK|=4;
-8002ad00: 3c021f80 lui v0,0x1f80
-8002ad04: 34421074 ori v0,v0,0x1074
-8002ad08: 3c031f80 lui v1,0x1f80
-8002ad0c: 34631074 ori v1,v1,0x1074
-8002ad10: 8c630000 lw v1,0(v1)
-8002ad14: 00000000 nop
-8002ad18: 34630004 ori v1,v1,0x4
-8002ad1c: ac430000 sw v1,0(v0)
-
- cdrom_handler_callback = _internal_cdromlib_callback;
-8002ad20: 3c028007 lui v0,0x8007
-8002ad24: 3c038003 lui v1,0x8003
-8002ad28: 2463ac44 addiu v1,v1,-21436
-8002ad2c: ac431d34 sw v1,7476(v0)
-
- ExitCriticalSection(); // Enable IRQs
-8002ad30: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-8002ad34: 00000000 nop
-}
-8002ad38: 00000000 nop
-8002ad3c: 03c0e821 move sp,s8
-8002ad40: 8fbf0014 lw ra,20(sp)
-8002ad44: 8fbe0010 lw s8,16(sp)
-8002ad48: 27bd0018 addiu sp,sp,24
-8002ad4c: 03e00008 jr ra
-8002ad50: 00000000 nop
-
-8002ad54 <CdGetStatus>:
-
-int CdGetStatus()
-{
-8002ad54: 27bdffe0 addiu sp,sp,-32
-8002ad58: afbf001c sw ra,28(sp)
-8002ad5c: afbe0018 sw s8,24(sp)
-8002ad60: 03a0f021 move s8,sp
- unsigned char out;
-
- CdSendCommand(CdlGetstat, 0);
-8002ad64: 00002821 move a1,zero
-8002ad68: 24040001 li a0,1
-8002ad6c: 0c00aa46 jal 8002a918 <CdSendCommand>
-8002ad70: 00000000 nop
- CdReadResults(&out, 1);
-8002ad74: 24050001 li a1,1
-8002ad78: 27c20010 addiu v0,s8,16
-8002ad7c: 00402021 move a0,v0
-8002ad80: 0c00aab3 jal 8002aacc <CdReadResults>
-8002ad84: 00000000 nop
-
- return out;
-8002ad88: 93c20010 lbu v0,16(s8)
-}
-8002ad8c: 03c0e821 move sp,s8
-8002ad90: 8fbf001c lw ra,28(sp)
-8002ad94: 8fbe0018 lw s8,24(sp)
-8002ad98: 27bd0020 addiu sp,sp,32
-8002ad9c: 03e00008 jr ra
-8002ada0: 00000000 nop
-
-8002ada4 <CdPlayTrack>:
-
-int CdPlayTrack(unsigned int track)
-{
-8002ada4: 27bdffe8 addiu sp,sp,-24
-8002ada8: afbf0014 sw ra,20(sp)
-8002adac: afbe0010 sw s8,16(sp)
-8002adb0: 03a0f021 move s8,sp
-8002adb4: afc40018 sw a0,24(s8)
- //while(CdGetStatus() & CDSTATUS_SEEK);
- CdSendCommand(CdlSetmode, 1, 0x20);
-8002adb8: 24060020 li a2,32
-8002adbc: 24050001 li a1,1
-8002adc0: 2404000e li a0,14
-8002adc4: 0c00aa46 jal 8002a918 <CdSendCommand>
-8002adc8: 00000000 nop
- CdSendCommand(CdlPlay, 1, ((track/10)<<4)|(track%10));
-8002adcc: 8fc30018 lw v1,24(s8)
-8002add0: 2402000a li v0,10
-8002add4: 14400002 bnez v0,8002ade0 <CdPlayTrack+0x3c>
-8002add8: 0062001b divu zero,v1,v0
-8002addc: 0007000d break 0x7
-8002ade0: 00001010 mfhi v0
-8002ade4: 00001012 mflo v0
-8002ade8: 00021100 sll v0,v0,0x4
-8002adec: 8fc40018 lw a0,24(s8)
-8002adf0: 2403000a li v1,10
-8002adf4: 14600002 bnez v1,8002ae00 <CdPlayTrack+0x5c>
-8002adf8: 0083001b divu zero,a0,v1
-8002adfc: 0007000d break 0x7
-8002ae00: 00001810 mfhi v1
-8002ae04: 00431025 or v0,v0,v1
-8002ae08: 00403021 move a2,v0
-8002ae0c: 24050001 li a1,1
-8002ae10: 24040003 li a0,3
-8002ae14: 0c00aa46 jal 8002a918 <CdSendCommand>
-8002ae18: 00000000 nop
-
- return 1;
-8002ae1c: 24020001 li v0,1
-}
-8002ae20: 03c0e821 move sp,s8
-8002ae24: 8fbf0014 lw ra,20(sp)
-8002ae28: 8fbe0010 lw s8,16(sp)
-8002ae2c: 27bd0018 addiu sp,sp,24
-8002ae30: 03e00008 jr ra
-8002ae34: 00000000 nop
-
-8002ae38 <CdRamRead>:
-
-unsigned char CdRamRead(unsigned short addr)
-{
-8002ae38: 27bdffe0 addiu sp,sp,-32
-8002ae3c: afbf001c sw ra,28(sp)
-8002ae40: afbe0018 sw s8,24(sp)
-8002ae44: 03a0f021 move s8,sp
-8002ae48: 00801021 move v0,a0
-8002ae4c: a7c20020 sh v0,32(s8)
- unsigned char b;
- addr &= 0x3ff;
-8002ae50: 97c20020 lhu v0,32(s8)
-8002ae54: 00000000 nop
-8002ae58: 304203ff andi v0,v0,0x3ff
-8002ae5c: a7c20020 sh v0,32(s8)
-
- CdSendCommand(0x19, 0x60, addr&0xff, addr >> 8);
-8002ae60: 97c20020 lhu v0,32(s8)
-8002ae64: 00000000 nop
-8002ae68: 304300ff andi v1,v0,0xff
-8002ae6c: 97c20020 lhu v0,32(s8)
-8002ae70: 00000000 nop
-8002ae74: 00021202 srl v0,v0,0x8
-8002ae78: 3042ffff andi v0,v0,0xffff
-8002ae7c: 00403821 move a3,v0
-8002ae80: 00603021 move a2,v1
-8002ae84: 24050060 li a1,96
-8002ae88: 24040019 li a0,25
-8002ae8c: 0c00aa46 jal 8002a918 <CdSendCommand>
-8002ae90: 00000000 nop
- CdReadResults(&b, 1);
-8002ae94: 24050001 li a1,1
-8002ae98: 27c20010 addiu v0,s8,16
-8002ae9c: 00402021 move a0,v0
-8002aea0: 0c00aab3 jal 8002aacc <CdReadResults>
-8002aea4: 00000000 nop
-
- return b;
-8002aea8: 93c20010 lbu v0,16(s8)
-}
-8002aeac: 03c0e821 move sp,s8
-8002aeb0: 8fbf001c lw ra,28(sp)
-8002aeb4: 8fbe0018 lw s8,24(sp)
-8002aeb8: 27bd0020 addiu sp,sp,32
-8002aebc: 03e00008 jr ra
-8002aec0: 00000000 nop
-
-8002aec4 <malloc_setup>:
-// RAM memory map on the PSX
-// 0x80000000 - 0x8000FFFF RAM used by the BIOS
-// 0x80010000 - 0x801FFFFF Program memory
-
-void malloc_setup()
-{
-8002aec4: 27bdfff0 addiu sp,sp,-16
-8002aec8: afbe000c sw s8,12(sp)
-8002aecc: 03a0f021 move s8,sp
- int x;
-
- dprintf("malloc setup.\n");
-
- first_free_page = (unsigned int) __bss_end;
-8002aed0: 3c028007 lui v0,0x8007
-8002aed4: 24431bf8 addiu v1,v0,7160
-8002aed8: 3c028007 lui v0,0x8007
-8002aedc: ac431d38 sw v1,7480(v0)
- first_free_page-= 0x80000000;
-8002aee0: 3c028007 lui v0,0x8007
-8002aee4: 8c431d38 lw v1,7480(v0)
-8002aee8: 3c028000 lui v0,0x8000
-8002aeec: 00621821 addu v1,v1,v0
-8002aef0: 3c028007 lui v0,0x8007
-8002aef4: ac431d38 sw v1,7480(v0)
-
- if(first_free_page & 0x3ff)
-8002aef8: 3c028007 lui v0,0x8007
-8002aefc: 8c421d38 lw v0,7480(v0)
-8002af00: 00000000 nop
-8002af04: 304203ff andi v0,v0,0x3ff
-8002af08: 10400008 beqz v0,8002af2c <malloc_setup+0x68>
-8002af0c: 00000000 nop
- first_free_page = (first_free_page | 0x3ff) + 1;
-8002af10: 3c028007 lui v0,0x8007
-8002af14: 8c421d38 lw v0,7480(v0)
-8002af18: 00000000 nop
-8002af1c: 344203ff ori v0,v0,0x3ff
-8002af20: 24430001 addiu v1,v0,1
-8002af24: 3c028007 lui v0,0x8007
-8002af28: ac431d38 sw v1,7480(v0)
-
- first_free_page>>=10;
-8002af2c: 3c028007 lui v0,0x8007
-8002af30: 8c421d38 lw v0,7480(v0)
-8002af34: 00000000 nop
-8002af38: 00021a82 srl v1,v0,0xa
-8002af3c: 3c028007 lui v0,0x8007
-8002af40: ac431d38 sw v1,7480(v0)
-
- //printf("First free page: %d, bss_end: %x\n", first_free_page, __bss_end);
-
- for(x = 0; x < first_free_page; x++)
-8002af44: afc00000 sw zero,0(s8)
-8002af48: 10000014 b 8002af9c <malloc_setup+0xd8>
-8002af4c: 00000000 nop
- {
- busy_pages[x] = 1; // RAM occupied by program, data and BIOS looks always allocated
-8002af50: 3c028007 lui v0,0x8007
-8002af54: 2443136c addiu v1,v0,4972
-8002af58: 8fc20000 lw v0,0(s8)
-8002af5c: 00000000 nop
-8002af60: 00621021 addu v0,v1,v0
-8002af64: 24030001 li v1,1
-8002af68: a0430000 sb v1,0(v0)
- alloc_size[x] = 1; // Fake that 1K was required
-8002af6c: 3c028007 lui v0,0x8007
-8002af70: 8fc30000 lw v1,0(s8)
-8002af74: 00000000 nop
-8002af78: 00031880 sll v1,v1,0x2
-8002af7c: 2442f36c addiu v0,v0,-3220
-8002af80: 00621021 addu v0,v1,v0
-8002af84: 24030001 li v1,1
-8002af88: ac430000 sw v1,0(v0)
-
- first_free_page>>=10;
-
- //printf("First free page: %d, bss_end: %x\n", first_free_page, __bss_end);
-
- for(x = 0; x < first_free_page; x++)
-8002af8c: 8fc20000 lw v0,0(s8)
-8002af90: 00000000 nop
-8002af94: 24420001 addiu v0,v0,1
-8002af98: afc20000 sw v0,0(s8)
-8002af9c: 8fc30000 lw v1,0(s8)
-8002afa0: 3c028007 lui v0,0x8007
-8002afa4: 8c421d38 lw v0,7480(v0)
-8002afa8: 00000000 nop
-8002afac: 0062102b sltu v0,v1,v0
-8002afb0: 1440ffe7 bnez v0,8002af50 <malloc_setup+0x8c>
-8002afb4: 00000000 nop
- {
- busy_pages[x] = 1; // RAM occupied by program, data and BIOS looks always allocated
- alloc_size[x] = 1; // Fake that 1K was required
- }
-
- for(x = first_free_page; x < 2048; x++)
-8002afb8: 3c028007 lui v0,0x8007
-8002afbc: 8c421d38 lw v0,7480(v0)
-8002afc0: 00000000 nop
-8002afc4: afc20000 sw v0,0(s8)
-8002afc8: 10000012 b 8002b014 <malloc_setup+0x150>
-8002afcc: 00000000 nop
- {
- busy_pages[x] = 0;
-8002afd0: 3c028007 lui v0,0x8007
-8002afd4: 2443136c addiu v1,v0,4972
-8002afd8: 8fc20000 lw v0,0(s8)
-8002afdc: 00000000 nop
-8002afe0: 00621021 addu v0,v1,v0
-8002afe4: a0400000 sb zero,0(v0)
- alloc_size[x] = 0;
-8002afe8: 3c028007 lui v0,0x8007
-8002afec: 8fc30000 lw v1,0(s8)
-8002aff0: 00000000 nop
-8002aff4: 00031880 sll v1,v1,0x2
-8002aff8: 2442f36c addiu v0,v0,-3220
-8002affc: 00621021 addu v0,v1,v0
-8002b000: ac400000 sw zero,0(v0)
- {
- busy_pages[x] = 1; // RAM occupied by program, data and BIOS looks always allocated
- alloc_size[x] = 1; // Fake that 1K was required
- }
-
- for(x = first_free_page; x < 2048; x++)
-8002b004: 8fc20000 lw v0,0(s8)
-8002b008: 00000000 nop
-8002b00c: 24420001 addiu v0,v0,1
-8002b010: afc20000 sw v0,0(s8)
-8002b014: 8fc20000 lw v0,0(s8)
-8002b018: 00000000 nop
-8002b01c: 28420800 slti v0,v0,2048
-8002b020: 1440ffeb bnez v0,8002afd0 <malloc_setup+0x10c>
-8002b024: 00000000 nop
- {
- busy_pages[x] = 0;
- alloc_size[x] = 0;
- }
-}
-8002b028: 00000000 nop
-8002b02c: 03c0e821 move sp,s8
-8002b030: 8fbe000c lw s8,12(sp)
-8002b034: 27bd0010 addiu sp,sp,16
-8002b038: 03e00008 jr ra
-8002b03c: 00000000 nop
-
-8002b040 <malloc>:
-
-void *malloc(size_t size)
-{
-8002b040: 27bdfff0 addiu sp,sp,-16
-8002b044: afbe000c sw s8,12(sp)
-8002b048: 03a0f021 move s8,sp
-8002b04c: afc40010 sw a0,16(s8)
-
- int x, y;
-
-// Round size
-
- if(size & 0x3ff)
-8002b050: 8fc20010 lw v0,16(s8)
-8002b054: 00000000 nop
-8002b058: 304203ff andi v0,v0,0x3ff
-8002b05c: 10400006 beqz v0,8002b078 <malloc+0x38>
-8002b060: 00000000 nop
- size = (size | 0x3ff) + 1;
-8002b064: 8fc20010 lw v0,16(s8)
-8002b068: 00000000 nop
-8002b06c: 344203ff ori v0,v0,0x3ff
-8002b070: 24420001 addiu v0,v0,1
-8002b074: afc20010 sw v0,16(s8)
-
-// Divide it by 1024
- size >>= 10;
-8002b078: 8fc20010 lw v0,16(s8)
-8002b07c: 00000000 nop
-8002b080: 00021282 srl v0,v0,0xa
-8002b084: afc20010 sw v0,16(s8)
- //printf("Allocating %dKb\n", size);
-
-// Find a free page
- for(x = 0; x < 2048; x++)
-8002b088: afc00000 sw zero,0(s8)
-8002b08c: 1000004e b 8002b1c8 <malloc+0x188>
-8002b090: 00000000 nop
- {
- if(busy_pages[x] == 0)
-8002b094: 3c028007 lui v0,0x8007
-8002b098: 2443136c addiu v1,v0,4972
-8002b09c: 8fc20000 lw v0,0(s8)
-8002b0a0: 00000000 nop
-8002b0a4: 00621021 addu v0,v1,v0
-8002b0a8: 90420000 lbu v0,0(v0)
-8002b0ac: 00000000 nop
-8002b0b0: 14400041 bnez v0,8002b1b8 <malloc+0x178>
-8002b0b4: 00000000 nop
- // If it's enough for the memory we want to allocate, then return
- // the pointer to the free page we found, otherwise keep finding
-
- // printf("Page found at %dKb\n", x);
-
- for(y = 0; y < size; y++)
-8002b0b8: afc00004 sw zero,4(s8)
-8002b0bc: 10000010 b 8002b100 <malloc+0xc0>
-8002b0c0: 00000000 nop
- if(busy_pages[x+y] == 1) goto malloc_keep_finding;
-8002b0c4: 8fc30000 lw v1,0(s8)
-8002b0c8: 8fc20004 lw v0,4(s8)
-8002b0cc: 00000000 nop
-8002b0d0: 00621821 addu v1,v1,v0
-8002b0d4: 3c028007 lui v0,0x8007
-8002b0d8: 2442136c addiu v0,v0,4972
-8002b0dc: 00621021 addu v0,v1,v0
-8002b0e0: 90430000 lbu v1,0(v0)
-8002b0e4: 24020001 li v0,1
-8002b0e8: 10620032 beq v1,v0,8002b1b4 <malloc+0x174>
-8002b0ec: 00000000 nop
- // If it's enough for the memory we want to allocate, then return
- // the pointer to the free page we found, otherwise keep finding
-
- // printf("Page found at %dKb\n", x);
-
- for(y = 0; y < size; y++)
-8002b0f0: 8fc20004 lw v0,4(s8)
-8002b0f4: 00000000 nop
-8002b0f8: 24420001 addiu v0,v0,1
-8002b0fc: afc20004 sw v0,4(s8)
-8002b100: 8fc30004 lw v1,4(s8)
-8002b104: 8fc20010 lw v0,16(s8)
-8002b108: 00000000 nop
-8002b10c: 0062102b sltu v0,v1,v0
-8002b110: 1440ffec bnez v0,8002b0c4 <malloc+0x84>
-8002b114: 00000000 nop
- if(busy_pages[x+y] == 1) goto malloc_keep_finding;
-
- // We found the memory we wanted, now make it busy
-
- for(y = 0; y < size; y++)
-8002b118: afc00004 sw zero,4(s8)
-8002b11c: 1000000e b 8002b158 <malloc+0x118>
-8002b120: 00000000 nop
- busy_pages[x+y] = 1;
-8002b124: 8fc30000 lw v1,0(s8)
-8002b128: 8fc20004 lw v0,4(s8)
-8002b12c: 00000000 nop
-8002b130: 00621821 addu v1,v1,v0
-8002b134: 3c028007 lui v0,0x8007
-8002b138: 2442136c addiu v0,v0,4972
-8002b13c: 00621021 addu v0,v1,v0
-8002b140: 24030001 li v1,1
-8002b144: a0430000 sb v1,0(v0)
- for(y = 0; y < size; y++)
- if(busy_pages[x+y] == 1) goto malloc_keep_finding;
-
- // We found the memory we wanted, now make it busy
-
- for(y = 0; y < size; y++)
-8002b148: 8fc20004 lw v0,4(s8)
-8002b14c: 00000000 nop
-8002b150: 24420001 addiu v0,v0,1
-8002b154: afc20004 sw v0,4(s8)
-8002b158: 8fc30004 lw v1,4(s8)
-8002b15c: 8fc20010 lw v0,16(s8)
-8002b160: 00000000 nop
-8002b164: 0062102b sltu v0,v1,v0
-8002b168: 1440ffee bnez v0,8002b124 <malloc+0xe4>
-8002b16c: 00000000 nop
- busy_pages[x+y] = 1;
-
- // Store allocation size, it is essential for free()
-
- alloc_size[x] = size;
-8002b170: 3c028007 lui v0,0x8007
-8002b174: 8fc30000 lw v1,0(s8)
-8002b178: 00000000 nop
-8002b17c: 00031880 sll v1,v1,0x2
-8002b180: 2442f36c addiu v0,v0,-3220
-8002b184: 00621021 addu v0,v1,v0
-8002b188: 8fc30010 lw v1,16(s8)
-8002b18c: 00000000 nop
-8002b190: ac430000 sw v1,0(v0)
- // printf("malloc(): alloc_size[%d] = %d\n", x, size);
-
- return (void*)((unsigned int)0x80000000 + (x<<10));
-8002b194: 8fc20000 lw v0,0(s8)
-8002b198: 00000000 nop
-8002b19c: 00021280 sll v0,v0,0xa
-8002b1a0: 00401821 move v1,v0
-8002b1a4: 3c028000 lui v0,0x8000
-8002b1a8: 00621021 addu v0,v1,v0
-8002b1ac: 1000000c b 8002b1e0 <malloc+0x1a0>
-8002b1b0: 00000000 nop
- // the pointer to the free page we found, otherwise keep finding
-
- // printf("Page found at %dKb\n", x);
-
- for(y = 0; y < size; y++)
- if(busy_pages[x+y] == 1) goto malloc_keep_finding;
-8002b1b4: 00000000 nop
-// Divide it by 1024
- size >>= 10;
- //printf("Allocating %dKb\n", size);
-
-// Find a free page
- for(x = 0; x < 2048; x++)
-8002b1b8: 8fc20000 lw v0,0(s8)
-8002b1bc: 00000000 nop
-8002b1c0: 24420001 addiu v0,v0,1
-8002b1c4: afc20000 sw v0,0(s8)
-8002b1c8: 8fc20000 lw v0,0(s8)
-8002b1cc: 00000000 nop
-8002b1d0: 28420800 slti v0,v0,2048
-8002b1d4: 1440ffaf bnez v0,8002b094 <malloc+0x54>
-8002b1d8: 00000000 nop
-malloc_keep_finding:
- ; // Useless statement to make GCC not bail out...
- }
-
-// We couldn't find anything, return NULL
- return NULL;
-8002b1dc: 00001021 move v0,zero
-}
-8002b1e0: 03c0e821 move sp,s8
-8002b1e4: 8fbe000c lw s8,12(sp)
-8002b1e8: 27bd0010 addiu sp,sp,16
-8002b1ec: 03e00008 jr ra
-8002b1f0: 00000000 nop
-
-8002b1f4 <calloc>:
-
-void *calloc(size_t number, size_t size)
-{
-8002b1f4: 27bdffd8 addiu sp,sp,-40
-8002b1f8: afbf0024 sw ra,36(sp)
-8002b1fc: afbe0020 sw s8,32(sp)
-8002b200: 03a0f021 move s8,sp
-8002b204: afc40028 sw a0,40(s8)
-8002b208: afc5002c sw a1,44(s8)
- void *ptr = malloc(number * size);
-8002b20c: 8fc30028 lw v1,40(s8)
-8002b210: 8fc2002c lw v0,44(s8)
-8002b214: 00000000 nop
-8002b218: 00620018 mult v1,v0
-8002b21c: 00002012 mflo a0
-8002b220: 0c00ac10 jal 8002b040 <malloc>
-8002b224: 00000000 nop
-8002b228: afc20010 sw v0,16(s8)
- unsigned char *cptr = (unsigned char*)ptr;
-8002b22c: 8fc20010 lw v0,16(s8)
-8002b230: 00000000 nop
-8002b234: afc20018 sw v0,24(s8)
- int x;
-
- if(ptr == NULL)
-8002b238: 8fc20010 lw v0,16(s8)
-8002b23c: 00000000 nop
-8002b240: 14400002 bnez v0,8002b24c <calloc+0x58>
-8002b244: 00000000 nop
- ptr = NULL;
-8002b248: afc00010 sw zero,16(s8)
-
- for(x = 0; x < (number * size); x++)
-8002b24c: afc00014 sw zero,20(s8)
-8002b250: 1000000a b 8002b27c <calloc+0x88>
-8002b254: 00000000 nop
- cptr[x] = 0;
-8002b258: 8fc20014 lw v0,20(s8)
-8002b25c: 8fc30018 lw v1,24(s8)
-8002b260: 00000000 nop
-8002b264: 00621021 addu v0,v1,v0
-8002b268: a0400000 sb zero,0(v0)
- int x;
-
- if(ptr == NULL)
- ptr = NULL;
-
- for(x = 0; x < (number * size); x++)
-8002b26c: 8fc20014 lw v0,20(s8)
-8002b270: 00000000 nop
-8002b274: 24420001 addiu v0,v0,1
-8002b278: afc20014 sw v0,20(s8)
-8002b27c: 8fc30028 lw v1,40(s8)
-8002b280: 8fc2002c lw v0,44(s8)
-8002b284: 00000000 nop
-8002b288: 00620018 mult v1,v0
-8002b28c: 8fc20014 lw v0,20(s8)
-8002b290: 00001812 mflo v1
-8002b294: 0043102b sltu v0,v0,v1
-8002b298: 1440ffef bnez v0,8002b258 <calloc+0x64>
-8002b29c: 00000000 nop
- cptr[x] = 0;
-
- return ptr;
-8002b2a0: 8fc20010 lw v0,16(s8)
-}
-8002b2a4: 03c0e821 move sp,s8
-8002b2a8: 8fbf0024 lw ra,36(sp)
-8002b2ac: 8fbe0020 lw s8,32(sp)
-8002b2b0: 27bd0028 addiu sp,sp,40
-8002b2b4: 03e00008 jr ra
-8002b2b8: 00000000 nop
-
-8002b2bc <free>:
-
-void free(void *ptr)
-{
-8002b2bc: 27bdffe0 addiu sp,sp,-32
-8002b2c0: afbf001c sw ra,28(sp)
-8002b2c4: afbe0018 sw s8,24(sp)
-8002b2c8: 03a0f021 move s8,sp
-8002b2cc: afc40020 sw a0,32(s8)
- dprintf("free(%x)\n", (unsigned int)ptr);
-
- unsigned int ptri = (unsigned int)ptr;
-8002b2d0: 8fc20020 lw v0,32(s8)
-8002b2d4: 00000000 nop
-8002b2d8: afc20014 sw v0,20(s8)
- ptri -= 0x80000000;
-8002b2dc: 8fc30014 lw v1,20(s8)
-8002b2e0: 3c028000 lui v0,0x8000
-8002b2e4: 00621021 addu v0,v1,v0
-8002b2e8: afc20014 sw v0,20(s8)
- int x;
-
- if((ptri & 0x3ff) || (busy_pages[ptri>>10] == 0) || (alloc_size[ptri>>10] == 0))
-8002b2ec: 8fc20014 lw v0,20(s8)
-8002b2f0: 00000000 nop
-8002b2f4: 304203ff andi v0,v0,0x3ff
-8002b2f8: 14400016 bnez v0,8002b354 <free+0x98>
-8002b2fc: 00000000 nop
-8002b300: 8fc20014 lw v0,20(s8)
-8002b304: 00000000 nop
-8002b308: 00021a82 srl v1,v0,0xa
-8002b30c: 3c028007 lui v0,0x8007
-8002b310: 2442136c addiu v0,v0,4972
-8002b314: 00621021 addu v0,v1,v0
-8002b318: 90420000 lbu v0,0(v0)
-8002b31c: 00000000 nop
-8002b320: 1040000c beqz v0,8002b354 <free+0x98>
-8002b324: 00000000 nop
-8002b328: 8fc20014 lw v0,20(s8)
-8002b32c: 00000000 nop
-8002b330: 00021a82 srl v1,v0,0xa
-8002b334: 3c028007 lui v0,0x8007
-8002b338: 00031880 sll v1,v1,0x2
-8002b33c: 2442f36c addiu v0,v0,-3220
-8002b340: 00621021 addu v0,v1,v0
-8002b344: 8c420000 lw v0,0(v0)
-8002b348: 00000000 nop
-8002b34c: 1440000b bnez v0,8002b37c <free+0xc0>
-8002b350: 00000000 nop
- {
- // If the pointer address is not a multiplier of 1K, or the page
- // is free, it means that memory not allocated by malloc() was passed to free.
- // Print a warning message and return.
-
- printf("** free() ** : tried to free memory with invalid pointer at %x\n",
-8002b354: 8fc30014 lw v1,20(s8)
-8002b358: 3c028000 lui v0,0x8000
-8002b35c: 00621021 addu v0,v1,v0
-8002b360: 00402821 move a1,v0
-8002b364: 3c028004 lui v0,0x8004
-8002b368: 2444f9e0 addiu a0,v0,-1568
-8002b36c: 0c00ed8f jal 8003b63c <printf>
-8002b370: 00000000 nop
- ptri + 0x80000000);
-
- return;
-8002b374: 10000027 b 8002b414 <free+0x158>
-8002b378: 00000000 nop
- }
-
-// Divide ptri by 1024, getting initial page
-
- ptri>>=10;
-8002b37c: 8fc20014 lw v0,20(s8)
-8002b380: 00000000 nop
-8002b384: 00021282 srl v0,v0,0xa
-8002b388: afc20014 sw v0,20(s8)
-
-// Free pages
-
-// printf("alloc_size[%d] = %d\n", ptri, alloc_size[ptri]);
-
- for(x = 0; x < alloc_size[ptri]; x++)
-8002b38c: afc00010 sw zero,16(s8)
-8002b390: 1000000d b 8002b3c8 <free+0x10c>
-8002b394: 00000000 nop
- {
- dprintf("ptri + x = %d\n", ptri + x);
- busy_pages[ptri + x] = 0;
-8002b398: 8fc30010 lw v1,16(s8)
-8002b39c: 8fc20014 lw v0,20(s8)
-8002b3a0: 00000000 nop
-8002b3a4: 00621821 addu v1,v1,v0
-8002b3a8: 3c028007 lui v0,0x8007
-8002b3ac: 2442136c addiu v0,v0,4972
-8002b3b0: 00621021 addu v0,v1,v0
-8002b3b4: a0400000 sb zero,0(v0)
-
-// Free pages
-
-// printf("alloc_size[%d] = %d\n", ptri, alloc_size[ptri]);
-
- for(x = 0; x < alloc_size[ptri]; x++)
-8002b3b8: 8fc20010 lw v0,16(s8)
-8002b3bc: 00000000 nop
-8002b3c0: 24420001 addiu v0,v0,1
-8002b3c4: afc20010 sw v0,16(s8)
-8002b3c8: 3c028007 lui v0,0x8007
-8002b3cc: 8fc30014 lw v1,20(s8)
-8002b3d0: 00000000 nop
-8002b3d4: 00031880 sll v1,v1,0x2
-8002b3d8: 2442f36c addiu v0,v0,-3220
-8002b3dc: 00621021 addu v0,v1,v0
-8002b3e0: 8c430000 lw v1,0(v0)
-8002b3e4: 8fc20010 lw v0,16(s8)
-8002b3e8: 00000000 nop
-8002b3ec: 0043102b sltu v0,v0,v1
-8002b3f0: 1440ffe9 bnez v0,8002b398 <free+0xdc>
-8002b3f4: 00000000 nop
- busy_pages[ptri + x] = 0;
- }
-
-// Set allocation size to 0, finally freeing initial page
-
- alloc_size[ptri] = 0;
-8002b3f8: 3c028007 lui v0,0x8007
-8002b3fc: 8fc30014 lw v1,20(s8)
-8002b400: 00000000 nop
-8002b404: 00031880 sll v1,v1,0x2
-8002b408: 2442f36c addiu v0,v0,-3220
-8002b40c: 00621021 addu v0,v1,v0
-8002b410: ac400000 sw zero,0(v0)
-
- /*for(x=150;x<170;x++)
- printf("%d: %d, %d\n", x, busy_pages[x], alloc_size[x]);*/
-}
-8002b414: 03c0e821 move sp,s8
-8002b418: 8fbf001c lw ra,28(sp)
-8002b41c: 8fbe0018 lw s8,24(sp)
-8002b420: 27bd0020 addiu sp,sp,32
-8002b424: 03e00008 jr ra
-8002b428: 00000000 nop
-
-8002b42c <realloc>:
-
-void *realloc(void *ptr, size_t size)
-{
-8002b42c: 27bdffd8 addiu sp,sp,-40
-8002b430: afbf0024 sw ra,36(sp)
-8002b434: afbe0020 sw s8,32(sp)
-8002b438: 03a0f021 move s8,sp
-8002b43c: afc40028 sw a0,40(s8)
-8002b440: afc5002c sw a1,44(s8)
- unsigned int ptri = (unsigned int)ptr;
-8002b444: 8fc20028 lw v0,40(s8)
-8002b448: 00000000 nop
-8002b44c: afc20014 sw v0,20(s8)
- int x;
- void *newptr;
-
- if(ptr == NULL)
-8002b450: 8fc20028 lw v0,40(s8)
-8002b454: 00000000 nop
-8002b458: 14400006 bnez v0,8002b474 <realloc+0x48>
-8002b45c: 00000000 nop
- return malloc(size);
-8002b460: 8fc4002c lw a0,44(s8)
-8002b464: 0c00ac10 jal 8002b040 <malloc>
-8002b468: 00000000 nop
-8002b46c: 1000009c b 8002b6e0 <realloc+0x2b4>
-8002b470: 00000000 nop
-
- ptri -= 0x80000000;
-8002b474: 8fc30014 lw v1,20(s8)
-8002b478: 3c028000 lui v0,0x8000
-8002b47c: 00621021 addu v0,v1,v0
-8002b480: afc20014 sw v0,20(s8)
-
- size |= 0x3ff;
-8002b484: 8fc2002c lw v0,44(s8)
-8002b488: 00000000 nop
-8002b48c: 344203ff ori v0,v0,0x3ff
-8002b490: afc2002c sw v0,44(s8)
- size++;
-8002b494: 8fc2002c lw v0,44(s8)
-8002b498: 00000000 nop
-8002b49c: 24420001 addiu v0,v0,1
-8002b4a0: afc2002c sw v0,44(s8)
-
- size>>=10;
-8002b4a4: 8fc2002c lw v0,44(s8)
-8002b4a8: 00000000 nop
-8002b4ac: 00021282 srl v0,v0,0xa
-8002b4b0: afc2002c sw v0,44(s8)
-
- if((ptri & 0x3ff) || (busy_pages[ptri>>10] == 0) || (alloc_size[ptri>>10] == 0))
-8002b4b4: 8fc20014 lw v0,20(s8)
-8002b4b8: 00000000 nop
-8002b4bc: 304203ff andi v0,v0,0x3ff
-8002b4c0: 14400016 bnez v0,8002b51c <realloc+0xf0>
-8002b4c4: 00000000 nop
-8002b4c8: 8fc20014 lw v0,20(s8)
-8002b4cc: 00000000 nop
-8002b4d0: 00021a82 srl v1,v0,0xa
-8002b4d4: 3c028007 lui v0,0x8007
-8002b4d8: 2442136c addiu v0,v0,4972
-8002b4dc: 00621021 addu v0,v1,v0
-8002b4e0: 90420000 lbu v0,0(v0)
-8002b4e4: 00000000 nop
-8002b4e8: 1040000c beqz v0,8002b51c <realloc+0xf0>
-8002b4ec: 00000000 nop
-8002b4f0: 8fc20014 lw v0,20(s8)
-8002b4f4: 00000000 nop
-8002b4f8: 00021a82 srl v1,v0,0xa
-8002b4fc: 3c028007 lui v0,0x8007
-8002b500: 00031880 sll v1,v1,0x2
-8002b504: 2442f36c addiu v0,v0,-3220
-8002b508: 00621021 addu v0,v1,v0
-8002b50c: 8c420000 lw v0,0(v0)
-8002b510: 00000000 nop
-8002b514: 1440000c bnez v0,8002b548 <realloc+0x11c>
-8002b518: 00000000 nop
- {
- // If the pointer address is not a multiplier of 1K, or the page
- // is free, it means that memory not allocated by malloc() was passed to realloc.
- // Print a warning message and return.
-
- printf("** realloc() ** : tried to reallocate memory with invalid pointer at %x\n",
-8002b51c: 8fc30014 lw v1,20(s8)
-8002b520: 3c028000 lui v0,0x8000
-8002b524: 00621021 addu v0,v1,v0
-8002b528: 00402821 move a1,v0
-8002b52c: 3c028004 lui v0,0x8004
-8002b530: 2444fa20 addiu a0,v0,-1504
-8002b534: 0c00ed8f jal 8003b63c <printf>
-8002b538: 00000000 nop
- ptri + 0x80000000);
-
- return NULL;
-8002b53c: 00001021 move v0,zero
-8002b540: 10000067 b 8002b6e0 <realloc+0x2b4>
-8002b544: 00000000 nop
- }
-
-// Get page
-
- ptri>>=10;
-8002b548: 8fc20014 lw v0,20(s8)
-8002b54c: 00000000 nop
-8002b550: 00021282 srl v0,v0,0xa
-8002b554: afc20014 sw v0,20(s8)
-
- if(size < alloc_size[ptri]) // New size smaller than old size
-8002b558: 3c028007 lui v0,0x8007
-8002b55c: 8fc30014 lw v1,20(s8)
-8002b560: 00000000 nop
-8002b564: 00031880 sll v1,v1,0x2
-8002b568: 2442f36c addiu v0,v0,-3220
-8002b56c: 00621021 addu v0,v1,v0
-8002b570: 8c430000 lw v1,0(v0)
-8002b574: 8fc2002c lw v0,44(s8)
-8002b578: 00000000 nop
-8002b57c: 0043102b sltu v0,v0,v1
-8002b580: 10400029 beqz v0,8002b628 <realloc+0x1fc>
-8002b584: 00000000 nop
- {
- for(x = size; x < alloc_size[ptri]; x++)
-8002b588: 8fc2002c lw v0,44(s8)
-8002b58c: 00000000 nop
-8002b590: afc20010 sw v0,16(s8)
-8002b594: 1000000d b 8002b5cc <realloc+0x1a0>
-8002b598: 00000000 nop
- busy_pages[ptri + x] = 0;
-8002b59c: 8fc30010 lw v1,16(s8)
-8002b5a0: 8fc20014 lw v0,20(s8)
-8002b5a4: 00000000 nop
-8002b5a8: 00621821 addu v1,v1,v0
-8002b5ac: 3c028007 lui v0,0x8007
-8002b5b0: 2442136c addiu v0,v0,4972
-8002b5b4: 00621021 addu v0,v1,v0
-8002b5b8: a0400000 sb zero,0(v0)
-
- ptri>>=10;
-
- if(size < alloc_size[ptri]) // New size smaller than old size
- {
- for(x = size; x < alloc_size[ptri]; x++)
-8002b5bc: 8fc20010 lw v0,16(s8)
-8002b5c0: 00000000 nop
-8002b5c4: 24420001 addiu v0,v0,1
-8002b5c8: afc20010 sw v0,16(s8)
-8002b5cc: 3c028007 lui v0,0x8007
-8002b5d0: 8fc30014 lw v1,20(s8)
-8002b5d4: 00000000 nop
-8002b5d8: 00031880 sll v1,v1,0x2
-8002b5dc: 2442f36c addiu v0,v0,-3220
-8002b5e0: 00621021 addu v0,v1,v0
-8002b5e4: 8c430000 lw v1,0(v0)
-8002b5e8: 8fc20010 lw v0,16(s8)
-8002b5ec: 00000000 nop
-8002b5f0: 0043102b sltu v0,v0,v1
-8002b5f4: 1440ffe9 bnez v0,8002b59c <realloc+0x170>
-8002b5f8: 00000000 nop
- busy_pages[ptri + x] = 0;
-
- alloc_size[ptri] = size;
-8002b5fc: 3c028007 lui v0,0x8007
-8002b600: 8fc30014 lw v1,20(s8)
-8002b604: 00000000 nop
-8002b608: 00031880 sll v1,v1,0x2
-8002b60c: 2442f36c addiu v0,v0,-3220
-8002b610: 00621021 addu v0,v1,v0
-8002b614: 8fc3002c lw v1,44(s8)
-8002b618: 00000000 nop
-8002b61c: ac430000 sw v1,0(v0)
-8002b620: 1000002e b 8002b6dc <realloc+0x2b0>
-8002b624: 00000000 nop
- }
- else if(size > alloc_size[ptri]) // New size bigger than old size
-8002b628: 3c028007 lui v0,0x8007
-8002b62c: 8fc30014 lw v1,20(s8)
-8002b630: 00000000 nop
-8002b634: 00031880 sll v1,v1,0x2
-8002b638: 2442f36c addiu v0,v0,-3220
-8002b63c: 00621021 addu v0,v1,v0
-8002b640: 8c430000 lw v1,0(v0)
-8002b644: 8fc2002c lw v0,44(s8)
-8002b648: 00000000 nop
-8002b64c: 0062102b sltu v0,v1,v0
-8002b650: 10400022 beqz v0,8002b6dc <realloc+0x2b0>
-8002b654: 00000000 nop
- {
- newptr = malloc(size * 1024);
-8002b658: 8fc2002c lw v0,44(s8)
-8002b65c: 00000000 nop
-8002b660: 00021280 sll v0,v0,0xa
-8002b664: 00402021 move a0,v0
-8002b668: 0c00ac10 jal 8002b040 <malloc>
-8002b66c: 00000000 nop
-8002b670: afc20018 sw v0,24(s8)
-
- if(newptr == NULL)
-8002b674: 8fc20018 lw v0,24(s8)
-8002b678: 00000000 nop
-8002b67c: 14400004 bnez v0,8002b690 <realloc+0x264>
-8002b680: 00000000 nop
- return NULL;
-8002b684: 00001021 move v0,zero
-8002b688: 10000015 b 8002b6e0 <realloc+0x2b4>
-8002b68c: 00000000 nop
-
- memcpy(newptr, ptr, alloc_size[ptri]);
-8002b690: 3c028007 lui v0,0x8007
-8002b694: 8fc30014 lw v1,20(s8)
-8002b698: 00000000 nop
-8002b69c: 00031880 sll v1,v1,0x2
-8002b6a0: 2442f36c addiu v0,v0,-3220
-8002b6a4: 00621021 addu v0,v1,v0
-8002b6a8: 8c420000 lw v0,0(v0)
-8002b6ac: 00000000 nop
-8002b6b0: 00403021 move a2,v0
-8002b6b4: 8fc50028 lw a1,40(s8)
-8002b6b8: 8fc40018 lw a0,24(s8)
-8002b6bc: 0c00d75e jal 80035d78 <memcpy>
-8002b6c0: 00000000 nop
- free(ptr);
-8002b6c4: 8fc40028 lw a0,40(s8)
-8002b6c8: 0c00acaf jal 8002b2bc <free>
-8002b6cc: 00000000 nop
-
- ptr = newptr;
-8002b6d0: 8fc20018 lw v0,24(s8)
-8002b6d4: 00000000 nop
-8002b6d8: afc20028 sw v0,40(s8)
- }
-
- return ptr;
-8002b6dc: 8fc20028 lw v0,40(s8)
-}
-8002b6e0: 03c0e821 move sp,s8
-8002b6e4: 8fbf0024 lw ra,36(sp)
-8002b6e8: 8fbe0020 lw s8,32(sp)
-8002b6ec: 27bd0028 addiu sp,sp,40
-8002b6f0: 03e00008 jr ra
-8002b6f4: 00000000 nop
-
-8002b6f8 <PRFONT_SCALEX>:
-double gs_vbuf[4][3];
-
-static int __gs_autowait = 0;
-
-unsigned int PRFONT_SCALEX(int i)
-{
-8002b6f8: 27bdfff8 addiu sp,sp,-8
-8002b6fc: afbe0004 sw s8,4(sp)
-8002b700: 03a0f021 move s8,sp
-8002b704: afc40008 sw a0,8(s8)
- prfont_scale_x = i;
-8002b708: 3c028007 lui v0,0x8007
-8002b70c: 8fc30008 lw v1,8(s8)
-8002b710: 00000000 nop
-8002b714: ac431ce0 sw v1,7392(v0)
- return PRFONT_SCALE;
-8002b718: 24020008 li v0,8
-}
-8002b71c: 03c0e821 move sp,s8
-8002b720: 8fbe0004 lw s8,4(sp)
-8002b724: 27bd0008 addiu sp,sp,8
-8002b728: 03e00008 jr ra
-8002b72c: 00000000 nop
-
-8002b730 <PRFONT_SCALEY>:
-
-unsigned int PRFONT_SCALEY(int i)
-{
-8002b730: 27bdfff8 addiu sp,sp,-8
-8002b734: afbe0004 sw s8,4(sp)
-8002b738: 03a0f021 move s8,sp
-8002b73c: afc40008 sw a0,8(s8)
- prfont_scale_y = i;
-8002b740: 3c028007 lui v0,0x8007
-8002b744: 8fc30008 lw v1,8(s8)
-8002b748: 00000000 nop
-8002b74c: ac431ce4 sw v1,7396(v0)
- return PRFONT_SCALE;
-8002b750: 24020008 li v0,8
-}
-8002b754: 03c0e821 move sp,s8
-8002b758: 8fbe0004 lw s8,4(sp)
-8002b75c: 27bd0008 addiu sp,sp,8
-8002b760: 03e00008 jr ra
-8002b764: 00000000 nop
-
-8002b768 <PRFONT_RL>:
-
-unsigned int PRFONT_RL(unsigned char f)
-{
-8002b768: 27bdfff8 addiu sp,sp,-8
-8002b76c: afbe0004 sw s8,4(sp)
-8002b770: 03a0f021 move s8,sp
-8002b774: 00801021 move v0,a0
-8002b778: a3c20008 sb v0,8(s8)
- prfont_rl = f;
-8002b77c: 3c028004 lui v0,0x8004
-8002b780: 93c30008 lbu v1,8(s8)
-8002b784: 00000000 nop
-8002b788: a043255c sb v1,9564(v0)
- return PRFONT_COLOR;
-8002b78c: 24020020 li v0,32
-}
-8002b790: 03c0e821 move sp,s8
-8002b794: 8fbe0004 lw s8,4(sp)
-8002b798: 27bd0008 addiu sp,sp,8
-8002b79c: 03e00008 jr ra
-8002b7a0: 00000000 nop
-
-8002b7a4 <PRFONT_GL>:
-
-unsigned int PRFONT_GL(unsigned char f)
-{
-8002b7a4: 27bdfff8 addiu sp,sp,-8
-8002b7a8: afbe0004 sw s8,4(sp)
-8002b7ac: 03a0f021 move s8,sp
-8002b7b0: 00801021 move v0,a0
-8002b7b4: a3c20008 sb v0,8(s8)
- prfont_gl = f;
-8002b7b8: 3c028004 lui v0,0x8004
-8002b7bc: 93c30008 lbu v1,8(s8)
-8002b7c0: 00000000 nop
-8002b7c4: a043255d sb v1,9565(v0)
- return PRFONT_COLOR;
-8002b7c8: 24020020 li v0,32
-}
-8002b7cc: 03c0e821 move sp,s8
-8002b7d0: 8fbe0004 lw s8,4(sp)
-8002b7d4: 27bd0008 addiu sp,sp,8
-8002b7d8: 03e00008 jr ra
-8002b7dc: 00000000 nop
-
-8002b7e0 <PRFONT_BL>:
-
-unsigned int PRFONT_BL(unsigned char f)
-{
-8002b7e0: 27bdfff8 addiu sp,sp,-8
-8002b7e4: afbe0004 sw s8,4(sp)
-8002b7e8: 03a0f021 move s8,sp
-8002b7ec: 00801021 move v0,a0
-8002b7f0: a3c20008 sb v0,8(s8)
- prfont_bl = f;
-8002b7f4: 3c028004 lui v0,0x8004
-8002b7f8: 93c30008 lbu v1,8(s8)
-8002b7fc: 00000000 nop
-8002b800: a043255e sb v1,9566(v0)
- return PRFONT_COLOR;
-8002b804: 24020020 li v0,32
-}
-8002b808: 03c0e821 move sp,s8
-8002b80c: 8fbe0004 lw s8,4(sp)
-8002b810: 27bd0008 addiu sp,sp,8
-8002b814: 03e00008 jr ra
-8002b818: 00000000 nop
-
-8002b81c <gs_calculate_scaled_size>:
-static void gs_internal_vector_rotate(int x_a, int y_a, int z_a, double *v, double *n);
-
-static char gpu_stringbuf[512];
-
-int gs_calculate_scaled_size(int size, int scale)
-{
-8002b81c: 27bdfff8 addiu sp,sp,-8
-8002b820: afbe0004 sw s8,4(sp)
-8002b824: 03a0f021 move s8,sp
-8002b828: afc40008 sw a0,8(s8)
-8002b82c: afc5000c sw a1,12(s8)
- if(scale > 8)
-8002b830: 8fc2000c lw v0,12(s8)
-8002b834: 00000000 nop
-8002b838: 28420009 slti v0,v0,9
-8002b83c: 1440000c bnez v0,8002b870 <gs_calculate_scaled_size+0x54>
-8002b840: 00000000 nop
- return (size * scale) / SCALE_ONE;
-8002b844: 8fc30008 lw v1,8(s8)
-8002b848: 8fc2000c lw v0,12(s8)
-8002b84c: 00000000 nop
-8002b850: 00620018 mult v1,v0
-8002b854: 00001012 mflo v0
-8002b858: 04410002 bgez v0,8002b864 <gs_calculate_scaled_size+0x48>
-8002b85c: 00000000 nop
-8002b860: 24420fff addiu v0,v0,4095
-8002b864: 00021303 sra v0,v0,0xc
-8002b868: 1000002f b 8002b928 <gs_calculate_scaled_size+0x10c>
-8002b86c: 00000000 nop
- else if(scale == 0)
-8002b870: 8fc2000c lw v0,12(s8)
-8002b874: 00000000 nop
-8002b878: 14400004 bnez v0,8002b88c <gs_calculate_scaled_size+0x70>
-8002b87c: 00000000 nop
- return size;
-8002b880: 8fc20008 lw v0,8(s8)
-8002b884: 10000028 b 8002b928 <gs_calculate_scaled_size+0x10c>
-8002b888: 00000000 nop
- else if(scale > 0)
-8002b88c: 8fc2000c lw v0,12(s8)
-8002b890: 00000000 nop
-8002b894: 18400008 blez v0,8002b8b8 <gs_calculate_scaled_size+0x9c>
-8002b898: 00000000 nop
- return size * scale;
-8002b89c: 8fc30008 lw v1,8(s8)
-8002b8a0: 8fc2000c lw v0,12(s8)
-8002b8a4: 00000000 nop
-8002b8a8: 00620018 mult v1,v0
-8002b8ac: 00001012 mflo v0
-8002b8b0: 1000001d b 8002b928 <gs_calculate_scaled_size+0x10c>
-8002b8b4: 00000000 nop
- else if(scale > -8)
-8002b8b8: 8fc2000c lw v0,12(s8)
-8002b8bc: 00000000 nop
-8002b8c0: 2842fff9 slti v0,v0,-7
-8002b8c4: 1440000d bnez v0,8002b8fc <gs_calculate_scaled_size+0xe0>
-8002b8c8: 00000000 nop
- return size / (scale * -1);
-8002b8cc: 8fc2000c lw v0,12(s8)
-8002b8d0: 00000000 nop
-8002b8d4: 00021023 negu v0,v0
-8002b8d8: 8fc30008 lw v1,8(s8)
-8002b8dc: 00000000 nop
-8002b8e0: 14400002 bnez v0,8002b8ec <gs_calculate_scaled_size+0xd0>
-8002b8e4: 0062001a div zero,v1,v0
-8002b8e8: 0007000d break 0x7
-8002b8ec: 00001010 mfhi v0
-8002b8f0: 00001012 mflo v0
-8002b8f4: 1000000c b 8002b928 <gs_calculate_scaled_size+0x10c>
-8002b8f8: 00000000 nop
-
- return (size * SCALE_ONE) / -scale;
-8002b8fc: 8fc20008 lw v0,8(s8)
-8002b900: 00000000 nop
-8002b904: 00021b00 sll v1,v0,0xc
-8002b908: 8fc2000c lw v0,12(s8)
-8002b90c: 00000000 nop
-8002b910: 00021023 negu v0,v0
-8002b914: 14400002 bnez v0,8002b920 <gs_calculate_scaled_size+0x104>
-8002b918: 0062001a div zero,v1,v0
-8002b91c: 0007000d break 0x7
-8002b920: 00001010 mfhi v0
-8002b924: 00001012 mflo v0
-}
-8002b928: 03c0e821 move sp,s8
-8002b92c: 8fbe0004 lw s8,4(sp)
-8002b930: 27bd0008 addiu sp,sp,8
-8002b934: 03e00008 jr ra
-8002b938: 00000000 nop
-
-8002b93c <GsSetList>:
-
-void GsSetList(unsigned int *listptr)
-{
-8002b93c: 27bdfff8 addiu sp,sp,-8
-8002b940: afbe0004 sw s8,4(sp)
-8002b944: 03a0f021 move s8,sp
-8002b948: afc40008 sw a0,8(s8)
- linked_list = listptr;
-8002b94c: 3c028007 lui v0,0x8007
-8002b950: 8fc30008 lw v1,8(s8)
-8002b954: 00000000 nop
-8002b958: ac431cd4 sw v1,7380(v0)
- linked_list_pos = 0;
-8002b95c: 3c028007 lui v0,0x8007
-8002b960: ac401cd8 sw zero,7384(v0)
-}
-8002b964: 00000000 nop
-8002b968: 03c0e821 move sp,s8
-8002b96c: 8fbe0004 lw s8,4(sp)
-8002b970: 27bd0008 addiu sp,sp,8
-8002b974: 03e00008 jr ra
-8002b978: 00000000 nop
-
-8002b97c <GsDrawList>:
-
-void GsDrawList()
-{
-8002b97c: 27bdffe8 addiu sp,sp,-24
-8002b980: afbf0014 sw ra,20(sp)
-8002b984: afbe0010 sw s8,16(sp)
-8002b988: 03a0f021 move s8,sp
- if(PSX_GetInitFlags() & PSX_INIT_NOBIOS)
-8002b98c: 0c00d4c4 jal 80035310 <PSX_GetInitFlags>
-8002b990: 00000000 nop
-8002b994: 30420004 andi v0,v0,0x4
-8002b998: 10400005 beqz v0,8002b9b0 <GsDrawList+0x34>
-8002b99c: 00000000 nop
- {
-// DMA is unreliable right now, use PIO.
- GsDrawListPIO();
-8002b9a0: 0c00aeaa jal 8002baa8 <GsDrawListPIO>
-8002b9a4: 00000000 nop
- return;
-8002b9a8: 10000039 b 8002ba90 <GsDrawList+0x114>
-8002b9ac: 00000000 nop
- }
-
- //int x = 0;
-
- /* Put a terminator, so the link listed ends. */
- linked_list[linked_list_pos] = 0x00ffffff;
-8002b9b0: 3c028007 lui v0,0x8007
-8002b9b4: 8c431cd4 lw v1,7380(v0)
-8002b9b8: 3c028007 lui v0,0x8007
-8002b9bc: 8c421cd8 lw v0,7384(v0)
-8002b9c0: 00000000 nop
-8002b9c4: 00021080 sll v0,v0,0x2
-8002b9c8: 00621021 addu v0,v1,v0
-8002b9cc: 3c0300ff lui v1,0xff
-8002b9d0: 3463ffff ori v1,v1,0xffff
-8002b9d4: ac430000 sw v1,0(v0)
-
-// do{printf("linked_list[%d] = %08x\n", x, linked_list[x]);}while(linked_list[x++]!=0xffffff);
-
- //#warning "Let's hope this works well."
-
- while(!(GPU_CONTROL_PORT & (1<<0x1a))); /* Wait for the GPU to finish
-8002b9d8: 00000000 nop
-8002b9dc: 3c021f80 lui v0,0x1f80
-8002b9e0: 34421814 ori v0,v0,0x1814
-8002b9e4: 8c430000 lw v1,0(v0)
-8002b9e8: 3c020400 lui v0,0x400
-8002b9ec: 00621024 and v0,v1,v0
-8002b9f0: 1040fffa beqz v0,8002b9dc <GsDrawList+0x60>
-8002b9f4: 00000000 nop
- * drawing primitives. */
- while(!(GPU_CONTROL_PORT & (1<<0x1c))); /* Wait for the GPU to be free */
-8002b9f8: 00000000 nop
-8002b9fc: 3c021f80 lui v0,0x1f80
-8002ba00: 34421814 ori v0,v0,0x1814
-8002ba04: 8c430000 lw v1,0(v0)
-8002ba08: 3c021000 lui v0,0x1000
-8002ba0c: 00621024 and v0,v1,v0
-8002ba10: 1040fffa beqz v0,8002b9fc <GsDrawList+0x80>
-8002ba14: 00000000 nop
-
- gpu_ctrl(4, 2); // DMA CPU->GPU mode
-8002ba18: 24050002 li a1,2
-8002ba1c: 24040004 li a0,4
-8002ba20: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002ba24: 00000000 nop
- D2_MADR = (unsigned int)linked_list;
-8002ba28: 3c021f80 lui v0,0x1f80
-8002ba2c: 344210a0 ori v0,v0,0x10a0
-8002ba30: 3c038007 lui v1,0x8007
-8002ba34: 8c631cd4 lw v1,7380(v1)
-8002ba38: 00000000 nop
-8002ba3c: ac430000 sw v1,0(v0)
- D2_BCR = 0;
-8002ba40: 3c021f80 lui v0,0x1f80
-8002ba44: 344210a4 ori v0,v0,0x10a4
-8002ba48: ac400000 sw zero,0(v0)
- D2_CHCR = (1<<0xa)|1|(1<<0x18);
-8002ba4c: 3c021f80 lui v0,0x1f80
-8002ba50: 344210a8 ori v0,v0,0x10a8
-8002ba54: 3c030100 lui v1,0x100
-8002ba58: 34630401 ori v1,v1,0x401
-8002ba5c: ac430000 sw v1,0(v0)
-
- linked_list_pos = 0;
-8002ba60: 3c028007 lui v0,0x8007
-8002ba64: ac401cd8 sw zero,7384(v0)
-
- //if(PSX_GetInitFlags() & PSX_INIT_NOBIOS)
- // __psxsdk_gpu_dma_finished = 0;
-
- if(__gs_autowait)
-8002ba68: 3c028007 lui v0,0x8007
-8002ba6c: 8c421ce8 lw v0,7400(v0)
-8002ba70: 00000000 nop
-8002ba74: 10400006 beqz v0,8002ba90 <GsDrawList+0x114>
-8002ba78: 00000000 nop
- while(GsIsDrawing());
-8002ba7c: 00000000 nop
-8002ba80: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-8002ba84: 00000000 nop
-8002ba88: 1440fffd bnez v0,8002ba80 <GsDrawList+0x104>
-8002ba8c: 00000000 nop
-}
-8002ba90: 03c0e821 move sp,s8
-8002ba94: 8fbf0014 lw ra,20(sp)
-8002ba98: 8fbe0010 lw s8,16(sp)
-8002ba9c: 27bd0018 addiu sp,sp,24
-8002baa0: 03e00008 jr ra
-8002baa4: 00000000 nop
-
-8002baa8 <GsDrawListPIO>:
-
-void GsDrawListPIO()
-{
-8002baa8: 27bdffd8 addiu sp,sp,-40
-8002baac: afbf0024 sw ra,36(sp)
-8002bab0: afbe0020 sw s8,32(sp)
-8002bab4: 03a0f021 move s8,sp
- //linked_list[linked_list_pos] = 0x00ffffff;
- int pos = 0;
-8002bab8: afc00010 sw zero,16(s8)
- int sz = 0;
-8002babc: afc00018 sw zero,24(s8)
- int x;
-
- while(!(GPU_CONTROL_PORT & (1<<0x1c)));
-8002bac0: 00000000 nop
-8002bac4: 3c021f80 lui v0,0x1f80
-8002bac8: 34421814 ori v0,v0,0x1814
-8002bacc: 8c430000 lw v1,0(v0)
-8002bad0: 3c021000 lui v0,0x1000
-8002bad4: 00621024 and v0,v1,v0
-8002bad8: 1040fffa beqz v0,8002bac4 <GsDrawListPIO+0x1c>
-8002badc: 00000000 nop
- // Disable DMA
- GPU_CONTROL_PORT = 0x04000000;
-8002bae0: 3c021f80 lui v0,0x1f80
-8002bae4: 34421814 ori v0,v0,0x1814
-8002bae8: 3c030400 lui v1,0x400
-8002baec: ac430000 sw v1,0(v0)
-
-
- while(pos < linked_list_pos)
-8002baf0: 10000033 b 8002bbc0 <GsDrawListPIO+0x118>
-8002baf4: 00000000 nop
- {
- while(!(GPU_CONTROL_PORT & (1<<0x1c)));
-8002baf8: 00000000 nop
-8002bafc: 3c021f80 lui v0,0x1f80
-8002bb00: 34421814 ori v0,v0,0x1814
-8002bb04: 8c430000 lw v1,0(v0)
-8002bb08: 3c021000 lui v0,0x1000
-8002bb0c: 00621024 and v0,v1,v0
-8002bb10: 1040fffa beqz v0,8002bafc <GsDrawListPIO+0x54>
-8002bb14: 00000000 nop
-
- GPU_DATA_PORT = 0x01000000; // Reset data port
-8002bb18: 3c021f80 lui v0,0x1f80
-8002bb1c: 34421810 ori v0,v0,0x1810
-8002bb20: 3c030100 lui v1,0x100
-8002bb24: ac430000 sw v1,0(v0)
-
- sz = linked_list[pos++] >> 24;
-8002bb28: 3c028007 lui v0,0x8007
-8002bb2c: 8c431cd4 lw v1,7380(v0)
-8002bb30: 8fc20010 lw v0,16(s8)
-8002bb34: 00000000 nop
-8002bb38: 24440001 addiu a0,v0,1
-8002bb3c: afc40010 sw a0,16(s8)
-8002bb40: 00021080 sll v0,v0,0x2
-8002bb44: 00621021 addu v0,v1,v0
-8002bb48: 8c420000 lw v0,0(v0)
-8002bb4c: 00000000 nop
-8002bb50: 00021602 srl v0,v0,0x18
-8002bb54: afc20018 sw v0,24(s8)
-
- for(x = 0; x < sz; x++)
-8002bb58: afc00014 sw zero,20(s8)
-8002bb5c: 10000012 b 8002bba8 <GsDrawListPIO+0x100>
-8002bb60: 00000000 nop
- GPU_DATA_PORT = linked_list[pos++];
-8002bb64: 3c021f80 lui v0,0x1f80
-8002bb68: 34431810 ori v1,v0,0x1810
-8002bb6c: 3c028007 lui v0,0x8007
-8002bb70: 8c441cd4 lw a0,7380(v0)
-8002bb74: 8fc20010 lw v0,16(s8)
-8002bb78: 00000000 nop
-8002bb7c: 24450001 addiu a1,v0,1
-8002bb80: afc50010 sw a1,16(s8)
-8002bb84: 00021080 sll v0,v0,0x2
-8002bb88: 00821021 addu v0,a0,v0
-8002bb8c: 8c420000 lw v0,0(v0)
-8002bb90: 00000000 nop
-8002bb94: ac620000 sw v0,0(v1)
-
- GPU_DATA_PORT = 0x01000000; // Reset data port
-
- sz = linked_list[pos++] >> 24;
-
- for(x = 0; x < sz; x++)
-8002bb98: 8fc20014 lw v0,20(s8)
-8002bb9c: 00000000 nop
-8002bba0: 24420001 addiu v0,v0,1
-8002bba4: afc20014 sw v0,20(s8)
-8002bba8: 8fc30014 lw v1,20(s8)
-8002bbac: 8fc20018 lw v0,24(s8)
-8002bbb0: 00000000 nop
-8002bbb4: 0062102a slt v0,v1,v0
-8002bbb8: 1440ffea bnez v0,8002bb64 <GsDrawListPIO+0xbc>
-8002bbbc: 00000000 nop
- while(!(GPU_CONTROL_PORT & (1<<0x1c)));
- // Disable DMA
- GPU_CONTROL_PORT = 0x04000000;
-
-
- while(pos < linked_list_pos)
-8002bbc0: 8fc30010 lw v1,16(s8)
-8002bbc4: 3c028007 lui v0,0x8007
-8002bbc8: 8c421cd8 lw v0,7384(v0)
-8002bbcc: 00000000 nop
-8002bbd0: 0062102b sltu v0,v1,v0
-8002bbd4: 1440ffc8 bnez v0,8002baf8 <GsDrawListPIO+0x50>
-8002bbd8: 00000000 nop
-
- for(x = 0; x < sz; x++)
- GPU_DATA_PORT = linked_list[pos++];
- }
-
- linked_list_pos = 0;
-8002bbdc: 3c028007 lui v0,0x8007
-8002bbe0: ac401cd8 sw zero,7384(v0)
-// GPU_DATA_PORT = 0xE6000000; // Disable masking stuff
-// gpu_data_ctrl(2, ((b&0xff)<<16)|((g&0xff)<<8)|r);
-// GPU_DATA_PORT = (y<<16)|x;
-// GPU_DATA_PORT = (h<<16)|w;
- if(__gs_autowait)
-8002bbe4: 3c028007 lui v0,0x8007
-8002bbe8: 8c421ce8 lw v0,7400(v0)
-8002bbec: 00000000 nop
-8002bbf0: 10400006 beqz v0,8002bc0c <GsDrawListPIO+0x164>
-8002bbf4: 00000000 nop
- while(GsIsDrawing());
-8002bbf8: 00000000 nop
-8002bbfc: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-8002bc00: 00000000 nop
-8002bc04: 1440fffd bnez v0,8002bbfc <GsDrawListPIO+0x154>
-8002bc08: 00000000 nop
-}
-8002bc0c: 00000000 nop
-8002bc10: 03c0e821 move sp,s8
-8002bc14: 8fbf0024 lw ra,36(sp)
-8002bc18: 8fbe0020 lw s8,32(sp)
-8002bc1c: 27bd0028 addiu sp,sp,40
-8002bc20: 03e00008 jr ra
-8002bc24: 00000000 nop
-
-8002bc28 <GsSortPoly3>:
-
-void GsSortPoly3(GsPoly3 *poly3)
-{
-8002bc28: 27bdffd8 addiu sp,sp,-40
-8002bc2c: afbf0024 sw ra,36(sp)
-8002bc30: afbe0020 sw s8,32(sp)
-8002bc34: 03a0f021 move s8,sp
-8002bc38: afc40028 sw a0,40(s8)
- int orig_pos = linked_list_pos;
-8002bc3c: 3c028007 lui v0,0x8007
-8002bc40: 8c421cd8 lw v0,7384(v0)
-8002bc44: 00000000 nop
-8002bc48: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x20;
-8002bc4c: 24020020 li v0,32
-8002bc50: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, poly3->attribute, &pkt);
-8002bc54: 8fc20028 lw v0,40(s8)
-8002bc58: 00000000 nop
-8002bc5c: 8c420010 lw v0,16(v0)
-8002bc60: 27c3001c addiu v1,s8,28
-8002bc64: 00603021 move a2,v1
-8002bc68: 00402821 move a1,v0
-8002bc6c: 00002021 move a0,zero
-8002bc70: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002bc74: 00000000 nop
-8002bc78: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x05000000;
-8002bc7c: 3c028007 lui v0,0x8007
-8002bc80: 8c431cd4 lw v1,7380(v0)
-8002bc84: 3c028007 lui v0,0x8007
-8002bc88: 8c421cd8 lw v0,7384(v0)
-8002bc8c: 00000000 nop
-8002bc90: 24450001 addiu a1,v0,1
-8002bc94: 3c048007 lui a0,0x8007
-8002bc98: ac851cd8 sw a1,7384(a0)
-8002bc9c: 00021080 sll v0,v0,0x2
-8002bca0: 00621021 addu v0,v1,v0
-8002bca4: 3c030500 lui v1,0x500
-8002bca8: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002bcac: 3c028007 lui v0,0x8007
-8002bcb0: 8c431cd4 lw v1,7380(v0)
-8002bcb4: 3c028007 lui v0,0x8007
-8002bcb8: 8c421cd8 lw v0,7384(v0)
-8002bcbc: 00000000 nop
-8002bcc0: 24450001 addiu a1,v0,1
-8002bcc4: 3c048007 lui a0,0x8007
-8002bcc8: ac851cd8 sw a1,7384(a0)
-8002bccc: 00021080 sll v0,v0,0x2
-8002bcd0: 00621021 addu v0,v1,v0
-8002bcd4: 8fc30018 lw v1,24(s8)
-8002bcd8: 00000000 nop
-8002bcdc: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (pkt<<24)|(poly3->b<<16)|(poly3->g<<8)|(poly3->r);
-8002bce0: 3c028007 lui v0,0x8007
-8002bce4: 8c431cd4 lw v1,7380(v0)
-8002bce8: 3c028007 lui v0,0x8007
-8002bcec: 8c421cd8 lw v0,7384(v0)
-8002bcf0: 00000000 nop
-8002bcf4: 24450001 addiu a1,v0,1
-8002bcf8: 3c048007 lui a0,0x8007
-8002bcfc: ac851cd8 sw a1,7384(a0)
-8002bd00: 00021080 sll v0,v0,0x2
-8002bd04: 00621021 addu v0,v1,v0
-8002bd08: 93c3001c lbu v1,28(s8)
-8002bd0c: 00000000 nop
-8002bd10: 00032600 sll a0,v1,0x18
-8002bd14: 8fc30028 lw v1,40(s8)
-8002bd18: 00000000 nop
-8002bd1c: 90630002 lbu v1,2(v1)
-8002bd20: 00000000 nop
-8002bd24: 00031c00 sll v1,v1,0x10
-8002bd28: 00832025 or a0,a0,v1
-8002bd2c: 8fc30028 lw v1,40(s8)
-8002bd30: 00000000 nop
-8002bd34: 90630001 lbu v1,1(v1)
-8002bd38: 00000000 nop
-8002bd3c: 00031a00 sll v1,v1,0x8
-8002bd40: 00831825 or v1,a0,v1
-8002bd44: 8fc40028 lw a0,40(s8)
-8002bd48: 00000000 nop
-8002bd4c: 90840000 lbu a0,0(a0)
-8002bd50: 00000000 nop
-8002bd54: 00641825 or v1,v1,a0
-8002bd58: ac430000 sw v1,0(v0)
-
- for(x = 0; x < 3; x++)
-8002bd5c: afc00010 sw zero,16(s8)
-8002bd60: 10000025 b 8002bdf8 <GsSortPoly3+0x1d0>
-8002bd64: 00000000 nop
- linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff);
-8002bd68: 3c028007 lui v0,0x8007
-8002bd6c: 8c431cd4 lw v1,7380(v0)
-8002bd70: 3c028007 lui v0,0x8007
-8002bd74: 8c421cd8 lw v0,7384(v0)
-8002bd78: 00000000 nop
-8002bd7c: 24450001 addiu a1,v0,1
-8002bd80: 3c048007 lui a0,0x8007
-8002bd84: ac851cd8 sw a1,7384(a0)
-8002bd88: 00021080 sll v0,v0,0x2
-8002bd8c: 00621821 addu v1,v1,v0
-8002bd90: 8fc40028 lw a0,40(s8)
-8002bd94: 8fc20010 lw v0,16(s8)
-8002bd98: 00000000 nop
-8002bd9c: 24420004 addiu v0,v0,4
-8002bda0: 00021040 sll v0,v0,0x1
-8002bda4: 00821021 addu v0,a0,v0
-8002bda8: 84420002 lh v0,2(v0)
-8002bdac: 00000000 nop
-8002bdb0: 3042ffff andi v0,v0,0xffff
-8002bdb4: 304207ff andi v0,v0,0x7ff
-8002bdb8: 00022400 sll a0,v0,0x10
-8002bdbc: 8fc50028 lw a1,40(s8)
-8002bdc0: 8fc20010 lw v0,16(s8)
-8002bdc4: 00000000 nop
-8002bdc8: 00021040 sll v0,v0,0x1
-8002bdcc: 00a21021 addu v0,a1,v0
-8002bdd0: 84420004 lh v0,4(v0)
-8002bdd4: 00000000 nop
-8002bdd8: 3042ffff andi v0,v0,0xffff
-8002bddc: 304207ff andi v0,v0,0x7ff
-8002bde0: 00821025 or v0,a0,v0
-8002bde4: ac620000 sw v0,0(v1)
-
- linked_list[linked_list_pos++] = 0x05000000;
- linked_list[linked_list_pos++] = md;
- linked_list[linked_list_pos++] = (pkt<<24)|(poly3->b<<16)|(poly3->g<<8)|(poly3->r);
-
- for(x = 0; x < 3; x++)
-8002bde8: 8fc20010 lw v0,16(s8)
-8002bdec: 00000000 nop
-8002bdf0: 24420001 addiu v0,v0,1
-8002bdf4: afc20010 sw v0,16(s8)
-8002bdf8: 8fc20010 lw v0,16(s8)
-8002bdfc: 00000000 nop
-8002be00: 28420003 slti v0,v0,3
-8002be04: 1440ffd8 bnez v0,8002bd68 <GsSortPoly3+0x140>
-8002be08: 00000000 nop
- linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff);
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002be0c: 3c028007 lui v0,0x8007
-8002be10: 8c431cd4 lw v1,7380(v0)
-8002be14: 8fc20014 lw v0,20(s8)
-8002be18: 00000000 nop
-8002be1c: 00021080 sll v0,v0,0x2
-8002be20: 00621021 addu v0,v1,v0
-8002be24: 3c038007 lui v1,0x8007
-8002be28: 8c641cd4 lw a0,7380(v1)
-8002be2c: 8fc30014 lw v1,20(s8)
-8002be30: 00000000 nop
-8002be34: 00031880 sll v1,v1,0x2
-8002be38: 00831821 addu v1,a0,v1
-8002be3c: 8c640000 lw a0,0(v1)
-8002be40: 3c038007 lui v1,0x8007
-8002be44: 8c651cd4 lw a1,7380(v1)
-8002be48: 3c038007 lui v1,0x8007
-8002be4c: 8c631cd8 lw v1,7384(v1)
-8002be50: 00000000 nop
-8002be54: 00031880 sll v1,v1,0x2
-8002be58: 00a31821 addu v1,a1,v1
-8002be5c: 00602821 move a1,v1
-8002be60: 3c0300ff lui v1,0xff
-8002be64: 3463ffff ori v1,v1,0xffff
-8002be68: 00a31824 and v1,a1,v1
-8002be6c: 00831825 or v1,a0,v1
-8002be70: ac430000 sw v1,0(v0)
-}
-8002be74: 00000000 nop
-8002be78: 03c0e821 move sp,s8
-8002be7c: 8fbf0024 lw ra,36(sp)
-8002be80: 8fbe0020 lw s8,32(sp)
-8002be84: 27bd0028 addiu sp,sp,40
-8002be88: 03e00008 jr ra
-8002be8c: 00000000 nop
-
-8002be90 <GsSortPoly4>:
-
-void GsSortPoly4(GsPoly4 *poly4)
-{
-8002be90: 27bdffd8 addiu sp,sp,-40
-8002be94: afbf0024 sw ra,36(sp)
-8002be98: afbe0020 sw s8,32(sp)
-8002be9c: 03a0f021 move s8,sp
-8002bea0: afc40028 sw a0,40(s8)
- int orig_pos = linked_list_pos;
-8002bea4: 3c028007 lui v0,0x8007
-8002bea8: 8c421cd8 lw v0,7384(v0)
-8002beac: 00000000 nop
-8002beb0: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x28;
-8002beb4: 24020028 li v0,40
-8002beb8: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, poly4->attribute, &pkt);
-8002bebc: 8fc20028 lw v0,40(s8)
-8002bec0: 00000000 nop
-8002bec4: 8c420014 lw v0,20(v0)
-8002bec8: 27c3001c addiu v1,s8,28
-8002becc: 00603021 move a2,v1
-8002bed0: 00402821 move a1,v0
-8002bed4: 00002021 move a0,zero
-8002bed8: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002bedc: 00000000 nop
-8002bee0: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x06000000;
-8002bee4: 3c028007 lui v0,0x8007
-8002bee8: 8c431cd4 lw v1,7380(v0)
-8002beec: 3c028007 lui v0,0x8007
-8002bef0: 8c421cd8 lw v0,7384(v0)
-8002bef4: 00000000 nop
-8002bef8: 24450001 addiu a1,v0,1
-8002befc: 3c048007 lui a0,0x8007
-8002bf00: ac851cd8 sw a1,7384(a0)
-8002bf04: 00021080 sll v0,v0,0x2
-8002bf08: 00621021 addu v0,v1,v0
-8002bf0c: 3c030600 lui v1,0x600
-8002bf10: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002bf14: 3c028007 lui v0,0x8007
-8002bf18: 8c431cd4 lw v1,7380(v0)
-8002bf1c: 3c028007 lui v0,0x8007
-8002bf20: 8c421cd8 lw v0,7384(v0)
-8002bf24: 00000000 nop
-8002bf28: 24450001 addiu a1,v0,1
-8002bf2c: 3c048007 lui a0,0x8007
-8002bf30: ac851cd8 sw a1,7384(a0)
-8002bf34: 00021080 sll v0,v0,0x2
-8002bf38: 00621021 addu v0,v1,v0
-8002bf3c: 8fc30018 lw v1,24(s8)
-8002bf40: 00000000 nop
-8002bf44: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (pkt<<24)|(poly4->b<<16)|(poly4->g<<8)|(poly4->r);
-8002bf48: 3c028007 lui v0,0x8007
-8002bf4c: 8c431cd4 lw v1,7380(v0)
-8002bf50: 3c028007 lui v0,0x8007
-8002bf54: 8c421cd8 lw v0,7384(v0)
-8002bf58: 00000000 nop
-8002bf5c: 24450001 addiu a1,v0,1
-8002bf60: 3c048007 lui a0,0x8007
-8002bf64: ac851cd8 sw a1,7384(a0)
-8002bf68: 00021080 sll v0,v0,0x2
-8002bf6c: 00621021 addu v0,v1,v0
-8002bf70: 93c3001c lbu v1,28(s8)
-8002bf74: 00000000 nop
-8002bf78: 00032600 sll a0,v1,0x18
-8002bf7c: 8fc30028 lw v1,40(s8)
-8002bf80: 00000000 nop
-8002bf84: 90630002 lbu v1,2(v1)
-8002bf88: 00000000 nop
-8002bf8c: 00031c00 sll v1,v1,0x10
-8002bf90: 00832025 or a0,a0,v1
-8002bf94: 8fc30028 lw v1,40(s8)
-8002bf98: 00000000 nop
-8002bf9c: 90630001 lbu v1,1(v1)
-8002bfa0: 00000000 nop
-8002bfa4: 00031a00 sll v1,v1,0x8
-8002bfa8: 00831825 or v1,a0,v1
-8002bfac: 8fc40028 lw a0,40(s8)
-8002bfb0: 00000000 nop
-8002bfb4: 90840000 lbu a0,0(a0)
-8002bfb8: 00000000 nop
-8002bfbc: 00641825 or v1,v1,a0
-8002bfc0: ac430000 sw v1,0(v0)
-
- for(x = 0; x < 4; x++)
-8002bfc4: afc00010 sw zero,16(s8)
-8002bfc8: 10000025 b 8002c060 <GsSortPoly4+0x1d0>
-8002bfcc: 00000000 nop
- linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff);
-8002bfd0: 3c028007 lui v0,0x8007
-8002bfd4: 8c431cd4 lw v1,7380(v0)
-8002bfd8: 3c028007 lui v0,0x8007
-8002bfdc: 8c421cd8 lw v0,7384(v0)
-8002bfe0: 00000000 nop
-8002bfe4: 24450001 addiu a1,v0,1
-8002bfe8: 3c048007 lui a0,0x8007
-8002bfec: ac851cd8 sw a1,7384(a0)
-8002bff0: 00021080 sll v0,v0,0x2
-8002bff4: 00621821 addu v1,v1,v0
-8002bff8: 8fc40028 lw a0,40(s8)
-8002bffc: 8fc20010 lw v0,16(s8)
-8002c000: 00000000 nop
-8002c004: 24420004 addiu v0,v0,4
-8002c008: 00021040 sll v0,v0,0x1
-8002c00c: 00821021 addu v0,a0,v0
-8002c010: 84420004 lh v0,4(v0)
-8002c014: 00000000 nop
-8002c018: 3042ffff andi v0,v0,0xffff
-8002c01c: 304207ff andi v0,v0,0x7ff
-8002c020: 00022400 sll a0,v0,0x10
-8002c024: 8fc50028 lw a1,40(s8)
-8002c028: 8fc20010 lw v0,16(s8)
-8002c02c: 00000000 nop
-8002c030: 00021040 sll v0,v0,0x1
-8002c034: 00a21021 addu v0,a1,v0
-8002c038: 84420004 lh v0,4(v0)
-8002c03c: 00000000 nop
-8002c040: 3042ffff andi v0,v0,0xffff
-8002c044: 304207ff andi v0,v0,0x7ff
-8002c048: 00821025 or v0,a0,v0
-8002c04c: ac620000 sw v0,0(v1)
-
- linked_list[linked_list_pos++] = 0x06000000;
- linked_list[linked_list_pos++] = md;
- linked_list[linked_list_pos++] = (pkt<<24)|(poly4->b<<16)|(poly4->g<<8)|(poly4->r);
-
- for(x = 0; x < 4; x++)
-8002c050: 8fc20010 lw v0,16(s8)
-8002c054: 00000000 nop
-8002c058: 24420001 addiu v0,v0,1
-8002c05c: afc20010 sw v0,16(s8)
-8002c060: 8fc20010 lw v0,16(s8)
-8002c064: 00000000 nop
-8002c068: 28420004 slti v0,v0,4
-8002c06c: 1440ffd8 bnez v0,8002bfd0 <GsSortPoly4+0x140>
-8002c070: 00000000 nop
- linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff);
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002c074: 3c028007 lui v0,0x8007
-8002c078: 8c431cd4 lw v1,7380(v0)
-8002c07c: 8fc20014 lw v0,20(s8)
-8002c080: 00000000 nop
-8002c084: 00021080 sll v0,v0,0x2
-8002c088: 00621021 addu v0,v1,v0
-8002c08c: 3c038007 lui v1,0x8007
-8002c090: 8c641cd4 lw a0,7380(v1)
-8002c094: 8fc30014 lw v1,20(s8)
-8002c098: 00000000 nop
-8002c09c: 00031880 sll v1,v1,0x2
-8002c0a0: 00831821 addu v1,a0,v1
-8002c0a4: 8c640000 lw a0,0(v1)
-8002c0a8: 3c038007 lui v1,0x8007
-8002c0ac: 8c651cd4 lw a1,7380(v1)
-8002c0b0: 3c038007 lui v1,0x8007
-8002c0b4: 8c631cd8 lw v1,7384(v1)
-8002c0b8: 00000000 nop
-8002c0bc: 00031880 sll v1,v1,0x2
-8002c0c0: 00a31821 addu v1,a1,v1
-8002c0c4: 00602821 move a1,v1
-8002c0c8: 3c0300ff lui v1,0xff
-8002c0cc: 3463ffff ori v1,v1,0xffff
-8002c0d0: 00a31824 and v1,a1,v1
-8002c0d4: 00831825 or v1,a0,v1
-8002c0d8: ac430000 sw v1,0(v0)
-}
-8002c0dc: 00000000 nop
-8002c0e0: 03c0e821 move sp,s8
-8002c0e4: 8fbf0024 lw ra,36(sp)
-8002c0e8: 8fbe0020 lw s8,32(sp)
-8002c0ec: 27bd0028 addiu sp,sp,40
-8002c0f0: 03e00008 jr ra
-8002c0f4: 00000000 nop
-
-8002c0f8 <GsSortGPoly3>:
-
-void GsSortGPoly3(GsGPoly3 *poly3)
-{
-8002c0f8: 27bdffd8 addiu sp,sp,-40
-8002c0fc: afbf0024 sw ra,36(sp)
-8002c100: afbe0020 sw s8,32(sp)
-8002c104: 03a0f021 move s8,sp
-8002c108: afc40028 sw a0,40(s8)
- // PKT 0x30
-
- int orig_pos = linked_list_pos;
-8002c10c: 3c028007 lui v0,0x8007
-8002c110: 8c421cd8 lw v0,7384(v0)
-8002c114: 00000000 nop
-8002c118: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x30;
-8002c11c: 24020030 li v0,48
-8002c120: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, poly3->attribute, &pkt);
-8002c124: 8fc20028 lw v0,40(s8)
-8002c128: 00000000 nop
-8002c12c: 8c420018 lw v0,24(v0)
-8002c130: 27c3001c addiu v1,s8,28
-8002c134: 00603021 move a2,v1
-8002c138: 00402821 move a1,v0
-8002c13c: 00002021 move a0,zero
-8002c140: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002c144: 00000000 nop
-8002c148: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x07000000;
-8002c14c: 3c028007 lui v0,0x8007
-8002c150: 8c431cd4 lw v1,7380(v0)
-8002c154: 3c028007 lui v0,0x8007
-8002c158: 8c421cd8 lw v0,7384(v0)
-8002c15c: 00000000 nop
-8002c160: 24450001 addiu a1,v0,1
-8002c164: 3c048007 lui a0,0x8007
-8002c168: ac851cd8 sw a1,7384(a0)
-8002c16c: 00021080 sll v0,v0,0x2
-8002c170: 00621021 addu v0,v1,v0
-8002c174: 3c030700 lui v1,0x700
-8002c178: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002c17c: 3c028007 lui v0,0x8007
-8002c180: 8c431cd4 lw v1,7380(v0)
-8002c184: 3c028007 lui v0,0x8007
-8002c188: 8c421cd8 lw v0,7384(v0)
-8002c18c: 00000000 nop
-8002c190: 24450001 addiu a1,v0,1
-8002c194: 3c048007 lui a0,0x8007
-8002c198: ac851cd8 sw a1,7384(a0)
-8002c19c: 00021080 sll v0,v0,0x2
-8002c1a0: 00621021 addu v0,v1,v0
-8002c1a4: 8fc30018 lw v1,24(s8)
-8002c1a8: 00000000 nop
-8002c1ac: ac430000 sw v1,0(v0)
-
- for(x = 0; x < 3; x++)
-8002c1b0: afc00010 sw zero,16(s8)
-8002c1b4: 10000052 b 8002c300 <GsSortGPoly3+0x208>
-8002c1b8: 00000000 nop
- {
- linked_list[linked_list_pos++] = (poly3->b[x]<<16)|(poly3->g[x]<<8)|(poly3->r[x]) | ((x == 0)?(pkt<<24):0);
-8002c1bc: 3c028007 lui v0,0x8007
-8002c1c0: 8c431cd4 lw v1,7380(v0)
-8002c1c4: 3c028007 lui v0,0x8007
-8002c1c8: 8c421cd8 lw v0,7384(v0)
-8002c1cc: 00000000 nop
-8002c1d0: 24450001 addiu a1,v0,1
-8002c1d4: 3c048007 lui a0,0x8007
-8002c1d8: ac851cd8 sw a1,7384(a0)
-8002c1dc: 00021080 sll v0,v0,0x2
-8002c1e0: 00621821 addu v1,v1,v0
-8002c1e4: 8fc40028 lw a0,40(s8)
-8002c1e8: 8fc20010 lw v0,16(s8)
-8002c1ec: 00000000 nop
-8002c1f0: 00821021 addu v0,a0,v0
-8002c1f4: 90420006 lbu v0,6(v0)
-8002c1f8: 00000000 nop
-8002c1fc: 00022400 sll a0,v0,0x10
-8002c200: 8fc50028 lw a1,40(s8)
-8002c204: 8fc20010 lw v0,16(s8)
-8002c208: 00000000 nop
-8002c20c: 00a21021 addu v0,a1,v0
-8002c210: 90420003 lbu v0,3(v0)
-8002c214: 00000000 nop
-8002c218: 00021200 sll v0,v0,0x8
-8002c21c: 00821025 or v0,a0,v0
-8002c220: 8fc50028 lw a1,40(s8)
-8002c224: 8fc40010 lw a0,16(s8)
-8002c228: 00000000 nop
-8002c22c: 00a42021 addu a0,a1,a0
-8002c230: 90840000 lbu a0,0(a0)
-8002c234: 00000000 nop
-8002c238: 00442025 or a0,v0,a0
-8002c23c: 8fc20010 lw v0,16(s8)
-8002c240: 00000000 nop
-8002c244: 14400006 bnez v0,8002c260 <GsSortGPoly3+0x168>
-8002c248: 00000000 nop
-8002c24c: 93c2001c lbu v0,28(s8)
-8002c250: 00000000 nop
-8002c254: 00021600 sll v0,v0,0x18
-8002c258: 10000002 b 8002c264 <GsSortGPoly3+0x16c>
-8002c25c: 00000000 nop
-8002c260: 00001021 move v0,zero
-8002c264: 00821025 or v0,a0,v0
-8002c268: ac620000 sw v0,0(v1)
- linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff);
-8002c26c: 3c028007 lui v0,0x8007
-8002c270: 8c431cd4 lw v1,7380(v0)
-8002c274: 3c028007 lui v0,0x8007
-8002c278: 8c421cd8 lw v0,7384(v0)
-8002c27c: 00000000 nop
-8002c280: 24450001 addiu a1,v0,1
-8002c284: 3c048007 lui a0,0x8007
-8002c288: ac851cd8 sw a1,7384(a0)
-8002c28c: 00021080 sll v0,v0,0x2
-8002c290: 00621821 addu v1,v1,v0
-8002c294: 8fc40028 lw a0,40(s8)
-8002c298: 8fc20010 lw v0,16(s8)
-8002c29c: 00000000 nop
-8002c2a0: 24420008 addiu v0,v0,8
-8002c2a4: 00021040 sll v0,v0,0x1
-8002c2a8: 00821021 addu v0,a0,v0
-8002c2ac: 84420000 lh v0,0(v0)
-8002c2b0: 00000000 nop
-8002c2b4: 3042ffff andi v0,v0,0xffff
-8002c2b8: 304207ff andi v0,v0,0x7ff
-8002c2bc: 00022400 sll a0,v0,0x10
-8002c2c0: 8fc50028 lw a1,40(s8)
-8002c2c4: 8fc20010 lw v0,16(s8)
-8002c2c8: 00000000 nop
-8002c2cc: 24420004 addiu v0,v0,4
-8002c2d0: 00021040 sll v0,v0,0x1
-8002c2d4: 00a21021 addu v0,a1,v0
-8002c2d8: 84420002 lh v0,2(v0)
-8002c2dc: 00000000 nop
-8002c2e0: 3042ffff andi v0,v0,0xffff
-8002c2e4: 304207ff andi v0,v0,0x7ff
-8002c2e8: 00821025 or v0,a0,v0
-8002c2ec: ac620000 sw v0,0(v1)
- md = setup_attribs(0, poly3->attribute, &pkt);
-
- linked_list[linked_list_pos++] = 0x07000000;
- linked_list[linked_list_pos++] = md;
-
- for(x = 0; x < 3; x++)
-8002c2f0: 8fc20010 lw v0,16(s8)
-8002c2f4: 00000000 nop
-8002c2f8: 24420001 addiu v0,v0,1
-8002c2fc: afc20010 sw v0,16(s8)
-8002c300: 8fc20010 lw v0,16(s8)
-8002c304: 00000000 nop
-8002c308: 28420003 slti v0,v0,3
-8002c30c: 1440ffab bnez v0,8002c1bc <GsSortGPoly3+0xc4>
-8002c310: 00000000 nop
- {
- linked_list[linked_list_pos++] = (poly3->b[x]<<16)|(poly3->g[x]<<8)|(poly3->r[x]) | ((x == 0)?(pkt<<24):0);
- linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff);
- }
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002c314: 3c028007 lui v0,0x8007
-8002c318: 8c431cd4 lw v1,7380(v0)
-8002c31c: 8fc20014 lw v0,20(s8)
-8002c320: 00000000 nop
-8002c324: 00021080 sll v0,v0,0x2
-8002c328: 00621021 addu v0,v1,v0
-8002c32c: 3c038007 lui v1,0x8007
-8002c330: 8c641cd4 lw a0,7380(v1)
-8002c334: 8fc30014 lw v1,20(s8)
-8002c338: 00000000 nop
-8002c33c: 00031880 sll v1,v1,0x2
-8002c340: 00831821 addu v1,a0,v1
-8002c344: 8c640000 lw a0,0(v1)
-8002c348: 3c038007 lui v1,0x8007
-8002c34c: 8c651cd4 lw a1,7380(v1)
-8002c350: 3c038007 lui v1,0x8007
-8002c354: 8c631cd8 lw v1,7384(v1)
-8002c358: 00000000 nop
-8002c35c: 00031880 sll v1,v1,0x2
-8002c360: 00a31821 addu v1,a1,v1
-8002c364: 00602821 move a1,v1
-8002c368: 3c0300ff lui v1,0xff
-8002c36c: 3463ffff ori v1,v1,0xffff
-8002c370: 00a31824 and v1,a1,v1
-8002c374: 00831825 or v1,a0,v1
-8002c378: ac430000 sw v1,0(v0)
-}
-8002c37c: 00000000 nop
-8002c380: 03c0e821 move sp,s8
-8002c384: 8fbf0024 lw ra,36(sp)
-8002c388: 8fbe0020 lw s8,32(sp)
-8002c38c: 27bd0028 addiu sp,sp,40
-8002c390: 03e00008 jr ra
-8002c394: 00000000 nop
-
-8002c398 <GsSortGPoly4>:
-
-void GsSortGPoly4(GsGPoly4 *poly4)
-{
-8002c398: 27bdffd8 addiu sp,sp,-40
-8002c39c: afbf0024 sw ra,36(sp)
-8002c3a0: afbe0020 sw s8,32(sp)
-8002c3a4: 03a0f021 move s8,sp
-8002c3a8: afc40028 sw a0,40(s8)
- // PKT 0x38
-
- int orig_pos = linked_list_pos;
-8002c3ac: 3c028007 lui v0,0x8007
-8002c3b0: 8c421cd8 lw v0,7384(v0)
-8002c3b4: 00000000 nop
-8002c3b8: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x38;
-8002c3bc: 24020038 li v0,56
-8002c3c0: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, poly4->attribute, &pkt);
-8002c3c4: 8fc20028 lw v0,40(s8)
-8002c3c8: 00000000 nop
-8002c3cc: 8c42001c lw v0,28(v0)
-8002c3d0: 27c3001c addiu v1,s8,28
-8002c3d4: 00603021 move a2,v1
-8002c3d8: 00402821 move a1,v0
-8002c3dc: 00002021 move a0,zero
-8002c3e0: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002c3e4: 00000000 nop
-8002c3e8: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x09000000;
-8002c3ec: 3c028007 lui v0,0x8007
-8002c3f0: 8c431cd4 lw v1,7380(v0)
-8002c3f4: 3c028007 lui v0,0x8007
-8002c3f8: 8c421cd8 lw v0,7384(v0)
-8002c3fc: 00000000 nop
-8002c400: 24450001 addiu a1,v0,1
-8002c404: 3c048007 lui a0,0x8007
-8002c408: ac851cd8 sw a1,7384(a0)
-8002c40c: 00021080 sll v0,v0,0x2
-8002c410: 00621021 addu v0,v1,v0
-8002c414: 3c030900 lui v1,0x900
-8002c418: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002c41c: 3c028007 lui v0,0x8007
-8002c420: 8c431cd4 lw v1,7380(v0)
-8002c424: 3c028007 lui v0,0x8007
-8002c428: 8c421cd8 lw v0,7384(v0)
-8002c42c: 00000000 nop
-8002c430: 24450001 addiu a1,v0,1
-8002c434: 3c048007 lui a0,0x8007
-8002c438: ac851cd8 sw a1,7384(a0)
-8002c43c: 00021080 sll v0,v0,0x2
-8002c440: 00621021 addu v0,v1,v0
-8002c444: 8fc30018 lw v1,24(s8)
-8002c448: 00000000 nop
-8002c44c: ac430000 sw v1,0(v0)
-
- for(x = 0; x < 4; x++)
-8002c450: afc00010 sw zero,16(s8)
-8002c454: 10000052 b 8002c5a0 <GsSortGPoly4+0x208>
-8002c458: 00000000 nop
- {
- linked_list[linked_list_pos++] = (poly4->b[x]<<16)|(poly4->g[x]<<8)|(poly4->r[x]) | ((x == 0)?(pkt<<24):0);
-8002c45c: 3c028007 lui v0,0x8007
-8002c460: 8c431cd4 lw v1,7380(v0)
-8002c464: 3c028007 lui v0,0x8007
-8002c468: 8c421cd8 lw v0,7384(v0)
-8002c46c: 00000000 nop
-8002c470: 24450001 addiu a1,v0,1
-8002c474: 3c048007 lui a0,0x8007
-8002c478: ac851cd8 sw a1,7384(a0)
-8002c47c: 00021080 sll v0,v0,0x2
-8002c480: 00621821 addu v1,v1,v0
-8002c484: 8fc40028 lw a0,40(s8)
-8002c488: 8fc20010 lw v0,16(s8)
-8002c48c: 00000000 nop
-8002c490: 00821021 addu v0,a0,v0
-8002c494: 90420008 lbu v0,8(v0)
-8002c498: 00000000 nop
-8002c49c: 00022400 sll a0,v0,0x10
-8002c4a0: 8fc50028 lw a1,40(s8)
-8002c4a4: 8fc20010 lw v0,16(s8)
-8002c4a8: 00000000 nop
-8002c4ac: 00a21021 addu v0,a1,v0
-8002c4b0: 90420004 lbu v0,4(v0)
-8002c4b4: 00000000 nop
-8002c4b8: 00021200 sll v0,v0,0x8
-8002c4bc: 00821025 or v0,a0,v0
-8002c4c0: 8fc50028 lw a1,40(s8)
-8002c4c4: 8fc40010 lw a0,16(s8)
-8002c4c8: 00000000 nop
-8002c4cc: 00a42021 addu a0,a1,a0
-8002c4d0: 90840000 lbu a0,0(a0)
-8002c4d4: 00000000 nop
-8002c4d8: 00442025 or a0,v0,a0
-8002c4dc: 8fc20010 lw v0,16(s8)
-8002c4e0: 00000000 nop
-8002c4e4: 14400006 bnez v0,8002c500 <GsSortGPoly4+0x168>
-8002c4e8: 00000000 nop
-8002c4ec: 93c2001c lbu v0,28(s8)
-8002c4f0: 00000000 nop
-8002c4f4: 00021600 sll v0,v0,0x18
-8002c4f8: 10000002 b 8002c504 <GsSortGPoly4+0x16c>
-8002c4fc: 00000000 nop
-8002c500: 00001021 move v0,zero
-8002c504: 00821025 or v0,a0,v0
-8002c508: ac620000 sw v0,0(v1)
- linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff);
-8002c50c: 3c028007 lui v0,0x8007
-8002c510: 8c431cd4 lw v1,7380(v0)
-8002c514: 3c028007 lui v0,0x8007
-8002c518: 8c421cd8 lw v0,7384(v0)
-8002c51c: 00000000 nop
-8002c520: 24450001 addiu a1,v0,1
-8002c524: 3c048007 lui a0,0x8007
-8002c528: ac851cd8 sw a1,7384(a0)
-8002c52c: 00021080 sll v0,v0,0x2
-8002c530: 00621821 addu v1,v1,v0
-8002c534: 8fc40028 lw a0,40(s8)
-8002c538: 8fc20010 lw v0,16(s8)
-8002c53c: 00000000 nop
-8002c540: 24420008 addiu v0,v0,8
-8002c544: 00021040 sll v0,v0,0x1
-8002c548: 00821021 addu v0,a0,v0
-8002c54c: 84420004 lh v0,4(v0)
-8002c550: 00000000 nop
-8002c554: 3042ffff andi v0,v0,0xffff
-8002c558: 304207ff andi v0,v0,0x7ff
-8002c55c: 00022400 sll a0,v0,0x10
-8002c560: 8fc50028 lw a1,40(s8)
-8002c564: 8fc20010 lw v0,16(s8)
-8002c568: 00000000 nop
-8002c56c: 24420004 addiu v0,v0,4
-8002c570: 00021040 sll v0,v0,0x1
-8002c574: 00a21021 addu v0,a1,v0
-8002c578: 84420004 lh v0,4(v0)
-8002c57c: 00000000 nop
-8002c580: 3042ffff andi v0,v0,0xffff
-8002c584: 304207ff andi v0,v0,0x7ff
-8002c588: 00821025 or v0,a0,v0
-8002c58c: ac620000 sw v0,0(v1)
- md = setup_attribs(0, poly4->attribute, &pkt);
-
- linked_list[linked_list_pos++] = 0x09000000;
- linked_list[linked_list_pos++] = md;
-
- for(x = 0; x < 4; x++)
-8002c590: 8fc20010 lw v0,16(s8)
-8002c594: 00000000 nop
-8002c598: 24420001 addiu v0,v0,1
-8002c59c: afc20010 sw v0,16(s8)
-8002c5a0: 8fc20010 lw v0,16(s8)
-8002c5a4: 00000000 nop
-8002c5a8: 28420004 slti v0,v0,4
-8002c5ac: 1440ffab bnez v0,8002c45c <GsSortGPoly4+0xc4>
-8002c5b0: 00000000 nop
- {
- linked_list[linked_list_pos++] = (poly4->b[x]<<16)|(poly4->g[x]<<8)|(poly4->r[x]) | ((x == 0)?(pkt<<24):0);
- linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff);
- }
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002c5b4: 3c028007 lui v0,0x8007
-8002c5b8: 8c431cd4 lw v1,7380(v0)
-8002c5bc: 8fc20014 lw v0,20(s8)
-8002c5c0: 00000000 nop
-8002c5c4: 00021080 sll v0,v0,0x2
-8002c5c8: 00621021 addu v0,v1,v0
-8002c5cc: 3c038007 lui v1,0x8007
-8002c5d0: 8c641cd4 lw a0,7380(v1)
-8002c5d4: 8fc30014 lw v1,20(s8)
-8002c5d8: 00000000 nop
-8002c5dc: 00031880 sll v1,v1,0x2
-8002c5e0: 00831821 addu v1,a0,v1
-8002c5e4: 8c640000 lw a0,0(v1)
-8002c5e8: 3c038007 lui v1,0x8007
-8002c5ec: 8c651cd4 lw a1,7380(v1)
-8002c5f0: 3c038007 lui v1,0x8007
-8002c5f4: 8c631cd8 lw v1,7384(v1)
-8002c5f8: 00000000 nop
-8002c5fc: 00031880 sll v1,v1,0x2
-8002c600: 00a31821 addu v1,a1,v1
-8002c604: 00602821 move a1,v1
-8002c608: 3c0300ff lui v1,0xff
-8002c60c: 3463ffff ori v1,v1,0xffff
-8002c610: 00a31824 and v1,a1,v1
-8002c614: 00831825 or v1,a0,v1
-8002c618: ac430000 sw v1,0(v0)
-}
-8002c61c: 00000000 nop
-8002c620: 03c0e821 move sp,s8
-8002c624: 8fbf0024 lw ra,36(sp)
-8002c628: 8fbe0020 lw s8,32(sp)
-8002c62c: 27bd0028 addiu sp,sp,40
-8002c630: 03e00008 jr ra
-8002c634: 00000000 nop
-
-8002c638 <GsSortLine>:
-
-void GsSortLine(GsLine *line)
-{
-8002c638: 27bdffd8 addiu sp,sp,-40
-8002c63c: afbf0024 sw ra,36(sp)
-8002c640: afbe0020 sw s8,32(sp)
-8002c644: 03a0f021 move s8,sp
-8002c648: afc40028 sw a0,40(s8)
- // PKT 0x40
-
- int orig_pos = linked_list_pos;
-8002c64c: 3c028007 lui v0,0x8007
-8002c650: 8c421cd8 lw v0,7384(v0)
-8002c654: 00000000 nop
-8002c658: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x40;
-8002c65c: 24020040 li v0,64
-8002c660: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, line->attribute, &pkt);
-8002c664: 8fc20028 lw v0,40(s8)
-8002c668: 00000000 nop
-8002c66c: 8c42000c lw v0,12(v0)
-8002c670: 27c3001c addiu v1,s8,28
-8002c674: 00603021 move a2,v1
-8002c678: 00402821 move a1,v0
-8002c67c: 00002021 move a0,zero
-8002c680: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002c684: 00000000 nop
-8002c688: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x04000000;
-8002c68c: 3c028007 lui v0,0x8007
-8002c690: 8c431cd4 lw v1,7380(v0)
-8002c694: 3c028007 lui v0,0x8007
-8002c698: 8c421cd8 lw v0,7384(v0)
-8002c69c: 00000000 nop
-8002c6a0: 24450001 addiu a1,v0,1
-8002c6a4: 3c048007 lui a0,0x8007
-8002c6a8: ac851cd8 sw a1,7384(a0)
-8002c6ac: 00021080 sll v0,v0,0x2
-8002c6b0: 00621021 addu v0,v1,v0
-8002c6b4: 3c030400 lui v1,0x400
-8002c6b8: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002c6bc: 3c028007 lui v0,0x8007
-8002c6c0: 8c431cd4 lw v1,7380(v0)
-8002c6c4: 3c028007 lui v0,0x8007
-8002c6c8: 8c421cd8 lw v0,7384(v0)
-8002c6cc: 00000000 nop
-8002c6d0: 24450001 addiu a1,v0,1
-8002c6d4: 3c048007 lui a0,0x8007
-8002c6d8: ac851cd8 sw a1,7384(a0)
-8002c6dc: 00021080 sll v0,v0,0x2
-8002c6e0: 00621021 addu v0,v1,v0
-8002c6e4: 8fc30018 lw v1,24(s8)
-8002c6e8: 00000000 nop
-8002c6ec: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r);
-8002c6f0: 3c028007 lui v0,0x8007
-8002c6f4: 8c431cd4 lw v1,7380(v0)
-8002c6f8: 3c028007 lui v0,0x8007
-8002c6fc: 8c421cd8 lw v0,7384(v0)
-8002c700: 00000000 nop
-8002c704: 24450001 addiu a1,v0,1
-8002c708: 3c048007 lui a0,0x8007
-8002c70c: ac851cd8 sw a1,7384(a0)
-8002c710: 00021080 sll v0,v0,0x2
-8002c714: 00621021 addu v0,v1,v0
-8002c718: 93c3001c lbu v1,28(s8)
-8002c71c: 00000000 nop
-8002c720: 00032600 sll a0,v1,0x18
-8002c724: 8fc30028 lw v1,40(s8)
-8002c728: 00000000 nop
-8002c72c: 90630002 lbu v1,2(v1)
-8002c730: 00000000 nop
-8002c734: 00031c00 sll v1,v1,0x10
-8002c738: 00832025 or a0,a0,v1
-8002c73c: 8fc30028 lw v1,40(s8)
-8002c740: 00000000 nop
-8002c744: 90630001 lbu v1,1(v1)
-8002c748: 00000000 nop
-8002c74c: 00031a00 sll v1,v1,0x8
-8002c750: 00831825 or v1,a0,v1
-8002c754: 8fc40028 lw a0,40(s8)
-8002c758: 00000000 nop
-8002c75c: 90840000 lbu a0,0(a0)
-8002c760: 00000000 nop
-8002c764: 00641825 or v1,v1,a0
-8002c768: ac430000 sw v1,0(v0)
-
- for(x = 0; x < 2; x++)
-8002c76c: afc00010 sw zero,16(s8)
-8002c770: 10000025 b 8002c808 <GsSortLine+0x1d0>
-8002c774: 00000000 nop
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff);
-8002c778: 3c028007 lui v0,0x8007
-8002c77c: 8c431cd4 lw v1,7380(v0)
-8002c780: 3c028007 lui v0,0x8007
-8002c784: 8c421cd8 lw v0,7384(v0)
-8002c788: 00000000 nop
-8002c78c: 24450001 addiu a1,v0,1
-8002c790: 3c048007 lui a0,0x8007
-8002c794: ac851cd8 sw a1,7384(a0)
-8002c798: 00021080 sll v0,v0,0x2
-8002c79c: 00621821 addu v1,v1,v0
-8002c7a0: 8fc40028 lw a0,40(s8)
-8002c7a4: 8fc20010 lw v0,16(s8)
-8002c7a8: 00000000 nop
-8002c7ac: 24420004 addiu v0,v0,4
-8002c7b0: 00021040 sll v0,v0,0x1
-8002c7b4: 00821021 addu v0,a0,v0
-8002c7b8: 84420000 lh v0,0(v0)
-8002c7bc: 00000000 nop
-8002c7c0: 3042ffff andi v0,v0,0xffff
-8002c7c4: 304207ff andi v0,v0,0x7ff
-8002c7c8: 00022400 sll a0,v0,0x10
-8002c7cc: 8fc50028 lw a1,40(s8)
-8002c7d0: 8fc20010 lw v0,16(s8)
-8002c7d4: 00000000 nop
-8002c7d8: 00021040 sll v0,v0,0x1
-8002c7dc: 00a21021 addu v0,a1,v0
-8002c7e0: 84420004 lh v0,4(v0)
-8002c7e4: 00000000 nop
-8002c7e8: 3042ffff andi v0,v0,0xffff
-8002c7ec: 304207ff andi v0,v0,0x7ff
-8002c7f0: 00821025 or v0,a0,v0
-8002c7f4: ac620000 sw v0,0(v1)
-
- linked_list[linked_list_pos++] = 0x04000000;
- linked_list[linked_list_pos++] = md;
- linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r);
-
- for(x = 0; x < 2; x++)
-8002c7f8: 8fc20010 lw v0,16(s8)
-8002c7fc: 00000000 nop
-8002c800: 24420001 addiu v0,v0,1
-8002c804: afc20010 sw v0,16(s8)
-8002c808: 8fc20010 lw v0,16(s8)
-8002c80c: 00000000 nop
-8002c810: 28420002 slti v0,v0,2
-8002c814: 1440ffd8 bnez v0,8002c778 <GsSortLine+0x140>
-8002c818: 00000000 nop
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff);
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002c81c: 3c028007 lui v0,0x8007
-8002c820: 8c431cd4 lw v1,7380(v0)
-8002c824: 8fc20014 lw v0,20(s8)
-8002c828: 00000000 nop
-8002c82c: 00021080 sll v0,v0,0x2
-8002c830: 00621021 addu v0,v1,v0
-8002c834: 3c038007 lui v1,0x8007
-8002c838: 8c641cd4 lw a0,7380(v1)
-8002c83c: 8fc30014 lw v1,20(s8)
-8002c840: 00000000 nop
-8002c844: 00031880 sll v1,v1,0x2
-8002c848: 00831821 addu v1,a0,v1
-8002c84c: 8c640000 lw a0,0(v1)
-8002c850: 3c038007 lui v1,0x8007
-8002c854: 8c651cd4 lw a1,7380(v1)
-8002c858: 3c038007 lui v1,0x8007
-8002c85c: 8c631cd8 lw v1,7384(v1)
-8002c860: 00000000 nop
-8002c864: 00031880 sll v1,v1,0x2
-8002c868: 00a31821 addu v1,a1,v1
-8002c86c: 00602821 move a1,v1
-8002c870: 3c0300ff lui v1,0xff
-8002c874: 3463ffff ori v1,v1,0xffff
-8002c878: 00a31824 and v1,a1,v1
-8002c87c: 00831825 or v1,a0,v1
-8002c880: ac430000 sw v1,0(v0)
-}
-8002c884: 00000000 nop
-8002c888: 03c0e821 move sp,s8
-8002c88c: 8fbf0024 lw ra,36(sp)
-8002c890: 8fbe0020 lw s8,32(sp)
-8002c894: 27bd0028 addiu sp,sp,40
-8002c898: 03e00008 jr ra
-8002c89c: 00000000 nop
-
-8002c8a0 <GsSortGLine>:
-
-void GsSortGLine(GsGLine *line)
-{
-8002c8a0: 27bdffd8 addiu sp,sp,-40
-8002c8a4: afbf0024 sw ra,36(sp)
-8002c8a8: afbe0020 sw s8,32(sp)
-8002c8ac: 03a0f021 move s8,sp
-8002c8b0: afc40028 sw a0,40(s8)
- // PKT 0x50
-
- int orig_pos = linked_list_pos;
-8002c8b4: 3c028007 lui v0,0x8007
-8002c8b8: 8c421cd8 lw v0,7384(v0)
-8002c8bc: 00000000 nop
-8002c8c0: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x50;
-8002c8c4: 24020050 li v0,80
-8002c8c8: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, line->attribute, &pkt);
-8002c8cc: 8fc20028 lw v0,40(s8)
-8002c8d0: 00000000 nop
-8002c8d4: 8c420010 lw v0,16(v0)
-8002c8d8: 27c3001c addiu v1,s8,28
-8002c8dc: 00603021 move a2,v1
-8002c8e0: 00402821 move a1,v0
-8002c8e4: 00002021 move a0,zero
-8002c8e8: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002c8ec: 00000000 nop
-8002c8f0: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x05000000;
-8002c8f4: 3c028007 lui v0,0x8007
-8002c8f8: 8c431cd4 lw v1,7380(v0)
-8002c8fc: 3c028007 lui v0,0x8007
-8002c900: 8c421cd8 lw v0,7384(v0)
-8002c904: 00000000 nop
-8002c908: 24450001 addiu a1,v0,1
-8002c90c: 3c048007 lui a0,0x8007
-8002c910: ac851cd8 sw a1,7384(a0)
-8002c914: 00021080 sll v0,v0,0x2
-8002c918: 00621021 addu v0,v1,v0
-8002c91c: 3c030500 lui v1,0x500
-8002c920: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002c924: 3c028007 lui v0,0x8007
-8002c928: 8c431cd4 lw v1,7380(v0)
-8002c92c: 3c028007 lui v0,0x8007
-8002c930: 8c421cd8 lw v0,7384(v0)
-8002c934: 00000000 nop
-8002c938: 24450001 addiu a1,v0,1
-8002c93c: 3c048007 lui a0,0x8007
-8002c940: ac851cd8 sw a1,7384(a0)
-8002c944: 00021080 sll v0,v0,0x2
-8002c948: 00621021 addu v0,v1,v0
-8002c94c: 8fc30018 lw v1,24(s8)
-8002c950: 00000000 nop
-8002c954: ac430000 sw v1,0(v0)
-
- for(x=0;x<2;x++)
-8002c958: afc00010 sw zero,16(s8)
-8002c95c: 10000051 b 8002caa4 <GsSortGLine+0x204>
-8002c960: 00000000 nop
- {
- linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0);
-8002c964: 3c028007 lui v0,0x8007
-8002c968: 8c431cd4 lw v1,7380(v0)
-8002c96c: 3c028007 lui v0,0x8007
-8002c970: 8c421cd8 lw v0,7384(v0)
-8002c974: 00000000 nop
-8002c978: 24450001 addiu a1,v0,1
-8002c97c: 3c048007 lui a0,0x8007
-8002c980: ac851cd8 sw a1,7384(a0)
-8002c984: 00021080 sll v0,v0,0x2
-8002c988: 00621821 addu v1,v1,v0
-8002c98c: 8fc40028 lw a0,40(s8)
-8002c990: 8fc20010 lw v0,16(s8)
-8002c994: 00000000 nop
-8002c998: 00821021 addu v0,a0,v0
-8002c99c: 90420004 lbu v0,4(v0)
-8002c9a0: 00000000 nop
-8002c9a4: 00022400 sll a0,v0,0x10
-8002c9a8: 8fc50028 lw a1,40(s8)
-8002c9ac: 8fc20010 lw v0,16(s8)
-8002c9b0: 00000000 nop
-8002c9b4: 00a21021 addu v0,a1,v0
-8002c9b8: 90420002 lbu v0,2(v0)
-8002c9bc: 00000000 nop
-8002c9c0: 00021200 sll v0,v0,0x8
-8002c9c4: 00821025 or v0,a0,v0
-8002c9c8: 8fc50028 lw a1,40(s8)
-8002c9cc: 8fc40010 lw a0,16(s8)
-8002c9d0: 00000000 nop
-8002c9d4: 00a42021 addu a0,a1,a0
-8002c9d8: 90840000 lbu a0,0(a0)
-8002c9dc: 00000000 nop
-8002c9e0: 00442025 or a0,v0,a0
-8002c9e4: 8fc20010 lw v0,16(s8)
-8002c9e8: 00000000 nop
-8002c9ec: 14400006 bnez v0,8002ca08 <GsSortGLine+0x168>
-8002c9f0: 00000000 nop
-8002c9f4: 93c2001c lbu v0,28(s8)
-8002c9f8: 00000000 nop
-8002c9fc: 00021600 sll v0,v0,0x18
-8002ca00: 10000002 b 8002ca0c <GsSortGLine+0x16c>
-8002ca04: 00000000 nop
-8002ca08: 00001021 move v0,zero
-8002ca0c: 00821025 or v0,a0,v0
-8002ca10: ac620000 sw v0,0(v1)
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff);
-8002ca14: 3c028007 lui v0,0x8007
-8002ca18: 8c431cd4 lw v1,7380(v0)
-8002ca1c: 3c028007 lui v0,0x8007
-8002ca20: 8c421cd8 lw v0,7384(v0)
-8002ca24: 00000000 nop
-8002ca28: 24450001 addiu a1,v0,1
-8002ca2c: 3c048007 lui a0,0x8007
-8002ca30: ac851cd8 sw a1,7384(a0)
-8002ca34: 00021080 sll v0,v0,0x2
-8002ca38: 00621821 addu v1,v1,v0
-8002ca3c: 8fc40028 lw a0,40(s8)
-8002ca40: 8fc20010 lw v0,16(s8)
-8002ca44: 00000000 nop
-8002ca48: 24420004 addiu v0,v0,4
-8002ca4c: 00021040 sll v0,v0,0x1
-8002ca50: 00821021 addu v0,a0,v0
-8002ca54: 84420002 lh v0,2(v0)
-8002ca58: 00000000 nop
-8002ca5c: 3042ffff andi v0,v0,0xffff
-8002ca60: 304207ff andi v0,v0,0x7ff
-8002ca64: 00022400 sll a0,v0,0x10
-8002ca68: 8fc50028 lw a1,40(s8)
-8002ca6c: 8fc20010 lw v0,16(s8)
-8002ca70: 00000000 nop
-8002ca74: 00021040 sll v0,v0,0x1
-8002ca78: 00a21021 addu v0,a1,v0
-8002ca7c: 84420006 lh v0,6(v0)
-8002ca80: 00000000 nop
-8002ca84: 3042ffff andi v0,v0,0xffff
-8002ca88: 304207ff andi v0,v0,0x7ff
-8002ca8c: 00821025 or v0,a0,v0
-8002ca90: ac620000 sw v0,0(v1)
- md = setup_attribs(0, line->attribute, &pkt);
-
- linked_list[linked_list_pos++] = 0x05000000;
- linked_list[linked_list_pos++] = md;
-
- for(x=0;x<2;x++)
-8002ca94: 8fc20010 lw v0,16(s8)
-8002ca98: 00000000 nop
-8002ca9c: 24420001 addiu v0,v0,1
-8002caa0: afc20010 sw v0,16(s8)
-8002caa4: 8fc20010 lw v0,16(s8)
-8002caa8: 00000000 nop
-8002caac: 28420002 slti v0,v0,2
-8002cab0: 1440ffac bnez v0,8002c964 <GsSortGLine+0xc4>
-8002cab4: 00000000 nop
- {
- linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0);
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff);
- }
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002cab8: 3c028007 lui v0,0x8007
-8002cabc: 8c431cd4 lw v1,7380(v0)
-8002cac0: 8fc20014 lw v0,20(s8)
-8002cac4: 00000000 nop
-8002cac8: 00021080 sll v0,v0,0x2
-8002cacc: 00621021 addu v0,v1,v0
-8002cad0: 3c038007 lui v1,0x8007
-8002cad4: 8c641cd4 lw a0,7380(v1)
-8002cad8: 8fc30014 lw v1,20(s8)
-8002cadc: 00000000 nop
-8002cae0: 00031880 sll v1,v1,0x2
-8002cae4: 00831821 addu v1,a0,v1
-8002cae8: 8c640000 lw a0,0(v1)
-8002caec: 3c038007 lui v1,0x8007
-8002caf0: 8c651cd4 lw a1,7380(v1)
-8002caf4: 3c038007 lui v1,0x8007
-8002caf8: 8c631cd8 lw v1,7384(v1)
-8002cafc: 00000000 nop
-8002cb00: 00031880 sll v1,v1,0x2
-8002cb04: 00a31821 addu v1,a1,v1
-8002cb08: 00602821 move a1,v1
-8002cb0c: 3c0300ff lui v1,0xff
-8002cb10: 3463ffff ori v1,v1,0xffff
-8002cb14: 00a31824 and v1,a1,v1
-8002cb18: 00831825 or v1,a0,v1
-8002cb1c: ac430000 sw v1,0(v0)
-}
-8002cb20: 00000000 nop
-8002cb24: 03c0e821 move sp,s8
-8002cb28: 8fbf0024 lw ra,36(sp)
-8002cb2c: 8fbe0020 lw s8,32(sp)
-8002cb30: 27bd0028 addiu sp,sp,40
-8002cb34: 03e00008 jr ra
-8002cb38: 00000000 nop
-
-8002cb3c <GsSortDot>:
-
-void GsSortDot(GsDot *dot)
-{
-8002cb3c: 27bdffd8 addiu sp,sp,-40
-8002cb40: afbf0024 sw ra,36(sp)
-8002cb44: afbe0020 sw s8,32(sp)
-8002cb48: 03a0f021 move s8,sp
-8002cb4c: afc40028 sw a0,40(s8)
- // PKT 0x68
-
- int orig_pos = linked_list_pos;
-8002cb50: 3c028007 lui v0,0x8007
-8002cb54: 8c421cd8 lw v0,7384(v0)
-8002cb58: 00000000 nop
-8002cb5c: afc20010 sw v0,16(s8)
- unsigned char pkt = 0x68;
-8002cb60: 24020068 li v0,104
-8002cb64: a3c20018 sb v0,24(s8)
- unsigned int md;
-
- md = setup_attribs(0, dot->attribute, &pkt);
-8002cb68: 8fc20028 lw v0,40(s8)
-8002cb6c: 00000000 nop
-8002cb70: 8c420008 lw v0,8(v0)
-8002cb74: 27c30018 addiu v1,s8,24
-8002cb78: 00603021 move a2,v1
-8002cb7c: 00402821 move a1,v0
-8002cb80: 00002021 move a0,zero
-8002cb84: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002cb88: 00000000 nop
-8002cb8c: afc20014 sw v0,20(s8)
-
- linked_list[linked_list_pos++] = 0x03000000;
-8002cb90: 3c028007 lui v0,0x8007
-8002cb94: 8c431cd4 lw v1,7380(v0)
-8002cb98: 3c028007 lui v0,0x8007
-8002cb9c: 8c421cd8 lw v0,7384(v0)
-8002cba0: 00000000 nop
-8002cba4: 24450001 addiu a1,v0,1
-8002cba8: 3c048007 lui a0,0x8007
-8002cbac: ac851cd8 sw a1,7384(a0)
-8002cbb0: 00021080 sll v0,v0,0x2
-8002cbb4: 00621021 addu v0,v1,v0
-8002cbb8: 3c030300 lui v1,0x300
-8002cbbc: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002cbc0: 3c028007 lui v0,0x8007
-8002cbc4: 8c431cd4 lw v1,7380(v0)
-8002cbc8: 3c028007 lui v0,0x8007
-8002cbcc: 8c421cd8 lw v0,7384(v0)
-8002cbd0: 00000000 nop
-8002cbd4: 24450001 addiu a1,v0,1
-8002cbd8: 3c048007 lui a0,0x8007
-8002cbdc: ac851cd8 sw a1,7384(a0)
-8002cbe0: 00021080 sll v0,v0,0x2
-8002cbe4: 00621021 addu v0,v1,v0
-8002cbe8: 8fc30014 lw v1,20(s8)
-8002cbec: 00000000 nop
-8002cbf0: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (pkt<<24)|(dot->b<<16)|(dot->g<<8)|(dot->r);
-8002cbf4: 3c028007 lui v0,0x8007
-8002cbf8: 8c431cd4 lw v1,7380(v0)
-8002cbfc: 3c028007 lui v0,0x8007
-8002cc00: 8c421cd8 lw v0,7384(v0)
-8002cc04: 00000000 nop
-8002cc08: 24450001 addiu a1,v0,1
-8002cc0c: 3c048007 lui a0,0x8007
-8002cc10: ac851cd8 sw a1,7384(a0)
-8002cc14: 00021080 sll v0,v0,0x2
-8002cc18: 00621021 addu v0,v1,v0
-8002cc1c: 93c30018 lbu v1,24(s8)
-8002cc20: 00000000 nop
-8002cc24: 00032600 sll a0,v1,0x18
-8002cc28: 8fc30028 lw v1,40(s8)
-8002cc2c: 00000000 nop
-8002cc30: 90630002 lbu v1,2(v1)
-8002cc34: 00000000 nop
-8002cc38: 00031c00 sll v1,v1,0x10
-8002cc3c: 00832025 or a0,a0,v1
-8002cc40: 8fc30028 lw v1,40(s8)
-8002cc44: 00000000 nop
-8002cc48: 90630001 lbu v1,1(v1)
-8002cc4c: 00000000 nop
-8002cc50: 00031a00 sll v1,v1,0x8
-8002cc54: 00831825 or v1,a0,v1
-8002cc58: 8fc40028 lw a0,40(s8)
-8002cc5c: 00000000 nop
-8002cc60: 90840000 lbu a0,0(a0)
-8002cc64: 00000000 nop
-8002cc68: 00641825 or v1,v1,a0
-8002cc6c: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((dot->y&0x7ff)<<16)|(dot->x&0x7ff);
-8002cc70: 3c028007 lui v0,0x8007
-8002cc74: 8c431cd4 lw v1,7380(v0)
-8002cc78: 3c028007 lui v0,0x8007
-8002cc7c: 8c421cd8 lw v0,7384(v0)
-8002cc80: 00000000 nop
-8002cc84: 24450001 addiu a1,v0,1
-8002cc88: 3c048007 lui a0,0x8007
-8002cc8c: ac851cd8 sw a1,7384(a0)
-8002cc90: 00021080 sll v0,v0,0x2
-8002cc94: 00621021 addu v0,v1,v0
-8002cc98: 8fc30028 lw v1,40(s8)
-8002cc9c: 00000000 nop
-8002cca0: 84630006 lh v1,6(v1)
-8002cca4: 00000000 nop
-8002cca8: 3063ffff andi v1,v1,0xffff
-8002ccac: 306307ff andi v1,v1,0x7ff
-8002ccb0: 00032400 sll a0,v1,0x10
-8002ccb4: 8fc30028 lw v1,40(s8)
-8002ccb8: 00000000 nop
-8002ccbc: 84630004 lh v1,4(v1)
-8002ccc0: 00000000 nop
-8002ccc4: 3063ffff andi v1,v1,0xffff
-8002ccc8: 306307ff andi v1,v1,0x7ff
-8002cccc: 00831825 or v1,a0,v1
-8002ccd0: ac430000 sw v1,0(v0)
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002ccd4: 3c028007 lui v0,0x8007
-8002ccd8: 8c431cd4 lw v1,7380(v0)
-8002ccdc: 8fc20010 lw v0,16(s8)
-8002cce0: 00000000 nop
-8002cce4: 00021080 sll v0,v0,0x2
-8002cce8: 00621021 addu v0,v1,v0
-8002ccec: 3c038007 lui v1,0x8007
-8002ccf0: 8c641cd4 lw a0,7380(v1)
-8002ccf4: 8fc30010 lw v1,16(s8)
-8002ccf8: 00000000 nop
-8002ccfc: 00031880 sll v1,v1,0x2
-8002cd00: 00831821 addu v1,a0,v1
-8002cd04: 8c640000 lw a0,0(v1)
-8002cd08: 3c038007 lui v1,0x8007
-8002cd0c: 8c651cd4 lw a1,7380(v1)
-8002cd10: 3c038007 lui v1,0x8007
-8002cd14: 8c631cd8 lw v1,7384(v1)
-8002cd18: 00000000 nop
-8002cd1c: 00031880 sll v1,v1,0x2
-8002cd20: 00a31821 addu v1,a1,v1
-8002cd24: 00602821 move a1,v1
-8002cd28: 3c0300ff lui v1,0xff
-8002cd2c: 3463ffff ori v1,v1,0xffff
-8002cd30: 00a31824 and v1,a1,v1
-8002cd34: 00831825 or v1,a0,v1
-8002cd38: ac430000 sw v1,0(v0)
-}
-8002cd3c: 00000000 nop
-8002cd40: 03c0e821 move sp,s8
-8002cd44: 8fbf0024 lw ra,36(sp)
-8002cd48: 8fbe0020 lw s8,32(sp)
-8002cd4c: 27bd0028 addiu sp,sp,40
-8002cd50: 03e00008 jr ra
-8002cd54: 00000000 nop
-
-8002cd58 <GsSortSprite>:
-
-void GsSortSprite(GsSprite *sprite)
-{
-8002cd58: 27bdff98 addiu sp,sp,-104
-8002cd5c: afbf0064 sw ra,100(sp)
-8002cd60: afbe0060 sw s8,96(sp)
-8002cd64: afb0005c sw s0,92(sp)
-8002cd68: 03a0f021 move s8,sp
-8002cd6c: afc40068 sw a0,104(s8)
- GsTPoly4 tpoly4;
- int x, y;
- int sx = sprite->x & 0x7ff;
-8002cd70: 8fc20068 lw v0,104(s8)
-8002cd74: 00000000 nop
-8002cd78: 84420000 lh v0,0(v0)
-8002cd7c: 00000000 nop
-8002cd80: 3042ffff andi v0,v0,0xffff
-8002cd84: 304207ff andi v0,v0,0x7ff
-8002cd88: afc20020 sw v0,32(s8)
- int sy = sprite->y & 0x7ff;
-8002cd8c: 8fc20068 lw v0,104(s8)
-8002cd90: 00000000 nop
-8002cd94: 84420002 lh v0,2(v0)
-8002cd98: 00000000 nop
-8002cd9c: 3042ffff andi v0,v0,0xffff
-8002cda0: 304207ff andi v0,v0,0x7ff
-8002cda4: afc20024 sw v0,36(s8)
- sprite->h = 256;*/
-
- // If "sprite" has no flipping and no scaling use sprite primitive
- // otherwise manipulate a 4 point textured polygon primitive
-
- if(sprite->rotate != 0)
-8002cda8: 8fc20068 lw v0,104(s8)
-8002cdac: 00000000 nop
-8002cdb0: 8c420020 lw v0,32(v0)
-8002cdb4: 00000000 nop
-8002cdb8: 104001ba beqz v0,8002d4a4 <GsSortSprite+0x74c>
-8002cdbc: 00000000 nop
- {
- tpoly4.u[0] = sprite->u;
-8002cdc0: 8fc20068 lw v0,104(s8)
-8002cdc4: 00000000 nop
-8002cdc8: 90420004 lbu v0,4(v0)
-8002cdcc: 00000000 nop
-8002cdd0: a3c20049 sb v0,73(s8)
- tpoly4.v[0] = sprite->v;
-8002cdd4: 8fc20068 lw v0,104(s8)
-8002cdd8: 00000000 nop
-8002cddc: 90420005 lbu v0,5(v0)
-8002cde0: 00000000 nop
-8002cde4: a3c2004d sb v0,77(s8)
-
- tpoly4.u[1] = sprite->u;
-8002cde8: 8fc20068 lw v0,104(s8)
-8002cdec: 00000000 nop
-8002cdf0: 90420004 lbu v0,4(v0)
-8002cdf4: 00000000 nop
-8002cdf8: a3c2004a sb v0,74(s8)
- tpoly4.v[1] = sprite->v + sprite->h;
-8002cdfc: 8fc20068 lw v0,104(s8)
-8002ce00: 00000000 nop
-8002ce04: 90430005 lbu v1,5(v0)
-8002ce08: 8fc20068 lw v0,104(s8)
-8002ce0c: 00000000 nop
-8002ce10: 84420008 lh v0,8(v0)
-8002ce14: 00000000 nop
-8002ce18: 304200ff andi v0,v0,0xff
-8002ce1c: 00621021 addu v0,v1,v0
-8002ce20: 304200ff andi v0,v0,0xff
-8002ce24: a3c2004e sb v0,78(s8)
-
- tpoly4.u[2] = sprite->u + sprite->w;
-8002ce28: 8fc20068 lw v0,104(s8)
-8002ce2c: 00000000 nop
-8002ce30: 90430004 lbu v1,4(v0)
-8002ce34: 8fc20068 lw v0,104(s8)
-8002ce38: 00000000 nop
-8002ce3c: 84420006 lh v0,6(v0)
-8002ce40: 00000000 nop
-8002ce44: 304200ff andi v0,v0,0xff
-8002ce48: 00621021 addu v0,v1,v0
-8002ce4c: 304200ff andi v0,v0,0xff
-8002ce50: a3c2004b sb v0,75(s8)
- tpoly4.v[2] = sprite->v;
-8002ce54: 8fc20068 lw v0,104(s8)
-8002ce58: 00000000 nop
-8002ce5c: 90420005 lbu v0,5(v0)
-8002ce60: 00000000 nop
-8002ce64: a3c2004f sb v0,79(s8)
-
- tpoly4.u[3] = sprite->u + sprite->w;
-8002ce68: 8fc20068 lw v0,104(s8)
-8002ce6c: 00000000 nop
-8002ce70: 90430004 lbu v1,4(v0)
-8002ce74: 8fc20068 lw v0,104(s8)
-8002ce78: 00000000 nop
-8002ce7c: 84420006 lh v0,6(v0)
-8002ce80: 00000000 nop
-8002ce84: 304200ff andi v0,v0,0xff
-8002ce88: 00621021 addu v0,v1,v0
-8002ce8c: 304200ff andi v0,v0,0xff
-8002ce90: a3c2004c sb v0,76(s8)
- tpoly4.v[3] = sprite->v + sprite->h;
-8002ce94: 8fc20068 lw v0,104(s8)
-8002ce98: 00000000 nop
-8002ce9c: 90430005 lbu v1,5(v0)
-8002cea0: 8fc20068 lw v0,104(s8)
-8002cea4: 00000000 nop
-8002cea8: 84420008 lh v0,8(v0)
-8002ceac: 00000000 nop
-8002ceb0: 304200ff andi v0,v0,0xff
-8002ceb4: 00621021 addu v0,v1,v0
-8002ceb8: 304200ff andi v0,v0,0xff
-8002cebc: a3c20050 sb v0,80(s8)
-
- gs_vbuf[0][2] = gs_vbuf[1][2] = gs_vbuf[2][2] = gs_vbuf[3][2] = 0;
-8002cec0: 3c028007 lui v0,0x8007
-8002cec4: 24421b70 addiu v0,v0,7024
-8002cec8: ac400058 sw zero,88(v0)
-8002cecc: ac40005c sw zero,92(v0)
-8002ced0: 3c028007 lui v0,0x8007
-8002ced4: 24421b70 addiu v0,v0,7024
-8002ced8: 8c43005c lw v1,92(v0)
-8002cedc: 8c420058 lw v0,88(v0)
-8002cee0: 3c048007 lui a0,0x8007
-8002cee4: 24841b70 addiu a0,a0,7024
-8002cee8: ac820040 sw v0,64(a0)
-8002ceec: ac830044 sw v1,68(a0)
-8002cef0: 3c028007 lui v0,0x8007
-8002cef4: 24421b70 addiu v0,v0,7024
-8002cef8: 8c430044 lw v1,68(v0)
-8002cefc: 8c420040 lw v0,64(v0)
-8002cf00: 3c048007 lui a0,0x8007
-8002cf04: 24841b70 addiu a0,a0,7024
-8002cf08: ac820028 sw v0,40(a0)
-8002cf0c: ac83002c sw v1,44(a0)
-8002cf10: 3c028007 lui v0,0x8007
-8002cf14: 24421b70 addiu v0,v0,7024
-8002cf18: 8c43002c lw v1,44(v0)
-8002cf1c: 8c420028 lw v0,40(v0)
-8002cf20: 3c048007 lui a0,0x8007
-8002cf24: 24841b70 addiu a0,a0,7024
-8002cf28: ac820010 sw v0,16(a0)
-8002cf2c: ac830014 sw v1,20(a0)
-
- mcx = sprite->mx + sprite->x;
-8002cf30: 8fc20068 lw v0,104(s8)
-8002cf34: 00000000 nop
-8002cf38: 8c420024 lw v0,36(v0)
-8002cf3c: 8fc30068 lw v1,104(s8)
-8002cf40: 00000000 nop
-8002cf44: 84630000 lh v1,0(v1)
-8002cf48: 00000000 nop
-8002cf4c: 00431021 addu v0,v0,v1
-8002cf50: afc20028 sw v0,40(s8)
- mcy = sprite->my + sprite->y;
-8002cf54: 8fc20068 lw v0,104(s8)
-8002cf58: 00000000 nop
-8002cf5c: 8c420028 lw v0,40(v0)
-8002cf60: 8fc30068 lw v1,104(s8)
-8002cf64: 00000000 nop
-8002cf68: 84630002 lh v1,2(v1)
-8002cf6c: 00000000 nop
-8002cf70: 00431021 addu v0,v0,v1
-8002cf74: afc2002c sw v0,44(s8)
-
- gs_vbuf[0][0] = -(mcx - sprite->x);
-8002cf78: 8fc20068 lw v0,104(s8)
-8002cf7c: 00000000 nop
-8002cf80: 84420000 lh v0,0(v0)
-8002cf84: 00000000 nop
-8002cf88: 00401821 move v1,v0
-8002cf8c: 8fc20028 lw v0,40(s8)
-8002cf90: 00000000 nop
-8002cf94: 00621023 subu v0,v1,v0
-8002cf98: 00402021 move a0,v0
-8002cf9c: 0c00fc5c jal 8003f170 <__floatsidf>
-8002cfa0: 00000000 nop
-8002cfa4: 3c048007 lui a0,0x8007
-8002cfa8: ac821b70 sw v0,7024(a0)
-8002cfac: ac831b74 sw v1,7028(a0)
- gs_vbuf[0][1] = (mcy - sprite->y);
-8002cfb0: 8fc20068 lw v0,104(s8)
-8002cfb4: 00000000 nop
-8002cfb8: 84420002 lh v0,2(v0)
-8002cfbc: 00000000 nop
-8002cfc0: 00401821 move v1,v0
-8002cfc4: 8fc2002c lw v0,44(s8)
-8002cfc8: 00000000 nop
-8002cfcc: 00431023 subu v0,v0,v1
-8002cfd0: 00402021 move a0,v0
-8002cfd4: 0c00fc5c jal 8003f170 <__floatsidf>
-8002cfd8: 00000000 nop
-8002cfdc: 3c048007 lui a0,0x8007
-8002cfe0: 24841b70 addiu a0,a0,7024
-8002cfe4: ac820008 sw v0,8(a0)
-8002cfe8: ac83000c sw v1,12(a0)
-
- gs_vbuf[1][0] = -(mcx - sprite->x);
-8002cfec: 8fc20068 lw v0,104(s8)
-8002cff0: 00000000 nop
-8002cff4: 84420000 lh v0,0(v0)
-8002cff8: 00000000 nop
-8002cffc: 00401821 move v1,v0
-8002d000: 8fc20028 lw v0,40(s8)
-8002d004: 00000000 nop
-8002d008: 00621023 subu v0,v1,v0
-8002d00c: 00402021 move a0,v0
-8002d010: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d014: 00000000 nop
-8002d018: 3c048007 lui a0,0x8007
-8002d01c: 24841b70 addiu a0,a0,7024
-8002d020: ac820018 sw v0,24(a0)
-8002d024: ac83001c sw v1,28(a0)
- gs_vbuf[1][1] = (mcy - (sprite->y + gs_calculate_scaled_size(sprite->h, sprite->scaley)));
-8002d028: 8fc20068 lw v0,104(s8)
-8002d02c: 00000000 nop
-8002d030: 84420002 lh v0,2(v0)
-8002d034: 00000000 nop
-8002d038: 00408021 move s0,v0
-8002d03c: 8fc20068 lw v0,104(s8)
-8002d040: 00000000 nop
-8002d044: 84420008 lh v0,8(v0)
-8002d048: 00000000 nop
-8002d04c: 00401821 move v1,v0
-8002d050: 8fc20068 lw v0,104(s8)
-8002d054: 00000000 nop
-8002d058: 8c42001c lw v0,28(v0)
-8002d05c: 00000000 nop
-8002d060: 00402821 move a1,v0
-8002d064: 00602021 move a0,v1
-8002d068: 0c00ae07 jal 8002b81c <gs_calculate_scaled_size>
-8002d06c: 00000000 nop
-8002d070: 02021021 addu v0,s0,v0
-8002d074: 8fc3002c lw v1,44(s8)
-8002d078: 00000000 nop
-8002d07c: 00621023 subu v0,v1,v0
-8002d080: 00402021 move a0,v0
-8002d084: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d088: 00000000 nop
-8002d08c: 3c048007 lui a0,0x8007
-8002d090: 24841b70 addiu a0,a0,7024
-8002d094: ac820020 sw v0,32(a0)
-8002d098: ac830024 sw v1,36(a0)
-
- gs_vbuf[2][0] = -(mcx - (sprite->x + gs_calculate_scaled_size(sprite->w, sprite->scalex)));
-8002d09c: 8fc20068 lw v0,104(s8)
-8002d0a0: 00000000 nop
-8002d0a4: 84420000 lh v0,0(v0)
-8002d0a8: 00000000 nop
-8002d0ac: 00408021 move s0,v0
-8002d0b0: 8fc20068 lw v0,104(s8)
-8002d0b4: 00000000 nop
-8002d0b8: 84420006 lh v0,6(v0)
-8002d0bc: 00000000 nop
-8002d0c0: 00401821 move v1,v0
-8002d0c4: 8fc20068 lw v0,104(s8)
-8002d0c8: 00000000 nop
-8002d0cc: 8c420018 lw v0,24(v0)
-8002d0d0: 00000000 nop
-8002d0d4: 00402821 move a1,v0
-8002d0d8: 00602021 move a0,v1
-8002d0dc: 0c00ae07 jal 8002b81c <gs_calculate_scaled_size>
-8002d0e0: 00000000 nop
-8002d0e4: 02021821 addu v1,s0,v0
-8002d0e8: 8fc20028 lw v0,40(s8)
-8002d0ec: 00000000 nop
-8002d0f0: 00621023 subu v0,v1,v0
-8002d0f4: 00402021 move a0,v0
-8002d0f8: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d0fc: 00000000 nop
-8002d100: 3c048007 lui a0,0x8007
-8002d104: 24841b70 addiu a0,a0,7024
-8002d108: ac820030 sw v0,48(a0)
-8002d10c: ac830034 sw v1,52(a0)
- gs_vbuf[2][1] = (mcy - sprite->y);
-8002d110: 8fc20068 lw v0,104(s8)
-8002d114: 00000000 nop
-8002d118: 84420002 lh v0,2(v0)
-8002d11c: 00000000 nop
-8002d120: 00401821 move v1,v0
-8002d124: 8fc2002c lw v0,44(s8)
-8002d128: 00000000 nop
-8002d12c: 00431023 subu v0,v0,v1
-8002d130: 00402021 move a0,v0
-8002d134: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d138: 00000000 nop
-8002d13c: 3c048007 lui a0,0x8007
-8002d140: 24841b70 addiu a0,a0,7024
-8002d144: ac820038 sw v0,56(a0)
-8002d148: ac83003c sw v1,60(a0)
-
- gs_vbuf[3][0] = -(mcx - (sprite->x + gs_calculate_scaled_size(sprite->w, sprite->scalex)));
-8002d14c: 8fc20068 lw v0,104(s8)
-8002d150: 00000000 nop
-8002d154: 84420000 lh v0,0(v0)
-8002d158: 00000000 nop
-8002d15c: 00408021 move s0,v0
-8002d160: 8fc20068 lw v0,104(s8)
-8002d164: 00000000 nop
-8002d168: 84420006 lh v0,6(v0)
-8002d16c: 00000000 nop
-8002d170: 00401821 move v1,v0
-8002d174: 8fc20068 lw v0,104(s8)
-8002d178: 00000000 nop
-8002d17c: 8c420018 lw v0,24(v0)
-8002d180: 00000000 nop
-8002d184: 00402821 move a1,v0
-8002d188: 00602021 move a0,v1
-8002d18c: 0c00ae07 jal 8002b81c <gs_calculate_scaled_size>
-8002d190: 00000000 nop
-8002d194: 02021821 addu v1,s0,v0
-8002d198: 8fc20028 lw v0,40(s8)
-8002d19c: 00000000 nop
-8002d1a0: 00621023 subu v0,v1,v0
-8002d1a4: 00402021 move a0,v0
-8002d1a8: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d1ac: 00000000 nop
-8002d1b0: 3c048007 lui a0,0x8007
-8002d1b4: 24841b70 addiu a0,a0,7024
-8002d1b8: ac820048 sw v0,72(a0)
-8002d1bc: ac83004c sw v1,76(a0)
- gs_vbuf[3][1] = (mcy - (sprite->y + gs_calculate_scaled_size(sprite->h, sprite->scaley)));
-8002d1c0: 8fc20068 lw v0,104(s8)
-8002d1c4: 00000000 nop
-8002d1c8: 84420002 lh v0,2(v0)
-8002d1cc: 00000000 nop
-8002d1d0: 00408021 move s0,v0
-8002d1d4: 8fc20068 lw v0,104(s8)
-8002d1d8: 00000000 nop
-8002d1dc: 84420008 lh v0,8(v0)
-8002d1e0: 00000000 nop
-8002d1e4: 00401821 move v1,v0
-8002d1e8: 8fc20068 lw v0,104(s8)
-8002d1ec: 00000000 nop
-8002d1f0: 8c42001c lw v0,28(v0)
-8002d1f4: 00000000 nop
-8002d1f8: 00402821 move a1,v0
-8002d1fc: 00602021 move a0,v1
-8002d200: 0c00ae07 jal 8002b81c <gs_calculate_scaled_size>
-8002d204: 00000000 nop
-8002d208: 02021021 addu v0,s0,v0
-8002d20c: 8fc3002c lw v1,44(s8)
-8002d210: 00000000 nop
-8002d214: 00621023 subu v0,v1,v0
-8002d218: 00402021 move a0,v0
-8002d21c: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d220: 00000000 nop
-8002d224: 3c048007 lui a0,0x8007
-8002d228: 24841b70 addiu a0,a0,7024
-8002d22c: ac820050 sw v0,80(a0)
-8002d230: ac830054 sw v1,84(a0)
-
- for(x = 0; x < 4; x++)
-8002d234: afc00018 sw zero,24(s8)
-8002d238: 1000006c b 8002d3ec <GsSortSprite+0x694>
-8002d23c: 00000000 nop
- {
- gs_internal_vector_rotate(0, 0, sprite->rotate, gs_vbuf[x], gs_vbuf[x]);
-8002d240: 8fc20068 lw v0,104(s8)
-8002d244: 00000000 nop
-8002d248: 8c440020 lw a0,32(v0)
-8002d24c: 8fc20018 lw v0,24(s8)
-8002d250: 00000000 nop
-8002d254: 00401821 move v1,v0
-8002d258: 000310c0 sll v0,v1,0x3
-8002d25c: 00401821 move v1,v0
-8002d260: 00031080 sll v0,v1,0x2
-8002d264: 00431023 subu v0,v0,v1
-8002d268: 3c038007 lui v1,0x8007
-8002d26c: 24631b70 addiu v1,v1,7024
-8002d270: 00432821 addu a1,v0,v1
-8002d274: 8fc20018 lw v0,24(s8)
-8002d278: 00000000 nop
-8002d27c: 00401821 move v1,v0
-8002d280: 000310c0 sll v0,v1,0x3
-8002d284: 00401821 move v1,v0
-8002d288: 00031080 sll v0,v1,0x2
-8002d28c: 00431023 subu v0,v0,v1
-8002d290: 3c038007 lui v1,0x8007
-8002d294: 24631b70 addiu v1,v1,7024
-8002d298: 00431021 addu v0,v0,v1
-8002d29c: afa20010 sw v0,16(sp)
-8002d2a0: 00a03821 move a3,a1
-8002d2a4: 00803021 move a2,a0
-8002d2a8: 00002821 move a1,zero
-8002d2ac: 00002021 move a0,zero
-8002d2b0: 0c00c347 jal 80030d1c <gs_internal_vector_rotate>
-8002d2b4: 00000000 nop
- tpoly4.x[x] = mcx + gs_vbuf[x][0];
-8002d2b8: 8fc40028 lw a0,40(s8)
-8002d2bc: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d2c0: 00000000 nop
-8002d2c4: 00404021 move t0,v0
-8002d2c8: 00604821 move t1,v1
-8002d2cc: 3c048007 lui a0,0x8007
-8002d2d0: 8fc20018 lw v0,24(s8)
-8002d2d4: 00000000 nop
-8002d2d8: 00401821 move v1,v0
-8002d2dc: 000310c0 sll v0,v1,0x3
-8002d2e0: 00401821 move v1,v0
-8002d2e4: 00031080 sll v0,v1,0x2
-8002d2e8: 00431023 subu v0,v0,v1
-8002d2ec: 24831b70 addiu v1,a0,7024
-8002d2f0: 00431021 addu v0,v0,v1
-8002d2f4: 8c430004 lw v1,4(v0)
-8002d2f8: 8c420000 lw v0,0(v0)
-8002d2fc: 00000000 nop
-8002d300: 00403021 move a2,v0
-8002d304: 00603821 move a3,v1
-8002d308: 01002021 move a0,t0
-8002d30c: 01202821 move a1,t1
-8002d310: 0c00f3d7 jal 8003cf5c <__adddf3>
-8002d314: 00000000 nop
-8002d318: 00402021 move a0,v0
-8002d31c: 00602821 move a1,v1
-8002d320: 0c00fc39 jal 8003f0e4 <__fixdfsi>
-8002d324: 00000000 nop
-8002d328: 00021c00 sll v1,v0,0x10
-8002d32c: 00031c03 sra v1,v1,0x10
-8002d330: 8fc20018 lw v0,24(s8)
-8002d334: 00000000 nop
-8002d338: 00021040 sll v0,v0,0x1
-8002d33c: 27c40018 addiu a0,s8,24
-8002d340: 00821021 addu v0,a0,v0
-8002d344: a4430018 sh v1,24(v0)
- tpoly4.y[x] = mcy + gs_vbuf[x][1];
-8002d348: 8fc4002c lw a0,44(s8)
-8002d34c: 0c00fc5c jal 8003f170 <__floatsidf>
-8002d350: 00000000 nop
-8002d354: 00404021 move t0,v0
-8002d358: 00604821 move t1,v1
-8002d35c: 3c048007 lui a0,0x8007
-8002d360: 8fc20018 lw v0,24(s8)
-8002d364: 00000000 nop
-8002d368: 00401821 move v1,v0
-8002d36c: 000310c0 sll v0,v1,0x3
-8002d370: 00401821 move v1,v0
-8002d374: 00031080 sll v0,v1,0x2
-8002d378: 00431023 subu v0,v0,v1
-8002d37c: 24831b70 addiu v1,a0,7024
-8002d380: 00431021 addu v0,v0,v1
-8002d384: 8c43000c lw v1,12(v0)
-8002d388: 8c420008 lw v0,8(v0)
-8002d38c: 00000000 nop
-8002d390: 00403021 move a2,v0
-8002d394: 00603821 move a3,v1
-8002d398: 01002021 move a0,t0
-8002d39c: 01202821 move a1,t1
-8002d3a0: 0c00f3d7 jal 8003cf5c <__adddf3>
-8002d3a4: 00000000 nop
-8002d3a8: 00402021 move a0,v0
-8002d3ac: 00602821 move a1,v1
-8002d3b0: 0c00fc39 jal 8003f0e4 <__fixdfsi>
-8002d3b4: 00000000 nop
-8002d3b8: 00021c00 sll v1,v0,0x10
-8002d3bc: 00031c03 sra v1,v1,0x10
-8002d3c0: 8fc20018 lw v0,24(s8)
-8002d3c4: 00000000 nop
-8002d3c8: 24420004 addiu v0,v0,4
-8002d3cc: 00021040 sll v0,v0,0x1
-8002d3d0: 27c40018 addiu a0,s8,24
-8002d3d4: 00821021 addu v0,a0,v0
-8002d3d8: a4430018 sh v1,24(v0)
- gs_vbuf[2][1] = (mcy - sprite->y);
-
- gs_vbuf[3][0] = -(mcx - (sprite->x + gs_calculate_scaled_size(sprite->w, sprite->scalex)));
- gs_vbuf[3][1] = (mcy - (sprite->y + gs_calculate_scaled_size(sprite->h, sprite->scaley)));
-
- for(x = 0; x < 4; x++)
-8002d3dc: 8fc20018 lw v0,24(s8)
-8002d3e0: 00000000 nop
-8002d3e4: 24420001 addiu v0,v0,1
-8002d3e8: afc20018 sw v0,24(s8)
-8002d3ec: 8fc20018 lw v0,24(s8)
-8002d3f0: 00000000 nop
-8002d3f4: 28420004 slti v0,v0,4
-8002d3f8: 1440ff91 bnez v0,8002d240 <GsSortSprite+0x4e8>
-8002d3fc: 00000000 nop
- gs_internal_vector_rotate(0, 0, sprite->rotate, gs_vbuf[x], gs_vbuf[x]);
- tpoly4.x[x] = mcx + gs_vbuf[x][0];
- tpoly4.y[x] = mcy + gs_vbuf[x][1];
- }
-
- tpoly4.r = sprite->r;
-8002d400: 8fc20068 lw v0,104(s8)
-8002d404: 00000000 nop
-8002d408: 9042000e lbu v0,14(v0)
-8002d40c: 00000000 nop
-8002d410: a3c20040 sb v0,64(s8)
- tpoly4.g = sprite->g;
-8002d414: 8fc20068 lw v0,104(s8)
-8002d418: 00000000 nop
-8002d41c: 9042000f lbu v0,15(v0)
-8002d420: 00000000 nop
-8002d424: a3c20041 sb v0,65(s8)
- tpoly4.b = sprite->b;
-8002d428: 8fc20068 lw v0,104(s8)
-8002d42c: 00000000 nop
-8002d430: 90420010 lbu v0,16(v0)
-8002d434: 00000000 nop
-8002d438: a3c20042 sb v0,66(s8)
- tpoly4.attribute = sprite->attribute;
-8002d43c: 8fc20068 lw v0,104(s8)
-8002d440: 00000000 nop
-8002d444: 8c420014 lw v0,20(v0)
-8002d448: 00000000 nop
-8002d44c: afc20054 sw v0,84(s8)
- tpoly4.tpage = sprite->tpage;
-8002d450: 8fc20068 lw v0,104(s8)
-8002d454: 00000000 nop
-8002d458: 90420011 lbu v0,17(v0)
-8002d45c: 00000000 nop
-8002d460: a3c20048 sb v0,72(s8)
- tpoly4.cx = sprite->cx;
-8002d464: 8fc20068 lw v0,104(s8)
-8002d468: 00000000 nop
-8002d46c: 8442000a lh v0,10(v0)
-8002d470: 00000000 nop
-8002d474: a7c20044 sh v0,68(s8)
- tpoly4.cy = sprite->cy;
-8002d478: 8fc20068 lw v0,104(s8)
-8002d47c: 00000000 nop
-8002d480: 8442000c lh v0,12(v0)
-8002d484: 00000000 nop
-8002d488: a7c20046 sh v0,70(s8)
-
- GsSortTPoly4(&tpoly4);
-8002d48c: 27c20030 addiu v0,s8,48
-8002d490: 00402021 move a0,v0
-8002d494: 0c00b7fe jal 8002dff8 <GsSortTPoly4>
-8002d498: 00000000 nop
- }
- else
- {
- GsSortSimpleSprite(sprite);
- }
-}
-8002d49c: 1000016c b 8002da50 <GsSortSprite+0xcf8>
-8002d4a0: 00000000 nop
- tpoly4.cx = sprite->cx;
- tpoly4.cy = sprite->cy;
-
- GsSortTPoly4(&tpoly4);
- }
- else if((sprite->attribute & (H_FLIP|V_FLIP)) ||
-8002d4a4: 8fc20068 lw v0,104(s8)
-8002d4a8: 00000000 nop
-8002d4ac: 8c420014 lw v0,20(v0)
-8002d4b0: 00000000 nop
-8002d4b4: 30420060 andi v0,v0,0x60
-8002d4b8: 1440000d bnez v0,8002d4f0 <GsSortSprite+0x798>
-8002d4bc: 00000000 nop
- sprite->scalex != 0 || sprite->scaley != 0)
-8002d4c0: 8fc20068 lw v0,104(s8)
-8002d4c4: 00000000 nop
-8002d4c8: 8c420018 lw v0,24(v0)
-8002d4cc: 00000000 nop
- tpoly4.cx = sprite->cx;
- tpoly4.cy = sprite->cy;
-
- GsSortTPoly4(&tpoly4);
- }
- else if((sprite->attribute & (H_FLIP|V_FLIP)) ||
-8002d4d0: 14400007 bnez v0,8002d4f0 <GsSortSprite+0x798>
-8002d4d4: 00000000 nop
- sprite->scalex != 0 || sprite->scaley != 0)
-8002d4d8: 8fc20068 lw v0,104(s8)
-8002d4dc: 00000000 nop
-8002d4e0: 8c42001c lw v0,28(v0)
-8002d4e4: 00000000 nop
-8002d4e8: 10400156 beqz v0,8002da44 <GsSortSprite+0xcec>
-8002d4ec: 00000000 nop
- {
- x = sprite->w;
-8002d4f0: 8fc20068 lw v0,104(s8)
-8002d4f4: 00000000 nop
-8002d4f8: 84420006 lh v0,6(v0)
-8002d4fc: 00000000 nop
-8002d500: afc20018 sw v0,24(s8)
- if(x>256)x=256;
-8002d504: 8fc20018 lw v0,24(s8)
-8002d508: 00000000 nop
-8002d50c: 28420101 slti v0,v0,257
-8002d510: 14400003 bnez v0,8002d520 <GsSortSprite+0x7c8>
-8002d514: 00000000 nop
-8002d518: 24020100 li v0,256
-8002d51c: afc20018 sw v0,24(s8)
-
- y = sprite->h;
-8002d520: 8fc20068 lw v0,104(s8)
-8002d524: 00000000 nop
-8002d528: 84420008 lh v0,8(v0)
-8002d52c: 00000000 nop
-8002d530: afc2001c sw v0,28(s8)
- if(y>256)y=256;
-8002d534: 8fc2001c lw v0,28(s8)
-8002d538: 00000000 nop
-8002d53c: 28420101 slti v0,v0,257
-8002d540: 14400003 bnez v0,8002d550 <GsSortSprite+0x7f8>
-8002d544: 00000000 nop
-8002d548: 24020100 li v0,256
-8002d54c: afc2001c sw v0,28(s8)
-
- if(sprite->scalex > 8)
-8002d550: 8fc20068 lw v0,104(s8)
-8002d554: 00000000 nop
-8002d558: 8c420018 lw v0,24(v0)
-8002d55c: 00000000 nop
-8002d560: 28420009 slti v0,v0,9
-8002d564: 14400012 bnez v0,8002d5b0 <GsSortSprite+0x858>
-8002d568: 00000000 nop
- {
- x *= sprite->scalex;
-8002d56c: 8fc20068 lw v0,104(s8)
-8002d570: 00000000 nop
-8002d574: 8c420018 lw v0,24(v0)
-8002d578: 8fc30018 lw v1,24(s8)
-8002d57c: 00000000 nop
-8002d580: 00620018 mult v1,v0
-8002d584: 00001012 mflo v0
-8002d588: afc20018 sw v0,24(s8)
- x /= 4096;
-8002d58c: 8fc20018 lw v0,24(s8)
-8002d590: 00000000 nop
-8002d594: 04410002 bgez v0,8002d5a0 <GsSortSprite+0x848>
-8002d598: 00000000 nop
-8002d59c: 24420fff addiu v0,v0,4095
-8002d5a0: 00021303 sra v0,v0,0xc
-8002d5a4: afc20018 sw v0,24(s8)
-8002d5a8: 10000026 b 8002d644 <GsSortSprite+0x8ec>
-8002d5ac: 00000000 nop
- }
- else
- {
- if(sprite->scalex >= 2)
-8002d5b0: 8fc20068 lw v0,104(s8)
-8002d5b4: 00000000 nop
-8002d5b8: 8c420018 lw v0,24(v0)
-8002d5bc: 00000000 nop
-8002d5c0: 28420002 slti v0,v0,2
-8002d5c4: 1440000b bnez v0,8002d5f4 <GsSortSprite+0x89c>
-8002d5c8: 00000000 nop
- x*=sprite->scalex;
-8002d5cc: 8fc20068 lw v0,104(s8)
-8002d5d0: 00000000 nop
-8002d5d4: 8c420018 lw v0,24(v0)
-8002d5d8: 8fc30018 lw v1,24(s8)
-8002d5dc: 00000000 nop
-8002d5e0: 00620018 mult v1,v0
-8002d5e4: 00001012 mflo v0
-8002d5e8: afc20018 sw v0,24(s8)
-8002d5ec: 10000015 b 8002d644 <GsSortSprite+0x8ec>
-8002d5f0: 00000000 nop
- else if(sprite->scalex <= -2)
-8002d5f4: 8fc20068 lw v0,104(s8)
-8002d5f8: 00000000 nop
-8002d5fc: 8c420018 lw v0,24(v0)
-8002d600: 00000000 nop
-8002d604: 2842ffff slti v0,v0,-1
-8002d608: 1040000e beqz v0,8002d644 <GsSortSprite+0x8ec>
-8002d60c: 00000000 nop
- x/=-sprite->scalex;
-8002d610: 8fc20068 lw v0,104(s8)
-8002d614: 00000000 nop
-8002d618: 8c420018 lw v0,24(v0)
-8002d61c: 00000000 nop
-8002d620: 00021023 negu v0,v0
-8002d624: 8fc30018 lw v1,24(s8)
-8002d628: 00000000 nop
-8002d62c: 14400002 bnez v0,8002d638 <GsSortSprite+0x8e0>
-8002d630: 0062001a div zero,v1,v0
-8002d634: 0007000d break 0x7
-8002d638: 00001010 mfhi v0
-8002d63c: 00001012 mflo v0
-8002d640: afc20018 sw v0,24(s8)
- }
-
- if(sprite->scaley > 8)
-8002d644: 8fc20068 lw v0,104(s8)
-8002d648: 00000000 nop
-8002d64c: 8c42001c lw v0,28(v0)
-8002d650: 00000000 nop
-8002d654: 28420009 slti v0,v0,9
-8002d658: 14400012 bnez v0,8002d6a4 <GsSortSprite+0x94c>
-8002d65c: 00000000 nop
- {
- y *= sprite->scaley;
-8002d660: 8fc20068 lw v0,104(s8)
-8002d664: 00000000 nop
-8002d668: 8c42001c lw v0,28(v0)
-8002d66c: 8fc3001c lw v1,28(s8)
-8002d670: 00000000 nop
-8002d674: 00620018 mult v1,v0
-8002d678: 00001012 mflo v0
-8002d67c: afc2001c sw v0,28(s8)
- y /= 4096;
-8002d680: 8fc2001c lw v0,28(s8)
-8002d684: 00000000 nop
-8002d688: 04410002 bgez v0,8002d694 <GsSortSprite+0x93c>
-8002d68c: 00000000 nop
-8002d690: 24420fff addiu v0,v0,4095
-8002d694: 00021303 sra v0,v0,0xc
-8002d698: afc2001c sw v0,28(s8)
-8002d69c: 10000026 b 8002d738 <GsSortSprite+0x9e0>
-8002d6a0: 00000000 nop
- }
- else
- {
- if(sprite->scaley >= 2)
-8002d6a4: 8fc20068 lw v0,104(s8)
-8002d6a8: 00000000 nop
-8002d6ac: 8c42001c lw v0,28(v0)
-8002d6b0: 00000000 nop
-8002d6b4: 28420002 slti v0,v0,2
-8002d6b8: 1440000b bnez v0,8002d6e8 <GsSortSprite+0x990>
-8002d6bc: 00000000 nop
- y*=sprite->scaley;
-8002d6c0: 8fc20068 lw v0,104(s8)
-8002d6c4: 00000000 nop
-8002d6c8: 8c42001c lw v0,28(v0)
-8002d6cc: 8fc3001c lw v1,28(s8)
-8002d6d0: 00000000 nop
-8002d6d4: 00620018 mult v1,v0
-8002d6d8: 00001012 mflo v0
-8002d6dc: afc2001c sw v0,28(s8)
-8002d6e0: 10000015 b 8002d738 <GsSortSprite+0x9e0>
-8002d6e4: 00000000 nop
- else if(sprite->scaley <= -2)
-8002d6e8: 8fc20068 lw v0,104(s8)
-8002d6ec: 00000000 nop
-8002d6f0: 8c42001c lw v0,28(v0)
-8002d6f4: 00000000 nop
-8002d6f8: 2842ffff slti v0,v0,-1
-8002d6fc: 1040000e beqz v0,8002d738 <GsSortSprite+0x9e0>
-8002d700: 00000000 nop
- y/=-sprite->scaley;
-8002d704: 8fc20068 lw v0,104(s8)
-8002d708: 00000000 nop
-8002d70c: 8c42001c lw v0,28(v0)
-8002d710: 00000000 nop
-8002d714: 00021023 negu v0,v0
-8002d718: 8fc3001c lw v1,28(s8)
-8002d71c: 00000000 nop
-8002d720: 14400002 bnez v0,8002d72c <GsSortSprite+0x9d4>
-8002d724: 0062001a div zero,v1,v0
-8002d728: 0007000d break 0x7
-8002d72c: 00001010 mfhi v0
-8002d730: 00001012 mflo v0
-8002d734: afc2001c sw v0,28(s8)
- }
-
- tpoly4.x[0] = tpoly4.x[1] = sx;
-8002d738: 8fc20020 lw v0,32(s8)
-8002d73c: 00000000 nop
-8002d740: 00021400 sll v0,v0,0x10
-8002d744: 00021403 sra v0,v0,0x10
-8002d748: a7c20032 sh v0,50(s8)
-8002d74c: 87c20032 lh v0,50(s8)
-8002d750: 00000000 nop
-8002d754: a7c20030 sh v0,48(s8)
- tpoly4.x[2] = tpoly4.x[3] = (sx + x);
-8002d758: 8fc20020 lw v0,32(s8)
-8002d75c: 00000000 nop
-8002d760: 3043ffff andi v1,v0,0xffff
-8002d764: 8fc20018 lw v0,24(s8)
-8002d768: 00000000 nop
-8002d76c: 3042ffff andi v0,v0,0xffff
-8002d770: 00621021 addu v0,v1,v0
-8002d774: 3042ffff andi v0,v0,0xffff
-8002d778: 00021400 sll v0,v0,0x10
-8002d77c: 00021403 sra v0,v0,0x10
-8002d780: a7c20036 sh v0,54(s8)
-8002d784: 87c20036 lh v0,54(s8)
-8002d788: 00000000 nop
-8002d78c: a7c20034 sh v0,52(s8)
- tpoly4.y[0] = tpoly4.y[2] = sy;
-8002d790: 8fc20024 lw v0,36(s8)
-8002d794: 00000000 nop
-8002d798: 00021400 sll v0,v0,0x10
-8002d79c: 00021403 sra v0,v0,0x10
-8002d7a0: a7c2003c sh v0,60(s8)
-8002d7a4: 87c2003c lh v0,60(s8)
-8002d7a8: 00000000 nop
-8002d7ac: a7c20038 sh v0,56(s8)
- tpoly4.y[1] = tpoly4.y[3] = (sy + y);
-8002d7b0: 8fc20024 lw v0,36(s8)
-8002d7b4: 00000000 nop
-8002d7b8: 3043ffff andi v1,v0,0xffff
-8002d7bc: 8fc2001c lw v0,28(s8)
-8002d7c0: 00000000 nop
-8002d7c4: 3042ffff andi v0,v0,0xffff
-8002d7c8: 00621021 addu v0,v1,v0
-8002d7cc: 3042ffff andi v0,v0,0xffff
-8002d7d0: 00021400 sll v0,v0,0x10
-8002d7d4: 00021403 sra v0,v0,0x10
-8002d7d8: a7c2003e sh v0,62(s8)
-8002d7dc: 87c2003e lh v0,62(s8)
-8002d7e0: 00000000 nop
-8002d7e4: a7c2003a sh v0,58(s8)
-
- if(sprite->attribute & H_FLIP)
-8002d7e8: 8fc20068 lw v0,104(s8)
-8002d7ec: 00000000 nop
-8002d7f0: 8c420014 lw v0,20(v0)
-8002d7f4: 00000000 nop
-8002d7f8: 30420020 andi v0,v0,0x20
-8002d7fc: 1040001b beqz v0,8002d86c <GsSortSprite+0xb14>
-8002d800: 00000000 nop
- {
- tpoly4.u[0] = tpoly4.u[1] = (sprite->u + sprite->w) - 1;
-8002d804: 8fc20068 lw v0,104(s8)
-8002d808: 00000000 nop
-8002d80c: 90430004 lbu v1,4(v0)
-8002d810: 8fc20068 lw v0,104(s8)
-8002d814: 00000000 nop
-8002d818: 84420006 lh v0,6(v0)
-8002d81c: 00000000 nop
-8002d820: 304200ff andi v0,v0,0xff
-8002d824: 00621021 addu v0,v1,v0
-8002d828: 304200ff andi v0,v0,0xff
-8002d82c: 2442ffff addiu v0,v0,-1
-8002d830: 304200ff andi v0,v0,0xff
-8002d834: a3c2004a sb v0,74(s8)
-8002d838: 93c2004a lbu v0,74(s8)
-8002d83c: 00000000 nop
-8002d840: a3c20049 sb v0,73(s8)
- tpoly4.u[2] = tpoly4.u[3] = sprite->u;
-8002d844: 8fc20068 lw v0,104(s8)
-8002d848: 00000000 nop
-8002d84c: 90420004 lbu v0,4(v0)
-8002d850: 00000000 nop
-8002d854: a3c2004c sb v0,76(s8)
-8002d858: 93c2004c lbu v0,76(s8)
-8002d85c: 00000000 nop
-8002d860: a3c2004b sb v0,75(s8)
-8002d864: 10000017 b 8002d8c4 <GsSortSprite+0xb6c>
-8002d868: 00000000 nop
- }
- else
- {
- tpoly4.u[0] = tpoly4.u[1] = sprite->u;
-8002d86c: 8fc20068 lw v0,104(s8)
-8002d870: 00000000 nop
-8002d874: 90420004 lbu v0,4(v0)
-8002d878: 00000000 nop
-8002d87c: a3c2004a sb v0,74(s8)
-8002d880: 93c2004a lbu v0,74(s8)
-8002d884: 00000000 nop
-8002d888: a3c20049 sb v0,73(s8)
- tpoly4.u[2] = tpoly4.u[3] = (sprite->u + sprite->w);
-8002d88c: 8fc20068 lw v0,104(s8)
-8002d890: 00000000 nop
-8002d894: 90430004 lbu v1,4(v0)
-8002d898: 8fc20068 lw v0,104(s8)
-8002d89c: 00000000 nop
-8002d8a0: 84420006 lh v0,6(v0)
-8002d8a4: 00000000 nop
-8002d8a8: 304200ff andi v0,v0,0xff
-8002d8ac: 00621021 addu v0,v1,v0
-8002d8b0: 304200ff andi v0,v0,0xff
-8002d8b4: a3c2004c sb v0,76(s8)
-8002d8b8: 93c2004c lbu v0,76(s8)
-8002d8bc: 00000000 nop
-8002d8c0: a3c2004b sb v0,75(s8)
- }
-
- if(sprite->attribute & V_FLIP)
-8002d8c4: 8fc20068 lw v0,104(s8)
-8002d8c8: 00000000 nop
-8002d8cc: 8c420014 lw v0,20(v0)
-8002d8d0: 00000000 nop
-8002d8d4: 30420040 andi v0,v0,0x40
-8002d8d8: 1040001b beqz v0,8002d948 <GsSortSprite+0xbf0>
-8002d8dc: 00000000 nop
- {
- tpoly4.v[0] = tpoly4.v[2] = (sprite->v + sprite->h) - 1;
-8002d8e0: 8fc20068 lw v0,104(s8)
-8002d8e4: 00000000 nop
-8002d8e8: 90430005 lbu v1,5(v0)
-8002d8ec: 8fc20068 lw v0,104(s8)
-8002d8f0: 00000000 nop
-8002d8f4: 84420008 lh v0,8(v0)
-8002d8f8: 00000000 nop
-8002d8fc: 304200ff andi v0,v0,0xff
-8002d900: 00621021 addu v0,v1,v0
-8002d904: 304200ff andi v0,v0,0xff
-8002d908: 2442ffff addiu v0,v0,-1
-8002d90c: 304200ff andi v0,v0,0xff
-8002d910: a3c2004f sb v0,79(s8)
-8002d914: 93c2004f lbu v0,79(s8)
-8002d918: 00000000 nop
-8002d91c: a3c2004d sb v0,77(s8)
- tpoly4.v[1] = tpoly4.v[3] = sprite->v;
-8002d920: 8fc20068 lw v0,104(s8)
-8002d924: 00000000 nop
-8002d928: 90420005 lbu v0,5(v0)
-8002d92c: 00000000 nop
-8002d930: a3c20050 sb v0,80(s8)
-8002d934: 93c20050 lbu v0,80(s8)
-8002d938: 00000000 nop
-8002d93c: a3c2004e sb v0,78(s8)
-8002d940: 10000017 b 8002d9a0 <GsSortSprite+0xc48>
-8002d944: 00000000 nop
- }
- else
- {
- tpoly4.v[0] = tpoly4.v[2] = sprite->v;
-8002d948: 8fc20068 lw v0,104(s8)
-8002d94c: 00000000 nop
-8002d950: 90420005 lbu v0,5(v0)
-8002d954: 00000000 nop
-8002d958: a3c2004f sb v0,79(s8)
-8002d95c: 93c2004f lbu v0,79(s8)
-8002d960: 00000000 nop
-8002d964: a3c2004d sb v0,77(s8)
- tpoly4.v[1] = tpoly4.v[3] = (sprite->v + sprite->h);
-8002d968: 8fc20068 lw v0,104(s8)
-8002d96c: 00000000 nop
-8002d970: 90430005 lbu v1,5(v0)
-8002d974: 8fc20068 lw v0,104(s8)
-8002d978: 00000000 nop
-8002d97c: 84420008 lh v0,8(v0)
-8002d980: 00000000 nop
-8002d984: 304200ff andi v0,v0,0xff
-8002d988: 00621021 addu v0,v1,v0
-8002d98c: 304200ff andi v0,v0,0xff
-8002d990: a3c20050 sb v0,80(s8)
-8002d994: 93c20050 lbu v0,80(s8)
-8002d998: 00000000 nop
-8002d99c: a3c2004e sb v0,78(s8)
- }
-
- tpoly4.r = sprite->r;
-8002d9a0: 8fc20068 lw v0,104(s8)
-8002d9a4: 00000000 nop
-8002d9a8: 9042000e lbu v0,14(v0)
-8002d9ac: 00000000 nop
-8002d9b0: a3c20040 sb v0,64(s8)
- tpoly4.g = sprite->g;
-8002d9b4: 8fc20068 lw v0,104(s8)
-8002d9b8: 00000000 nop
-8002d9bc: 9042000f lbu v0,15(v0)
-8002d9c0: 00000000 nop
-8002d9c4: a3c20041 sb v0,65(s8)
- tpoly4.b = sprite->b;
-8002d9c8: 8fc20068 lw v0,104(s8)
-8002d9cc: 00000000 nop
-8002d9d0: 90420010 lbu v0,16(v0)
-8002d9d4: 00000000 nop
-8002d9d8: a3c20042 sb v0,66(s8)
- tpoly4.attribute = sprite->attribute;
-8002d9dc: 8fc20068 lw v0,104(s8)
-8002d9e0: 00000000 nop
-8002d9e4: 8c420014 lw v0,20(v0)
-8002d9e8: 00000000 nop
-8002d9ec: afc20054 sw v0,84(s8)
- tpoly4.tpage = sprite->tpage;
-8002d9f0: 8fc20068 lw v0,104(s8)
-8002d9f4: 00000000 nop
-8002d9f8: 90420011 lbu v0,17(v0)
-8002d9fc: 00000000 nop
-8002da00: a3c20048 sb v0,72(s8)
- tpoly4.cx = sprite->cx;
-8002da04: 8fc20068 lw v0,104(s8)
-8002da08: 00000000 nop
-8002da0c: 8442000a lh v0,10(v0)
-8002da10: 00000000 nop
-8002da14: a7c20044 sh v0,68(s8)
- tpoly4.cy = sprite->cy;
-8002da18: 8fc20068 lw v0,104(s8)
-8002da1c: 00000000 nop
-8002da20: 8442000c lh v0,12(v0)
-8002da24: 00000000 nop
-8002da28: a7c20046 sh v0,70(s8)
-
- GsSortTPoly4(&tpoly4);
-8002da2c: 27c20030 addiu v0,s8,48
-8002da30: 00402021 move a0,v0
-8002da34: 0c00b7fe jal 8002dff8 <GsSortTPoly4>
-8002da38: 00000000 nop
- }
- else
- {
- GsSortSimpleSprite(sprite);
- }
-}
-8002da3c: 10000004 b 8002da50 <GsSortSprite+0xcf8>
-8002da40: 00000000 nop
-
- GsSortTPoly4(&tpoly4);
- }
- else
- {
- GsSortSimpleSprite(sprite);
-8002da44: 8fc40068 lw a0,104(s8)
-8002da48: 0c00b69c jal 8002da70 <GsSortSimpleSprite>
-8002da4c: 00000000 nop
- }
-}
-8002da50: 00000000 nop
-8002da54: 03c0e821 move sp,s8
-8002da58: 8fbf0064 lw ra,100(sp)
-8002da5c: 8fbe0060 lw s8,96(sp)
-8002da60: 8fb0005c lw s0,92(sp)
-8002da64: 27bd0068 addiu sp,sp,104
-8002da68: 03e00008 jr ra
-8002da6c: 00000000 nop
-
-8002da70 <GsSortSimpleSprite>:
-
-void GsSortSimpleSprite(GsSprite *sprite)
-{
-8002da70: 27bdffd8 addiu sp,sp,-40
-8002da74: afbf0024 sw ra,36(sp)
-8002da78: afbe0020 sw s8,32(sp)
-8002da7c: 03a0f021 move s8,sp
-8002da80: afc40028 sw a0,40(s8)
- unsigned int orig_pos = linked_list_pos;
-8002da84: 3c028007 lui v0,0x8007
-8002da88: 8c421cd8 lw v0,7384(v0)
-8002da8c: 00000000 nop
-8002da90: afc20010 sw v0,16(s8)
- unsigned char pkt = 0x64;
-8002da94: 24020064 li v0,100
-8002da98: a3c20018 sb v0,24(s8)
- unsigned int md;
-
- md = setup_attribs(sprite->tpage, sprite->attribute, &pkt);
-8002da9c: 8fc20028 lw v0,40(s8)
-8002daa0: 00000000 nop
-8002daa4: 90420011 lbu v0,17(v0)
-8002daa8: 00000000 nop
-8002daac: 00402021 move a0,v0
-8002dab0: 8fc20028 lw v0,40(s8)
-8002dab4: 00000000 nop
-8002dab8: 8c420014 lw v0,20(v0)
-8002dabc: 27c30018 addiu v1,s8,24
-8002dac0: 00603021 move a2,v1
-8002dac4: 00402821 move a1,v0
-8002dac8: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002dacc: 00000000 nop
-8002dad0: afc20014 sw v0,20(s8)
-
- linked_list[linked_list_pos++] = 0x05000000;
-8002dad4: 3c028007 lui v0,0x8007
-8002dad8: 8c431cd4 lw v1,7380(v0)
-8002dadc: 3c028007 lui v0,0x8007
-8002dae0: 8c421cd8 lw v0,7384(v0)
-8002dae4: 00000000 nop
-8002dae8: 24450001 addiu a1,v0,1
-8002daec: 3c048007 lui a0,0x8007
-8002daf0: ac851cd8 sw a1,7384(a0)
-8002daf4: 00021080 sll v0,v0,0x2
-8002daf8: 00621021 addu v0,v1,v0
-8002dafc: 3c030500 lui v1,0x500
-8002db00: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002db04: 3c028007 lui v0,0x8007
-8002db08: 8c431cd4 lw v1,7380(v0)
-8002db0c: 3c028007 lui v0,0x8007
-8002db10: 8c421cd8 lw v0,7384(v0)
-8002db14: 00000000 nop
-8002db18: 24450001 addiu a1,v0,1
-8002db1c: 3c048007 lui a0,0x8007
-8002db20: ac851cd8 sw a1,7384(a0)
-8002db24: 00021080 sll v0,v0,0x2
-8002db28: 00621021 addu v0,v1,v0
-8002db2c: 8fc30014 lw v1,20(s8)
-8002db30: 00000000 nop
-8002db34: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (pkt<<24)|(sprite->b<<16)|(sprite->g<<8)|sprite->r;
-8002db38: 3c028007 lui v0,0x8007
-8002db3c: 8c431cd4 lw v1,7380(v0)
-8002db40: 3c028007 lui v0,0x8007
-8002db44: 8c421cd8 lw v0,7384(v0)
-8002db48: 00000000 nop
-8002db4c: 24450001 addiu a1,v0,1
-8002db50: 3c048007 lui a0,0x8007
-8002db54: ac851cd8 sw a1,7384(a0)
-8002db58: 00021080 sll v0,v0,0x2
-8002db5c: 00621021 addu v0,v1,v0
-8002db60: 93c30018 lbu v1,24(s8)
-8002db64: 00000000 nop
-8002db68: 00032600 sll a0,v1,0x18
-8002db6c: 8fc30028 lw v1,40(s8)
-8002db70: 00000000 nop
-8002db74: 90630010 lbu v1,16(v1)
-8002db78: 00000000 nop
-8002db7c: 00031c00 sll v1,v1,0x10
-8002db80: 00832025 or a0,a0,v1
-8002db84: 8fc30028 lw v1,40(s8)
-8002db88: 00000000 nop
-8002db8c: 9063000f lbu v1,15(v1)
-8002db90: 00000000 nop
-8002db94: 00031a00 sll v1,v1,0x8
-8002db98: 00831825 or v1,a0,v1
-8002db9c: 8fc40028 lw a0,40(s8)
-8002dba0: 00000000 nop
-8002dba4: 9084000e lbu a0,14(a0)
-8002dba8: 00000000 nop
-8002dbac: 00641825 or v1,v1,a0
-8002dbb0: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((sprite->y&0x7ff)<<16)|(sprite->x&0x7ff);
-8002dbb4: 3c028007 lui v0,0x8007
-8002dbb8: 8c431cd4 lw v1,7380(v0)
-8002dbbc: 3c028007 lui v0,0x8007
-8002dbc0: 8c421cd8 lw v0,7384(v0)
-8002dbc4: 00000000 nop
-8002dbc8: 24450001 addiu a1,v0,1
-8002dbcc: 3c048007 lui a0,0x8007
-8002dbd0: ac851cd8 sw a1,7384(a0)
-8002dbd4: 00021080 sll v0,v0,0x2
-8002dbd8: 00621021 addu v0,v1,v0
-8002dbdc: 8fc30028 lw v1,40(s8)
-8002dbe0: 00000000 nop
-8002dbe4: 84630002 lh v1,2(v1)
-8002dbe8: 00000000 nop
-8002dbec: 3063ffff andi v1,v1,0xffff
-8002dbf0: 306307ff andi v1,v1,0x7ff
-8002dbf4: 00032400 sll a0,v1,0x10
-8002dbf8: 8fc30028 lw v1,40(s8)
-8002dbfc: 00000000 nop
-8002dc00: 84630000 lh v1,0(v1)
-8002dc04: 00000000 nop
-8002dc08: 3063ffff andi v1,v1,0xffff
-8002dc0c: 306307ff andi v1,v1,0x7ff
-8002dc10: 00831825 or v1,a0,v1
-8002dc14: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (get_clutid(sprite->cx,sprite->cy)<<16)|(sprite->v<<8)|sprite->u;
-8002dc18: 3c028007 lui v0,0x8007
-8002dc1c: 8c431cd4 lw v1,7380(v0)
-8002dc20: 3c028007 lui v0,0x8007
-8002dc24: 8c421cd8 lw v0,7384(v0)
-8002dc28: 00000000 nop
-8002dc2c: 24450001 addiu a1,v0,1
-8002dc30: 3c048007 lui a0,0x8007
-8002dc34: ac851cd8 sw a1,7384(a0)
-8002dc38: 00021080 sll v0,v0,0x2
-8002dc3c: 00621021 addu v0,v1,v0
-8002dc40: 8fc30028 lw v1,40(s8)
-8002dc44: 00000000 nop
-8002dc48: 8463000a lh v1,10(v1)
-8002dc4c: 00000000 nop
-8002dc50: 3063ffff andi v1,v1,0xffff
-8002dc54: 306303ff andi v1,v1,0x3ff
-8002dc58: 00032103 sra a0,v1,0x4
-8002dc5c: 8fc30028 lw v1,40(s8)
-8002dc60: 00000000 nop
-8002dc64: 8463000c lh v1,12(v1)
-8002dc68: 00000000 nop
-8002dc6c: 3063ffff andi v1,v1,0xffff
-8002dc70: 306301ff andi v1,v1,0x1ff
-8002dc74: 00031980 sll v1,v1,0x6
-8002dc78: 00831825 or v1,a0,v1
-8002dc7c: 00032400 sll a0,v1,0x10
-8002dc80: 8fc30028 lw v1,40(s8)
-8002dc84: 00000000 nop
-8002dc88: 90630005 lbu v1,5(v1)
-8002dc8c: 00000000 nop
-8002dc90: 00031a00 sll v1,v1,0x8
-8002dc94: 00831825 or v1,a0,v1
-8002dc98: 8fc40028 lw a0,40(s8)
-8002dc9c: 00000000 nop
-8002dca0: 90840004 lbu a0,4(a0)
-8002dca4: 00000000 nop
-8002dca8: 00641825 or v1,v1,a0
-8002dcac: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (sprite->h<<16)|sprite->w;
-8002dcb0: 3c028007 lui v0,0x8007
-8002dcb4: 8c431cd4 lw v1,7380(v0)
-8002dcb8: 3c028007 lui v0,0x8007
-8002dcbc: 8c421cd8 lw v0,7384(v0)
-8002dcc0: 00000000 nop
-8002dcc4: 24450001 addiu a1,v0,1
-8002dcc8: 3c048007 lui a0,0x8007
-8002dccc: ac851cd8 sw a1,7384(a0)
-8002dcd0: 00021080 sll v0,v0,0x2
-8002dcd4: 00621021 addu v0,v1,v0
-8002dcd8: 8fc30028 lw v1,40(s8)
-8002dcdc: 00000000 nop
-8002dce0: 84630008 lh v1,8(v1)
-8002dce4: 00000000 nop
-8002dce8: 00031c00 sll v1,v1,0x10
-8002dcec: 8fc40028 lw a0,40(s8)
-8002dcf0: 00000000 nop
-8002dcf4: 84840006 lh a0,6(a0)
-8002dcf8: 00000000 nop
-8002dcfc: 00641825 or v1,v1,a0
-8002dd00: ac430000 sw v1,0(v0)
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002dd04: 3c028007 lui v0,0x8007
-8002dd08: 8c431cd4 lw v1,7380(v0)
-8002dd0c: 8fc20010 lw v0,16(s8)
-8002dd10: 00000000 nop
-8002dd14: 00021080 sll v0,v0,0x2
-8002dd18: 00621021 addu v0,v1,v0
-8002dd1c: 3c038007 lui v1,0x8007
-8002dd20: 8c641cd4 lw a0,7380(v1)
-8002dd24: 8fc30010 lw v1,16(s8)
-8002dd28: 00000000 nop
-8002dd2c: 00031880 sll v1,v1,0x2
-8002dd30: 00831821 addu v1,a0,v1
-8002dd34: 8c640000 lw a0,0(v1)
-8002dd38: 3c038007 lui v1,0x8007
-8002dd3c: 8c651cd4 lw a1,7380(v1)
-8002dd40: 3c038007 lui v1,0x8007
-8002dd44: 8c631cd8 lw v1,7384(v1)
-8002dd48: 00000000 nop
-8002dd4c: 00031880 sll v1,v1,0x2
-8002dd50: 00a31821 addu v1,a1,v1
-8002dd54: 00602821 move a1,v1
-8002dd58: 3c0300ff lui v1,0xff
-8002dd5c: 3463ffff ori v1,v1,0xffff
-8002dd60: 00a31824 and v1,a1,v1
-8002dd64: 00831825 or v1,a0,v1
-8002dd68: ac430000 sw v1,0(v0)
-}
-8002dd6c: 00000000 nop
-8002dd70: 03c0e821 move sp,s8
-8002dd74: 8fbf0024 lw ra,36(sp)
-8002dd78: 8fbe0020 lw s8,32(sp)
-8002dd7c: 27bd0028 addiu sp,sp,40
-8002dd80: 03e00008 jr ra
-8002dd84: 00000000 nop
-
-8002dd88 <GsSortRectangle>:
-
-void GsSortRectangle(GsRectangle *rectangle)
-{
-8002dd88: 27bdffd8 addiu sp,sp,-40
-8002dd8c: afbf0024 sw ra,36(sp)
-8002dd90: afbe0020 sw s8,32(sp)
-8002dd94: 03a0f021 move s8,sp
-8002dd98: afc40028 sw a0,40(s8)
- unsigned int orig_pos = linked_list_pos;
-8002dd9c: 3c028007 lui v0,0x8007
-8002dda0: 8c421cd8 lw v0,7384(v0)
-8002dda4: 00000000 nop
-8002dda8: afc20010 sw v0,16(s8)
- unsigned char pkt = 0x60;
-8002ddac: 24020060 li v0,96
-8002ddb0: a3c20018 sb v0,24(s8)
- unsigned int md;
-
- md = setup_attribs(0, rectangle->attribute, &pkt);
-8002ddb4: 8fc20028 lw v0,40(s8)
-8002ddb8: 00000000 nop
-8002ddbc: 8c42000c lw v0,12(v0)
-8002ddc0: 27c30018 addiu v1,s8,24
-8002ddc4: 00603021 move a2,v1
-8002ddc8: 00402821 move a1,v0
-8002ddcc: 00002021 move a0,zero
-8002ddd0: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002ddd4: 00000000 nop
-8002ddd8: afc20014 sw v0,20(s8)
-
- linked_list[linked_list_pos++] = 0x04000000;
-8002dddc: 3c028007 lui v0,0x8007
-8002dde0: 8c431cd4 lw v1,7380(v0)
-8002dde4: 3c028007 lui v0,0x8007
-8002dde8: 8c421cd8 lw v0,7384(v0)
-8002ddec: 00000000 nop
-8002ddf0: 24450001 addiu a1,v0,1
-8002ddf4: 3c048007 lui a0,0x8007
-8002ddf8: ac851cd8 sw a1,7384(a0)
-8002ddfc: 00021080 sll v0,v0,0x2
-8002de00: 00621021 addu v0,v1,v0
-8002de04: 3c030400 lui v1,0x400
-8002de08: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = md;
-8002de0c: 3c028007 lui v0,0x8007
-8002de10: 8c431cd4 lw v1,7380(v0)
-8002de14: 3c028007 lui v0,0x8007
-8002de18: 8c421cd8 lw v0,7384(v0)
-8002de1c: 00000000 nop
-8002de20: 24450001 addiu a1,v0,1
-8002de24: 3c048007 lui a0,0x8007
-8002de28: ac851cd8 sw a1,7384(a0)
-8002de2c: 00021080 sll v0,v0,0x2
-8002de30: 00621021 addu v0,v1,v0
-8002de34: 8fc30014 lw v1,20(s8)
-8002de38: 00000000 nop
-8002de3c: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (pkt<<24)|(rectangle->b<<16)|(rectangle->g<<8)|(rectangle->r);
-8002de40: 3c028007 lui v0,0x8007
-8002de44: 8c431cd4 lw v1,7380(v0)
-8002de48: 3c028007 lui v0,0x8007
-8002de4c: 8c421cd8 lw v0,7384(v0)
-8002de50: 00000000 nop
-8002de54: 24450001 addiu a1,v0,1
-8002de58: 3c048007 lui a0,0x8007
-8002de5c: ac851cd8 sw a1,7384(a0)
-8002de60: 00021080 sll v0,v0,0x2
-8002de64: 00621021 addu v0,v1,v0
-8002de68: 93c30018 lbu v1,24(s8)
-8002de6c: 00000000 nop
-8002de70: 00032600 sll a0,v1,0x18
-8002de74: 8fc30028 lw v1,40(s8)
-8002de78: 00000000 nop
-8002de7c: 9063000a lbu v1,10(v1)
-8002de80: 00000000 nop
-8002de84: 00031c00 sll v1,v1,0x10
-8002de88: 00832025 or a0,a0,v1
-8002de8c: 8fc30028 lw v1,40(s8)
-8002de90: 00000000 nop
-8002de94: 90630009 lbu v1,9(v1)
-8002de98: 00000000 nop
-8002de9c: 00031a00 sll v1,v1,0x8
-8002dea0: 00831825 or v1,a0,v1
-8002dea4: 8fc40028 lw a0,40(s8)
-8002dea8: 00000000 nop
-8002deac: 90840008 lbu a0,8(a0)
-8002deb0: 00000000 nop
-8002deb4: 00641825 or v1,v1,a0
-8002deb8: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((rectangle->y&0x7ff)<<16)|(rectangle->x&0x7ff);
-8002debc: 3c028007 lui v0,0x8007
-8002dec0: 8c431cd4 lw v1,7380(v0)
-8002dec4: 3c028007 lui v0,0x8007
-8002dec8: 8c421cd8 lw v0,7384(v0)
-8002decc: 00000000 nop
-8002ded0: 24450001 addiu a1,v0,1
-8002ded4: 3c048007 lui a0,0x8007
-8002ded8: ac851cd8 sw a1,7384(a0)
-8002dedc: 00021080 sll v0,v0,0x2
-8002dee0: 00621021 addu v0,v1,v0
-8002dee4: 8fc30028 lw v1,40(s8)
-8002dee8: 00000000 nop
-8002deec: 84630002 lh v1,2(v1)
-8002def0: 00000000 nop
-8002def4: 3063ffff andi v1,v1,0xffff
-8002def8: 306307ff andi v1,v1,0x7ff
-8002defc: 00032400 sll a0,v1,0x10
-8002df00: 8fc30028 lw v1,40(s8)
-8002df04: 00000000 nop
-8002df08: 84630000 lh v1,0(v1)
-8002df0c: 00000000 nop
-8002df10: 3063ffff andi v1,v1,0xffff
-8002df14: 306307ff andi v1,v1,0x7ff
-8002df18: 00831825 or v1,a0,v1
-8002df1c: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (rectangle->h<<16)|rectangle->w;
-8002df20: 3c028007 lui v0,0x8007
-8002df24: 8c431cd4 lw v1,7380(v0)
-8002df28: 3c028007 lui v0,0x8007
-8002df2c: 8c421cd8 lw v0,7384(v0)
-8002df30: 00000000 nop
-8002df34: 24450001 addiu a1,v0,1
-8002df38: 3c048007 lui a0,0x8007
-8002df3c: ac851cd8 sw a1,7384(a0)
-8002df40: 00021080 sll v0,v0,0x2
-8002df44: 00621021 addu v0,v1,v0
-8002df48: 8fc30028 lw v1,40(s8)
-8002df4c: 00000000 nop
-8002df50: 84630006 lh v1,6(v1)
-8002df54: 00000000 nop
-8002df58: 00031c00 sll v1,v1,0x10
-8002df5c: 8fc40028 lw a0,40(s8)
-8002df60: 00000000 nop
-8002df64: 84840004 lh a0,4(a0)
-8002df68: 00000000 nop
-8002df6c: 00641825 or v1,v1,a0
-8002df70: ac430000 sw v1,0(v0)
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002df74: 3c028007 lui v0,0x8007
-8002df78: 8c431cd4 lw v1,7380(v0)
-8002df7c: 8fc20010 lw v0,16(s8)
-8002df80: 00000000 nop
-8002df84: 00021080 sll v0,v0,0x2
-8002df88: 00621021 addu v0,v1,v0
-8002df8c: 3c038007 lui v1,0x8007
-8002df90: 8c641cd4 lw a0,7380(v1)
-8002df94: 8fc30010 lw v1,16(s8)
-8002df98: 00000000 nop
-8002df9c: 00031880 sll v1,v1,0x2
-8002dfa0: 00831821 addu v1,a0,v1
-8002dfa4: 8c640000 lw a0,0(v1)
-8002dfa8: 3c038007 lui v1,0x8007
-8002dfac: 8c651cd4 lw a1,7380(v1)
-8002dfb0: 3c038007 lui v1,0x8007
-8002dfb4: 8c631cd8 lw v1,7384(v1)
-8002dfb8: 00000000 nop
-8002dfbc: 00031880 sll v1,v1,0x2
-8002dfc0: 00a31821 addu v1,a1,v1
-8002dfc4: 00602821 move a1,v1
-8002dfc8: 3c0300ff lui v1,0xff
-8002dfcc: 3463ffff ori v1,v1,0xffff
-8002dfd0: 00a31824 and v1,a1,v1
-8002dfd4: 00831825 or v1,a0,v1
-8002dfd8: ac430000 sw v1,0(v0)
-}
-8002dfdc: 00000000 nop
-8002dfe0: 03c0e821 move sp,s8
-8002dfe4: 8fbf0024 lw ra,36(sp)
-8002dfe8: 8fbe0020 lw s8,32(sp)
-8002dfec: 27bd0028 addiu sp,sp,40
-8002dff0: 03e00008 jr ra
-8002dff4: 00000000 nop
-
-8002dff8 <GsSortTPoly4>:
-
-void GsSortTPoly4(GsTPoly4 *tpoly4)
-{
-8002dff8: 27bdffd8 addiu sp,sp,-40
-8002dffc: afbf0024 sw ra,36(sp)
-8002e000: afbe0020 sw s8,32(sp)
-8002e004: 03a0f021 move s8,sp
-8002e008: afc40028 sw a0,40(s8)
- unsigned int orig_pos = linked_list_pos;
-8002e00c: 3c028007 lui v0,0x8007
-8002e010: 8c421cd8 lw v0,7384(v0)
-8002e014: 00000000 nop
-8002e018: afc20010 sw v0,16(s8)
- unsigned char pkt = 0x2c;
-8002e01c: 2402002c li v0,44
-8002e020: a3c20018 sb v0,24(s8)
-
- /*md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt);*/
-
- //printf("tpoly4->tpage = %d\n", tpoly4->tpage);
-
- md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt);
-8002e024: 8fc20028 lw v0,40(s8)
-8002e028: 00000000 nop
-8002e02c: 90420018 lbu v0,24(v0)
-8002e030: 00000000 nop
-8002e034: 00402021 move a0,v0
-8002e038: 8fc20028 lw v0,40(s8)
-8002e03c: 00000000 nop
-8002e040: 8c420024 lw v0,36(v0)
-8002e044: 27c30018 addiu v1,s8,24
-8002e048: 00603021 move a2,v1
-8002e04c: 00402821 move a1,v0
-8002e050: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002e054: 00000000 nop
-8002e058: afc20014 sw v0,20(s8)
-
- //printf("pkt = %x\n", pkt);
-
- linked_list[linked_list_pos++] = 0x09000000;
-8002e05c: 3c028007 lui v0,0x8007
-8002e060: 8c431cd4 lw v1,7380(v0)
-8002e064: 3c028007 lui v0,0x8007
-8002e068: 8c421cd8 lw v0,7384(v0)
-8002e06c: 00000000 nop
-8002e070: 24450001 addiu a1,v0,1
-8002e074: 3c048007 lui a0,0x8007
-8002e078: ac851cd8 sw a1,7384(a0)
-8002e07c: 00021080 sll v0,v0,0x2
-8002e080: 00621021 addu v0,v1,v0
-8002e084: 3c030900 lui v1,0x900
-8002e088: ac430000 sw v1,0(v0)
- //linked_list[linked_list_pos++] = md;
- //linked_list[linked_list_pos++] = 0xe0000000;
- //linked_list[linked_list_pos++] = 0xe1000105;
-
- //printf("tpoly4 md: %08x\n", md);
- linked_list[linked_list_pos++] = (pkt<<24)|(tpoly4->b<<16)|(tpoly4->g<<8)|(tpoly4->r);
-8002e08c: 3c028007 lui v0,0x8007
-8002e090: 8c431cd4 lw v1,7380(v0)
-8002e094: 3c028007 lui v0,0x8007
-8002e098: 8c421cd8 lw v0,7384(v0)
-8002e09c: 00000000 nop
-8002e0a0: 24450001 addiu a1,v0,1
-8002e0a4: 3c048007 lui a0,0x8007
-8002e0a8: ac851cd8 sw a1,7384(a0)
-8002e0ac: 00021080 sll v0,v0,0x2
-8002e0b0: 00621021 addu v0,v1,v0
-8002e0b4: 93c30018 lbu v1,24(s8)
-8002e0b8: 00000000 nop
-8002e0bc: 00032600 sll a0,v1,0x18
-8002e0c0: 8fc30028 lw v1,40(s8)
-8002e0c4: 00000000 nop
-8002e0c8: 90630012 lbu v1,18(v1)
-8002e0cc: 00000000 nop
-8002e0d0: 00031c00 sll v1,v1,0x10
-8002e0d4: 00832025 or a0,a0,v1
-8002e0d8: 8fc30028 lw v1,40(s8)
-8002e0dc: 00000000 nop
-8002e0e0: 90630011 lbu v1,17(v1)
-8002e0e4: 00000000 nop
-8002e0e8: 00031a00 sll v1,v1,0x8
-8002e0ec: 00831825 or v1,a0,v1
-8002e0f0: 8fc40028 lw a0,40(s8)
-8002e0f4: 00000000 nop
-8002e0f8: 90840010 lbu a0,16(a0)
-8002e0fc: 00000000 nop
-8002e100: 00641825 or v1,v1,a0
-8002e104: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[0]&0x7ff)<<16)|(tpoly4->x[0]&0x7ff);
-8002e108: 3c028007 lui v0,0x8007
-8002e10c: 8c431cd4 lw v1,7380(v0)
-8002e110: 3c028007 lui v0,0x8007
-8002e114: 8c421cd8 lw v0,7384(v0)
-8002e118: 00000000 nop
-8002e11c: 24450001 addiu a1,v0,1
-8002e120: 3c048007 lui a0,0x8007
-8002e124: ac851cd8 sw a1,7384(a0)
-8002e128: 00021080 sll v0,v0,0x2
-8002e12c: 00621021 addu v0,v1,v0
-8002e130: 8fc30028 lw v1,40(s8)
-8002e134: 00000000 nop
-8002e138: 84630008 lh v1,8(v1)
-8002e13c: 00000000 nop
-8002e140: 3063ffff andi v1,v1,0xffff
-8002e144: 306307ff andi v1,v1,0x7ff
-8002e148: 00032400 sll a0,v1,0x10
-8002e14c: 8fc30028 lw v1,40(s8)
-8002e150: 00000000 nop
-8002e154: 84630000 lh v1,0(v1)
-8002e158: 00000000 nop
-8002e15c: 3063ffff andi v1,v1,0xffff
-8002e160: 306307ff andi v1,v1,0x7ff
-8002e164: 00831825 or v1,a0,v1
-8002e168: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (get_clutid(tpoly4->cx, tpoly4->cy)<<16)|(tpoly4->v[0]<<8)|tpoly4->u[0];
-8002e16c: 3c028007 lui v0,0x8007
-8002e170: 8c431cd4 lw v1,7380(v0)
-8002e174: 3c028007 lui v0,0x8007
-8002e178: 8c421cd8 lw v0,7384(v0)
-8002e17c: 00000000 nop
-8002e180: 24450001 addiu a1,v0,1
-8002e184: 3c048007 lui a0,0x8007
-8002e188: ac851cd8 sw a1,7384(a0)
-8002e18c: 00021080 sll v0,v0,0x2
-8002e190: 00621021 addu v0,v1,v0
-8002e194: 8fc30028 lw v1,40(s8)
-8002e198: 00000000 nop
-8002e19c: 84630014 lh v1,20(v1)
-8002e1a0: 00000000 nop
-8002e1a4: 3063ffff andi v1,v1,0xffff
-8002e1a8: 306303ff andi v1,v1,0x3ff
-8002e1ac: 00032103 sra a0,v1,0x4
-8002e1b0: 8fc30028 lw v1,40(s8)
-8002e1b4: 00000000 nop
-8002e1b8: 84630016 lh v1,22(v1)
-8002e1bc: 00000000 nop
-8002e1c0: 3063ffff andi v1,v1,0xffff
-8002e1c4: 306301ff andi v1,v1,0x1ff
-8002e1c8: 00031980 sll v1,v1,0x6
-8002e1cc: 00831825 or v1,a0,v1
-8002e1d0: 00032400 sll a0,v1,0x10
-8002e1d4: 8fc30028 lw v1,40(s8)
-8002e1d8: 00000000 nop
-8002e1dc: 9063001d lbu v1,29(v1)
-8002e1e0: 00000000 nop
-8002e1e4: 00031a00 sll v1,v1,0x8
-8002e1e8: 00831825 or v1,a0,v1
-8002e1ec: 8fc40028 lw a0,40(s8)
-8002e1f0: 00000000 nop
-8002e1f4: 90840019 lbu a0,25(a0)
-8002e1f8: 00000000 nop
-8002e1fc: 00641825 or v1,v1,a0
-8002e200: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[1]&0x7ff)<<16)|(tpoly4->x[1]&0x7ff);
-8002e204: 3c028007 lui v0,0x8007
-8002e208: 8c431cd4 lw v1,7380(v0)
-8002e20c: 3c028007 lui v0,0x8007
-8002e210: 8c421cd8 lw v0,7384(v0)
-8002e214: 00000000 nop
-8002e218: 24450001 addiu a1,v0,1
-8002e21c: 3c048007 lui a0,0x8007
-8002e220: ac851cd8 sw a1,7384(a0)
-8002e224: 00021080 sll v0,v0,0x2
-8002e228: 00621021 addu v0,v1,v0
-8002e22c: 8fc30028 lw v1,40(s8)
-8002e230: 00000000 nop
-8002e234: 8463000a lh v1,10(v1)
-8002e238: 00000000 nop
-8002e23c: 3063ffff andi v1,v1,0xffff
-8002e240: 306307ff andi v1,v1,0x7ff
-8002e244: 00032400 sll a0,v1,0x10
-8002e248: 8fc30028 lw v1,40(s8)
-8002e24c: 00000000 nop
-8002e250: 84630002 lh v1,2(v1)
-8002e254: 00000000 nop
-8002e258: 3063ffff andi v1,v1,0xffff
-8002e25c: 306307ff andi v1,v1,0x7ff
-8002e260: 00831825 or v1,a0,v1
-8002e264: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (md << 16)|(tpoly4->v[1]<<8)|tpoly4->u[1];
-8002e268: 3c028007 lui v0,0x8007
-8002e26c: 8c431cd4 lw v1,7380(v0)
-8002e270: 3c028007 lui v0,0x8007
-8002e274: 8c421cd8 lw v0,7384(v0)
-8002e278: 00000000 nop
-8002e27c: 24450001 addiu a1,v0,1
-8002e280: 3c048007 lui a0,0x8007
-8002e284: ac851cd8 sw a1,7384(a0)
-8002e288: 00021080 sll v0,v0,0x2
-8002e28c: 00621021 addu v0,v1,v0
-8002e290: 8fc30014 lw v1,20(s8)
-8002e294: 00000000 nop
-8002e298: 00031c00 sll v1,v1,0x10
-8002e29c: 8fc40028 lw a0,40(s8)
-8002e2a0: 00000000 nop
-8002e2a4: 9084001e lbu a0,30(a0)
-8002e2a8: 00000000 nop
-8002e2ac: 00042200 sll a0,a0,0x8
-8002e2b0: 00641825 or v1,v1,a0
-8002e2b4: 8fc40028 lw a0,40(s8)
-8002e2b8: 00000000 nop
-8002e2bc: 9084001a lbu a0,26(a0)
-8002e2c0: 00000000 nop
-8002e2c4: 00641825 or v1,v1,a0
-8002e2c8: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[2]&0x7ff)<<16)|(tpoly4->x[2]&0x7ff);
-8002e2cc: 3c028007 lui v0,0x8007
-8002e2d0: 8c431cd4 lw v1,7380(v0)
-8002e2d4: 3c028007 lui v0,0x8007
-8002e2d8: 8c421cd8 lw v0,7384(v0)
-8002e2dc: 00000000 nop
-8002e2e0: 24450001 addiu a1,v0,1
-8002e2e4: 3c048007 lui a0,0x8007
-8002e2e8: ac851cd8 sw a1,7384(a0)
-8002e2ec: 00021080 sll v0,v0,0x2
-8002e2f0: 00621021 addu v0,v1,v0
-8002e2f4: 8fc30028 lw v1,40(s8)
-8002e2f8: 00000000 nop
-8002e2fc: 8463000c lh v1,12(v1)
-8002e300: 00000000 nop
-8002e304: 3063ffff andi v1,v1,0xffff
-8002e308: 306307ff andi v1,v1,0x7ff
-8002e30c: 00032400 sll a0,v1,0x10
-8002e310: 8fc30028 lw v1,40(s8)
-8002e314: 00000000 nop
-8002e318: 84630004 lh v1,4(v1)
-8002e31c: 00000000 nop
-8002e320: 3063ffff andi v1,v1,0xffff
-8002e324: 306307ff andi v1,v1,0x7ff
-8002e328: 00831825 or v1,a0,v1
-8002e32c: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (tpoly4->v[2]<<8)|tpoly4->u[2];
-8002e330: 3c028007 lui v0,0x8007
-8002e334: 8c431cd4 lw v1,7380(v0)
-8002e338: 3c028007 lui v0,0x8007
-8002e33c: 8c421cd8 lw v0,7384(v0)
-8002e340: 00000000 nop
-8002e344: 24450001 addiu a1,v0,1
-8002e348: 3c048007 lui a0,0x8007
-8002e34c: ac851cd8 sw a1,7384(a0)
-8002e350: 00021080 sll v0,v0,0x2
-8002e354: 00621021 addu v0,v1,v0
-8002e358: 8fc30028 lw v1,40(s8)
-8002e35c: 00000000 nop
-8002e360: 9063001f lbu v1,31(v1)
-8002e364: 00000000 nop
-8002e368: 00031a00 sll v1,v1,0x8
-8002e36c: 8fc40028 lw a0,40(s8)
-8002e370: 00000000 nop
-8002e374: 9084001b lbu a0,27(a0)
-8002e378: 00000000 nop
-8002e37c: 00641825 or v1,v1,a0
-8002e380: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[3]&0x7ff)<<16)|(tpoly4->x[3]&0x7ff);
-8002e384: 3c028007 lui v0,0x8007
-8002e388: 8c431cd4 lw v1,7380(v0)
-8002e38c: 3c028007 lui v0,0x8007
-8002e390: 8c421cd8 lw v0,7384(v0)
-8002e394: 00000000 nop
-8002e398: 24450001 addiu a1,v0,1
-8002e39c: 3c048007 lui a0,0x8007
-8002e3a0: ac851cd8 sw a1,7384(a0)
-8002e3a4: 00021080 sll v0,v0,0x2
-8002e3a8: 00621021 addu v0,v1,v0
-8002e3ac: 8fc30028 lw v1,40(s8)
-8002e3b0: 00000000 nop
-8002e3b4: 8463000e lh v1,14(v1)
-8002e3b8: 00000000 nop
-8002e3bc: 3063ffff andi v1,v1,0xffff
-8002e3c0: 306307ff andi v1,v1,0x7ff
-8002e3c4: 00032400 sll a0,v1,0x10
-8002e3c8: 8fc30028 lw v1,40(s8)
-8002e3cc: 00000000 nop
-8002e3d0: 84630006 lh v1,6(v1)
-8002e3d4: 00000000 nop
-8002e3d8: 3063ffff andi v1,v1,0xffff
-8002e3dc: 306307ff andi v1,v1,0x7ff
-8002e3e0: 00831825 or v1,a0,v1
-8002e3e4: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (tpoly4->v[3]<<8)|tpoly4->u[3];
-8002e3e8: 3c028007 lui v0,0x8007
-8002e3ec: 8c431cd4 lw v1,7380(v0)
-8002e3f0: 3c028007 lui v0,0x8007
-8002e3f4: 8c421cd8 lw v0,7384(v0)
-8002e3f8: 00000000 nop
-8002e3fc: 24450001 addiu a1,v0,1
-8002e400: 3c048007 lui a0,0x8007
-8002e404: ac851cd8 sw a1,7384(a0)
-8002e408: 00021080 sll v0,v0,0x2
-8002e40c: 00621021 addu v0,v1,v0
-8002e410: 8fc30028 lw v1,40(s8)
-8002e414: 00000000 nop
-8002e418: 90630020 lbu v1,32(v1)
-8002e41c: 00000000 nop
-8002e420: 00031a00 sll v1,v1,0x8
-8002e424: 8fc40028 lw a0,40(s8)
-8002e428: 00000000 nop
-8002e42c: 9084001c lbu a0,28(a0)
-8002e430: 00000000 nop
-8002e434: 00641825 or v1,v1,a0
-8002e438: ac430000 sw v1,0(v0)
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002e43c: 3c028007 lui v0,0x8007
-8002e440: 8c431cd4 lw v1,7380(v0)
-8002e444: 8fc20010 lw v0,16(s8)
-8002e448: 00000000 nop
-8002e44c: 00021080 sll v0,v0,0x2
-8002e450: 00621021 addu v0,v1,v0
-8002e454: 3c038007 lui v1,0x8007
-8002e458: 8c641cd4 lw a0,7380(v1)
-8002e45c: 8fc30010 lw v1,16(s8)
-8002e460: 00000000 nop
-8002e464: 00031880 sll v1,v1,0x2
-8002e468: 00831821 addu v1,a0,v1
-8002e46c: 8c640000 lw a0,0(v1)
-8002e470: 3c038007 lui v1,0x8007
-8002e474: 8c651cd4 lw a1,7380(v1)
-8002e478: 3c038007 lui v1,0x8007
-8002e47c: 8c631cd8 lw v1,7384(v1)
-8002e480: 00000000 nop
-8002e484: 00031880 sll v1,v1,0x2
-8002e488: 00a31821 addu v1,a1,v1
-8002e48c: 00602821 move a1,v1
-8002e490: 3c0300ff lui v1,0xff
-8002e494: 3463ffff ori v1,v1,0xffff
-8002e498: 00a31824 and v1,a1,v1
-8002e49c: 00831825 or v1,a0,v1
-8002e4a0: ac430000 sw v1,0(v0)
-}
-8002e4a4: 00000000 nop
-8002e4a8: 03c0e821 move sp,s8
-8002e4ac: 8fbf0024 lw ra,36(sp)
-8002e4b0: 8fbe0020 lw s8,32(sp)
-8002e4b4: 27bd0028 addiu sp,sp,40
-8002e4b8: 03e00008 jr ra
-8002e4bc: 00000000 nop
-
-8002e4c0 <GsSortTPoly3>:
-
-void GsSortTPoly3(GsTPoly3 *tpoly3)
-{
-8002e4c0: 27bdffd8 addiu sp,sp,-40
-8002e4c4: afbf0024 sw ra,36(sp)
-8002e4c8: afbe0020 sw s8,32(sp)
-8002e4cc: 03a0f021 move s8,sp
-8002e4d0: afc40028 sw a0,40(s8)
- int orig_pos = linked_list_pos;
-8002e4d4: 3c028007 lui v0,0x8007
-8002e4d8: 8c421cd8 lw v0,7384(v0)
-8002e4dc: 00000000 nop
-8002e4e0: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x24;
-8002e4e4: 24020024 li v0,36
-8002e4e8: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt);
-8002e4ec: 8fc20028 lw v0,40(s8)
-8002e4f0: 00000000 nop
-8002e4f4: 90420020 lbu v0,32(v0)
-8002e4f8: 00000000 nop
-8002e4fc: 00402021 move a0,v0
-8002e500: 8fc20028 lw v0,40(s8)
-8002e504: 00000000 nop
-8002e508: 8c42001c lw v0,28(v0)
-8002e50c: 27c3001c addiu v1,s8,28
-8002e510: 00603021 move a2,v1
-8002e514: 00402821 move a1,v0
-8002e518: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8002e51c: 00000000 nop
-8002e520: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x07000000;
-8002e524: 3c028007 lui v0,0x8007
-8002e528: 8c431cd4 lw v1,7380(v0)
-8002e52c: 3c028007 lui v0,0x8007
-8002e530: 8c421cd8 lw v0,7384(v0)
-8002e534: 00000000 nop
-8002e538: 24450001 addiu a1,v0,1
-8002e53c: 3c048007 lui a0,0x8007
-8002e540: ac851cd8 sw a1,7384(a0)
-8002e544: 00021080 sll v0,v0,0x2
-8002e548: 00621021 addu v0,v1,v0
-8002e54c: 3c030700 lui v1,0x700
-8002e550: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] =
-8002e554: 3c028007 lui v0,0x8007
-8002e558: 8c431cd4 lw v1,7380(v0)
-8002e55c: 3c028007 lui v0,0x8007
-8002e560: 8c421cd8 lw v0,7384(v0)
-8002e564: 00000000 nop
-8002e568: 24450001 addiu a1,v0,1
-8002e56c: 3c048007 lui a0,0x8007
-8002e570: ac851cd8 sw a1,7384(a0)
-8002e574: 00021080 sll v0,v0,0x2
-8002e578: 00621021 addu v0,v1,v0
- (pkt<<24)|(tpoly3->b<<16)|(tpoly3->g<<8)|(tpoly3->r);
-8002e57c: 93c3001c lbu v1,28(s8)
-8002e580: 00000000 nop
-8002e584: 00032600 sll a0,v1,0x18
-8002e588: 8fc30028 lw v1,40(s8)
-8002e58c: 00000000 nop
-8002e590: 90630002 lbu v1,2(v1)
-8002e594: 00000000 nop
-8002e598: 00031c00 sll v1,v1,0x10
-8002e59c: 00832025 or a0,a0,v1
-8002e5a0: 8fc30028 lw v1,40(s8)
-8002e5a4: 00000000 nop
-8002e5a8: 90630001 lbu v1,1(v1)
-8002e5ac: 00000000 nop
-8002e5b0: 00031a00 sll v1,v1,0x8
-8002e5b4: 00831825 or v1,a0,v1
-8002e5b8: 8fc40028 lw a0,40(s8)
-8002e5bc: 00000000 nop
-8002e5c0: 90840000 lbu a0,0(a0)
-8002e5c4: 00000000 nop
-8002e5c8: 00641825 or v1,v1,a0
- unsigned int md;
-
- md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt);
-
- linked_list[linked_list_pos++] = 0x07000000;
- linked_list[linked_list_pos++] =
-8002e5cc: ac430000 sw v1,0(v0)
- (pkt<<24)|(tpoly3->b<<16)|(tpoly3->g<<8)|(tpoly3->r);
-
- for(x = 0; x < 3; x++)
-8002e5d0: afc00010 sw zero,16(s8)
-8002e5d4: 10000084 b 8002e7e8 <GsSortTPoly3+0x328>
-8002e5d8: 00000000 nop
- {
- linked_list[linked_list_pos++] = ((tpoly3->y[x]&0x7ff)<<16)|(tpoly3->x[x]&0x7ff);
-8002e5dc: 3c028007 lui v0,0x8007
-8002e5e0: 8c431cd4 lw v1,7380(v0)
-8002e5e4: 3c028007 lui v0,0x8007
-8002e5e8: 8c421cd8 lw v0,7384(v0)
-8002e5ec: 00000000 nop
-8002e5f0: 24450001 addiu a1,v0,1
-8002e5f4: 3c048007 lui a0,0x8007
-8002e5f8: ac851cd8 sw a1,7384(a0)
-8002e5fc: 00021080 sll v0,v0,0x2
-8002e600: 00621821 addu v1,v1,v0
-8002e604: 8fc40028 lw a0,40(s8)
-8002e608: 8fc20010 lw v0,16(s8)
-8002e60c: 00000000 nop
-8002e610: 24420004 addiu v0,v0,4
-8002e614: 00021040 sll v0,v0,0x1
-8002e618: 00821021 addu v0,a0,v0
-8002e61c: 84420002 lh v0,2(v0)
-8002e620: 00000000 nop
-8002e624: 3042ffff andi v0,v0,0xffff
-8002e628: 304207ff andi v0,v0,0x7ff
-8002e62c: 00022400 sll a0,v0,0x10
-8002e630: 8fc50028 lw a1,40(s8)
-8002e634: 8fc20010 lw v0,16(s8)
-8002e638: 00000000 nop
-8002e63c: 00021040 sll v0,v0,0x1
-8002e640: 00a21021 addu v0,a1,v0
-8002e644: 84420004 lh v0,4(v0)
-8002e648: 00000000 nop
-8002e64c: 3042ffff andi v0,v0,0xffff
-8002e650: 304207ff andi v0,v0,0x7ff
-8002e654: 00821025 or v0,a0,v0
-8002e658: ac620000 sw v0,0(v1)
- linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x];
-8002e65c: 3c028007 lui v0,0x8007
-8002e660: 8c431cd4 lw v1,7380(v0)
-8002e664: 3c028007 lui v0,0x8007
-8002e668: 8c421cd8 lw v0,7384(v0)
-8002e66c: 00000000 nop
-8002e670: 00021080 sll v0,v0,0x2
-8002e674: 00621021 addu v0,v1,v0
-8002e678: 8fc40028 lw a0,40(s8)
-8002e67c: 8fc30010 lw v1,16(s8)
-8002e680: 00000000 nop
-8002e684: 00831821 addu v1,a0,v1
-8002e688: 90630010 lbu v1,16(v1)
-8002e68c: 00000000 nop
-8002e690: 00031a00 sll v1,v1,0x8
-8002e694: 8fc50028 lw a1,40(s8)
-8002e698: 8fc40010 lw a0,16(s8)
-8002e69c: 00000000 nop
-8002e6a0: 00a42021 addu a0,a1,a0
-8002e6a4: 90840013 lbu a0,19(a0)
-8002e6a8: 00000000 nop
-8002e6ac: 00641825 or v1,v1,a0
-8002e6b0: ac430000 sw v1,0(v0)
-
- switch(x)
-8002e6b4: 8fc20010 lw v0,16(s8)
-8002e6b8: 00000000 nop
-8002e6bc: 10400006 beqz v0,8002e6d8 <GsSortTPoly3+0x218>
-8002e6c0: 00000000 nop
-8002e6c4: 24030001 li v1,1
-8002e6c8: 10430026 beq v0,v1,8002e764 <GsSortTPoly3+0x2a4>
-8002e6cc: 00000000 nop
-8002e6d0: 1000003a b 8002e7bc <GsSortTPoly3+0x2fc>
-8002e6d4: 00000000 nop
- {
- case 0:
- linked_list[linked_list_pos++] |=
-8002e6d8: 3c028007 lui v0,0x8007
-8002e6dc: 8c441cd4 lw a0,7380(v0)
-8002e6e0: 3c028007 lui v0,0x8007
-8002e6e4: 8c421cd8 lw v0,7384(v0)
-8002e6e8: 00000000 nop
-8002e6ec: 24450001 addiu a1,v0,1
-8002e6f0: 3c038007 lui v1,0x8007
-8002e6f4: ac651cd8 sw a1,7384(v1)
-8002e6f8: 00021880 sll v1,v0,0x2
-8002e6fc: 00831821 addu v1,a0,v1
-8002e700: 3c048007 lui a0,0x8007
-8002e704: 8c841cd4 lw a0,7380(a0)
-8002e708: 00021080 sll v0,v0,0x2
-8002e70c: 00821021 addu v0,a0,v0
-8002e710: 8c420000 lw v0,0(v0)
- get_clutid(tpoly3->cx, tpoly3->cy) << 16;
-8002e714: 8fc40028 lw a0,40(s8)
-8002e718: 00000000 nop
-8002e71c: 84840016 lh a0,22(a0)
-8002e720: 00000000 nop
-8002e724: 3084ffff andi a0,a0,0xffff
-8002e728: 308403ff andi a0,a0,0x3ff
-8002e72c: 00042903 sra a1,a0,0x4
-8002e730: 8fc40028 lw a0,40(s8)
-8002e734: 00000000 nop
-8002e738: 84840018 lh a0,24(a0)
-8002e73c: 00000000 nop
-8002e740: 3084ffff andi a0,a0,0xffff
-8002e744: 308401ff andi a0,a0,0x1ff
-8002e748: 00042180 sll a0,a0,0x6
-8002e74c: 00a42025 or a0,a1,a0
-8002e750: 00042400 sll a0,a0,0x10
- linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x];
-
- switch(x)
- {
- case 0:
- linked_list[linked_list_pos++] |=
-8002e754: 00441025 or v0,v0,a0
-8002e758: ac620000 sw v0,0(v1)
- get_clutid(tpoly3->cx, tpoly3->cy) << 16;
- break;
-8002e75c: 1000001e b 8002e7d8 <GsSortTPoly3+0x318>
-8002e760: 00000000 nop
- case 1:
- linked_list[linked_list_pos++] |=
-8002e764: 3c028007 lui v0,0x8007
-8002e768: 8c441cd4 lw a0,7380(v0)
-8002e76c: 3c028007 lui v0,0x8007
-8002e770: 8c421cd8 lw v0,7384(v0)
-8002e774: 00000000 nop
-8002e778: 24450001 addiu a1,v0,1
-8002e77c: 3c038007 lui v1,0x8007
-8002e780: ac651cd8 sw a1,7384(v1)
-8002e784: 00021880 sll v1,v0,0x2
-8002e788: 00831821 addu v1,a0,v1
-8002e78c: 3c048007 lui a0,0x8007
-8002e790: 8c841cd4 lw a0,7380(a0)
-8002e794: 00021080 sll v0,v0,0x2
-8002e798: 00821021 addu v0,a0,v0
-8002e79c: 8c440000 lw a0,0(v0)
- md << 16;
-8002e7a0: 8fc20018 lw v0,24(s8)
-8002e7a4: 00000000 nop
-8002e7a8: 00021400 sll v0,v0,0x10
- case 0:
- linked_list[linked_list_pos++] |=
- get_clutid(tpoly3->cx, tpoly3->cy) << 16;
- break;
- case 1:
- linked_list[linked_list_pos++] |=
-8002e7ac: 00821025 or v0,a0,v0
-8002e7b0: ac620000 sw v0,0(v1)
- md << 16;
- break;
-8002e7b4: 10000008 b 8002e7d8 <GsSortTPoly3+0x318>
-8002e7b8: 00000000 nop
- default:
- linked_list_pos++;
-8002e7bc: 3c028007 lui v0,0x8007
-8002e7c0: 8c421cd8 lw v0,7384(v0)
-8002e7c4: 00000000 nop
-8002e7c8: 24430001 addiu v1,v0,1
-8002e7cc: 3c028007 lui v0,0x8007
-8002e7d0: ac431cd8 sw v1,7384(v0)
- break;
-8002e7d4: 00000000 nop
-
- linked_list[linked_list_pos++] = 0x07000000;
- linked_list[linked_list_pos++] =
- (pkt<<24)|(tpoly3->b<<16)|(tpoly3->g<<8)|(tpoly3->r);
-
- for(x = 0; x < 3; x++)
-8002e7d8: 8fc20010 lw v0,16(s8)
-8002e7dc: 00000000 nop
-8002e7e0: 24420001 addiu v0,v0,1
-8002e7e4: afc20010 sw v0,16(s8)
-8002e7e8: 8fc20010 lw v0,16(s8)
-8002e7ec: 00000000 nop
-8002e7f0: 28420003 slti v0,v0,3
-8002e7f4: 1440ff79 bnez v0,8002e5dc <GsSortTPoly3+0x11c>
-8002e7f8: 00000000 nop
- linked_list_pos++;
- break;
- }
- }
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8002e7fc: 3c028007 lui v0,0x8007
-8002e800: 8c431cd4 lw v1,7380(v0)
-8002e804: 8fc20014 lw v0,20(s8)
-8002e808: 00000000 nop
-8002e80c: 00021080 sll v0,v0,0x2
-8002e810: 00621021 addu v0,v1,v0
-8002e814: 3c038007 lui v1,0x8007
-8002e818: 8c641cd4 lw a0,7380(v1)
-8002e81c: 8fc30014 lw v1,20(s8)
-8002e820: 00000000 nop
-8002e824: 00031880 sll v1,v1,0x2
-8002e828: 00831821 addu v1,a0,v1
-8002e82c: 8c640000 lw a0,0(v1)
-8002e830: 3c038007 lui v1,0x8007
-8002e834: 8c651cd4 lw a1,7380(v1)
-8002e838: 3c038007 lui v1,0x8007
-8002e83c: 8c631cd8 lw v1,7384(v1)
-8002e840: 00000000 nop
-8002e844: 00031880 sll v1,v1,0x2
-8002e848: 00a31821 addu v1,a1,v1
-8002e84c: 00602821 move a1,v1
-8002e850: 3c0300ff lui v1,0xff
-8002e854: 3463ffff ori v1,v1,0xffff
-8002e858: 00a31824 and v1,a1,v1
-8002e85c: 00831825 or v1,a0,v1
-8002e860: ac430000 sw v1,0(v0)
-}
-8002e864: 00000000 nop
-8002e868: 03c0e821 move sp,s8
-8002e86c: 8fbf0024 lw ra,36(sp)
-8002e870: 8fbe0020 lw s8,32(sp)
-8002e874: 27bd0028 addiu sp,sp,40
-8002e878: 03e00008 jr ra
-8002e87c: 00000000 nop
-
-8002e880 <MoveImage>:
-
-void MoveImage(int src_x, int src_y, int dst_x, int dst_y, int w, int h)
-{
-8002e880: 27bdfff8 addiu sp,sp,-8
-8002e884: afbe0004 sw s8,4(sp)
-8002e888: 03a0f021 move s8,sp
-8002e88c: afc40008 sw a0,8(s8)
-8002e890: afc5000c sw a1,12(s8)
-8002e894: afc60010 sw a2,16(s8)
-8002e898: afc70014 sw a3,20(s8)
- /*
- * This seems more like "CopyImage"...
- */
-
- while(!(GPU_CONTROL_PORT & (1<<0x1c)));
-8002e89c: 00000000 nop
-8002e8a0: 3c021f80 lui v0,0x1f80
-8002e8a4: 34421814 ori v0,v0,0x1814
-8002e8a8: 8c430000 lw v1,0(v0)
-8002e8ac: 3c021000 lui v0,0x1000
-8002e8b0: 00621024 and v0,v1,v0
-8002e8b4: 1040fffa beqz v0,8002e8a0 <MoveImage+0x20>
-8002e8b8: 00000000 nop
-
- GPU_CONTROL_PORT = 0x04000000;
-8002e8bc: 3c021f80 lui v0,0x1f80
-8002e8c0: 34421814 ori v0,v0,0x1814
-8002e8c4: 3c030400 lui v1,0x400
-8002e8c8: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = 0x01000000; // Reset command buffer
-8002e8cc: 3c021f80 lui v0,0x1f80
-8002e8d0: 34421810 ori v0,v0,0x1810
-8002e8d4: 3c030100 lui v1,0x100
-8002e8d8: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = 0xE6000000;
-8002e8dc: 3c021f80 lui v0,0x1f80
-8002e8e0: 34421810 ori v0,v0,0x1810
-8002e8e4: 3c03e600 lui v1,0xe600
-8002e8e8: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = 0x80000000;
-8002e8ec: 3c021f80 lui v0,0x1f80
-8002e8f0: 34421810 ori v0,v0,0x1810
-8002e8f4: 3c038000 lui v1,0x8000
-8002e8f8: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = (src_y<<16)|src_x;
-8002e8fc: 3c021f80 lui v0,0x1f80
-8002e900: 34421810 ori v0,v0,0x1810
-8002e904: 8fc3000c lw v1,12(s8)
-8002e908: 00000000 nop
-8002e90c: 00032400 sll a0,v1,0x10
-8002e910: 8fc30008 lw v1,8(s8)
-8002e914: 00000000 nop
-8002e918: 00831825 or v1,a0,v1
-8002e91c: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = (dst_y<<16)|dst_x;
-8002e920: 3c021f80 lui v0,0x1f80
-8002e924: 34421810 ori v0,v0,0x1810
-8002e928: 8fc30014 lw v1,20(s8)
-8002e92c: 00000000 nop
-8002e930: 00032400 sll a0,v1,0x10
-8002e934: 8fc30010 lw v1,16(s8)
-8002e938: 00000000 nop
-8002e93c: 00831825 or v1,a0,v1
-8002e940: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = (h<<16)|w;
-8002e944: 3c021f80 lui v0,0x1f80
-8002e948: 34421810 ori v0,v0,0x1810
-8002e94c: 8fc3001c lw v1,28(s8)
-8002e950: 00000000 nop
-8002e954: 00032400 sll a0,v1,0x10
-8002e958: 8fc30018 lw v1,24(s8)
-8002e95c: 00000000 nop
-8002e960: 00831825 or v1,a0,v1
-8002e964: ac430000 sw v1,0(v0)
-}
-8002e968: 00000000 nop
-8002e96c: 03c0e821 move sp,s8
-8002e970: 8fbe0004 lw s8,4(sp)
-8002e974: 27bd0008 addiu sp,sp,8
-8002e978: 03e00008 jr ra
-8002e97c: 00000000 nop
-
-8002e980 <LoadImage>:
-/*
- * Add a method to add arbitrary data to the packet list
- */
-
-void LoadImage(void *img, int x, int y, int w, int h)
-{
-8002e980: 27bdffd8 addiu sp,sp,-40
-8002e984: afbf0024 sw ra,36(sp)
-8002e988: afbe0020 sw s8,32(sp)
-8002e98c: 03a0f021 move s8,sp
-8002e990: afc40028 sw a0,40(s8)
-8002e994: afc5002c sw a1,44(s8)
-8002e998: afc60030 sw a2,48(s8)
-8002e99c: afc70034 sw a3,52(s8)
- unsigned short *image = (unsigned short*)img;
-8002e9a0: 8fc20028 lw v0,40(s8)
-8002e9a4: 00000000 nop
-8002e9a8: afc20018 sw v0,24(s8)
- int a, l;
-
- while(GsIsDrawing() == true);
-8002e9ac: 00000000 nop
-8002e9b0: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-8002e9b4: 00000000 nop
-8002e9b8: 00401821 move v1,v0
-8002e9bc: 24020001 li v0,1
-8002e9c0: 1062fffb beq v1,v0,8002e9b0 <LoadImage+0x30>
-8002e9c4: 00000000 nop
-
- //printf("LoadImage: %d, %d, %d, %d\n", x, y, w, h);
-
- while(!(GPU_CONTROL_PORT & (1<<0x1c)));
-8002e9c8: 00000000 nop
-8002e9cc: 3c021f80 lui v0,0x1f80
-8002e9d0: 34421814 ori v0,v0,0x1814
-8002e9d4: 8c430000 lw v1,0(v0)
-8002e9d8: 3c021000 lui v0,0x1000
-8002e9dc: 00621024 and v0,v1,v0
-8002e9e0: 1040fffa beqz v0,8002e9cc <LoadImage+0x4c>
-8002e9e4: 00000000 nop
-
- GPU_CONTROL_PORT = 0x04000000; // Disable DMA
-8002e9e8: 3c021f80 lui v0,0x1f80
-8002e9ec: 34421814 ori v0,v0,0x1814
-8002e9f0: 3c030400 lui v1,0x400
-8002e9f4: ac430000 sw v1,0(v0)
-
-// Reset should be on data port ! otherwise we won't be able
-// to write CLUTs for some time after they've been used!
-// (why??)
-
- GPU_DATA_PORT = 0x01000000;
-8002e9f8: 3c021f80 lui v0,0x1f80
-8002e9fc: 34421810 ori v0,v0,0x1810
-8002ea00: 3c030100 lui v1,0x100
-8002ea04: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = 0xE6000000; // disable masking stuff !!
-8002ea08: 3c021f80 lui v0,0x1f80
-8002ea0c: 34421810 ori v0,v0,0x1810
-8002ea10: 3c03e600 lui v1,0xe600
-8002ea14: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = 0xA0000000;
-8002ea18: 3c021f80 lui v0,0x1f80
-8002ea1c: 34421810 ori v0,v0,0x1810
-8002ea20: 3c03a000 lui v1,0xa000
-8002ea24: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = (y<<16)|x;
-8002ea28: 3c021f80 lui v0,0x1f80
-8002ea2c: 34421810 ori v0,v0,0x1810
-8002ea30: 8fc30030 lw v1,48(s8)
-8002ea34: 00000000 nop
-8002ea38: 00032400 sll a0,v1,0x10
-8002ea3c: 8fc3002c lw v1,44(s8)
-8002ea40: 00000000 nop
-8002ea44: 00831825 or v1,a0,v1
-8002ea48: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = (h<<16)|w;
-8002ea4c: 3c021f80 lui v0,0x1f80
-8002ea50: 34421810 ori v0,v0,0x1810
-8002ea54: 8fc30038 lw v1,56(s8)
-8002ea58: 00000000 nop
-8002ea5c: 00032400 sll a0,v1,0x10
-8002ea60: 8fc30034 lw v1,52(s8)
-8002ea64: 00000000 nop
-8002ea68: 00831825 or v1,a0,v1
-8002ea6c: ac430000 sw v1,0(v0)
-
- l = w*h;
-8002ea70: 8fc30034 lw v1,52(s8)
-8002ea74: 8fc20038 lw v0,56(s8)
-8002ea78: 00000000 nop
-8002ea7c: 00620018 mult v1,v0
-8002ea80: 00001012 mflo v0
-8002ea84: afc20014 sw v0,20(s8)
- if(l&1)l++;
-8002ea88: 8fc20014 lw v0,20(s8)
-8002ea8c: 00000000 nop
-8002ea90: 30420001 andi v0,v0,0x1
-8002ea94: 10400005 beqz v0,8002eaac <LoadImage+0x12c>
-8002ea98: 00000000 nop
-8002ea9c: 8fc20014 lw v0,20(s8)
-8002eaa0: 00000000 nop
-8002eaa4: 24420001 addiu v0,v0,1
-8002eaa8: afc20014 sw v0,20(s8)
-
- for(a = 0; a < l; a+=2)
-8002eaac: afc00010 sw zero,16(s8)
-8002eab0: 1000001c b 8002eb24 <LoadImage+0x1a4>
-8002eab4: 00000000 nop
- GPU_DATA_PORT = image[a]|(image[a+1]<<16);
-8002eab8: 3c021f80 lui v0,0x1f80
-8002eabc: 34421810 ori v0,v0,0x1810
-8002eac0: 8fc30010 lw v1,16(s8)
-8002eac4: 00000000 nop
-8002eac8: 00031840 sll v1,v1,0x1
-8002eacc: 8fc40018 lw a0,24(s8)
-8002ead0: 00000000 nop
-8002ead4: 00831821 addu v1,a0,v1
-8002ead8: 94630000 lhu v1,0(v1)
-8002eadc: 00000000 nop
-8002eae0: 00602821 move a1,v1
-8002eae4: 8fc30010 lw v1,16(s8)
-8002eae8: 00000000 nop
-8002eaec: 24630001 addiu v1,v1,1
-8002eaf0: 00031840 sll v1,v1,0x1
-8002eaf4: 8fc40018 lw a0,24(s8)
-8002eaf8: 00000000 nop
-8002eafc: 00831821 addu v1,a0,v1
-8002eb00: 94630000 lhu v1,0(v1)
-8002eb04: 00000000 nop
-8002eb08: 00031c00 sll v1,v1,0x10
-8002eb0c: 00a31825 or v1,a1,v1
-8002eb10: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = (h<<16)|w;
-
- l = w*h;
- if(l&1)l++;
-
- for(a = 0; a < l; a+=2)
-8002eb14: 8fc20010 lw v0,16(s8)
-8002eb18: 00000000 nop
-8002eb1c: 24420002 addiu v0,v0,2
-8002eb20: afc20010 sw v0,16(s8)
-8002eb24: 8fc30010 lw v1,16(s8)
-8002eb28: 8fc20014 lw v0,20(s8)
-8002eb2c: 00000000 nop
-8002eb30: 0062102a slt v0,v1,v0
-8002eb34: 1440ffe0 bnez v0,8002eab8 <LoadImage+0x138>
-8002eb38: 00000000 nop
- GPU_DATA_PORT = image[a]|(image[a+1]<<16);
-
- GPU_CONTROL_PORT = 0x01000000;
-8002eb3c: 3c021f80 lui v0,0x1f80
-8002eb40: 34421814 ori v0,v0,0x1814
-8002eb44: 3c030100 lui v1,0x100
-8002eb48: ac430000 sw v1,0(v0)
-// while(!(GPU_CONTROL_PORT & (1<<0x1c)));
-}
-8002eb4c: 00000000 nop
-8002eb50: 03c0e821 move sp,s8
-8002eb54: 8fbf0024 lw ra,36(sp)
-8002eb58: 8fbe0020 lw s8,32(sp)
-8002eb5c: 27bd0028 addiu sp,sp,40
-8002eb60: 03e00008 jr ra
-8002eb64: 00000000 nop
-
-8002eb68 <GsSetDrawEnv>:
-
- while(D2_CHCR & (1<<0x18));
-//}*/
-
-void GsSetDrawEnv(GsDrawEnv *drawenv)
-{
-8002eb68: 27bdffd8 addiu sp,sp,-40
-8002eb6c: afbf0024 sw ra,36(sp)
-8002eb70: afbe0020 sw s8,32(sp)
-8002eb74: 03a0f021 move s8,sp
-8002eb78: afc40028 sw a0,40(s8)
- /*
- * Store the 0xe1 packet - we need it because we have to
- * modify drawing environment for sprites
- */
-
- draw_mode_packet = (0xe1<<24)|(drawenv->draw_on_display>=1)<<10|
-8002eb7c: 8fc20028 lw v0,40(s8)
-8002eb80: 00000000 nop
-8002eb84: 90420001 lbu v0,1(v0)
-8002eb88: 00000000 nop
-8002eb8c: 10400005 beqz v0,8002eba4 <GsSetDrawEnv+0x3c>
-8002eb90: 00000000 nop
-8002eb94: 3c02e100 lui v0,0xe100
-8002eb98: 34420400 ori v0,v0,0x400
-8002eb9c: 10000002 b 8002eba8 <GsSetDrawEnv+0x40>
-8002eba0: 00000000 nop
-8002eba4: 3c02e100 lui v0,0xe100
- (drawenv->dither>=1)<<9;
-8002eba8: 8fc30028 lw v1,40(s8)
-8002ebac: 00000000 nop
-8002ebb0: 90630000 lbu v1,0(v1)
-8002ebb4: 00000000 nop
-8002ebb8: 10600004 beqz v1,8002ebcc <GsSetDrawEnv+0x64>
-8002ebbc: 00000000 nop
-8002ebc0: 24030200 li v1,512
-8002ebc4: 10000002 b 8002ebd0 <GsSetDrawEnv+0x68>
-8002ebc8: 00000000 nop
-8002ebcc: 00001821 move v1,zero
- /*
- * Store the 0xe1 packet - we need it because we have to
- * modify drawing environment for sprites
- */
-
- draw_mode_packet = (0xe1<<24)|(drawenv->draw_on_display>=1)<<10|
-8002ebd0: 00431025 or v0,v0,v1
-8002ebd4: 00401821 move v1,v0
-8002ebd8: 3c028007 lui v0,0x8007
-8002ebdc: ac431d5c sw v1,7516(v0)
- (drawenv->dither>=1)<<9;
-
- gpu_data_ctrl(0xe1, draw_mode_packet);
-8002ebe0: 3c028007 lui v0,0x8007
-8002ebe4: 8c421d5c lw v0,7516(v0)
-8002ebe8: 00000000 nop
-8002ebec: 00402821 move a1,v0
-8002ebf0: 240400e1 li a0,225
-8002ebf4: 0c00bbb5 jal 8002eed4 <gpu_data_ctrl>
-8002ebf8: 00000000 nop
- gpu_data_ctrl(0xe2, 0);
-8002ebfc: 00002821 move a1,zero
-8002ec00: 240400e2 li a0,226
-8002ec04: 0c00bbb5 jal 8002eed4 <gpu_data_ctrl>
-8002ec08: 00000000 nop
- gpu_data_ctrl(0xe3, (drawenv->y<<10)|drawenv->x);
-8002ec0c: 8fc20028 lw v0,40(s8)
-8002ec10: 00000000 nop
-8002ec14: 84420004 lh v0,4(v0)
-8002ec18: 00000000 nop
-8002ec1c: 00021280 sll v0,v0,0xa
-8002ec20: 8fc30028 lw v1,40(s8)
-8002ec24: 00000000 nop
-8002ec28: 84630002 lh v1,2(v1)
-8002ec2c: 00000000 nop
-8002ec30: 00431025 or v0,v0,v1
-8002ec34: 00402821 move a1,v0
-8002ec38: 240400e3 li a0,227
-8002ec3c: 0c00bbb5 jal 8002eed4 <gpu_data_ctrl>
-8002ec40: 00000000 nop
-
- end_x = (drawenv->x + drawenv->w)-1;
-8002ec44: 8fc20028 lw v0,40(s8)
-8002ec48: 00000000 nop
-8002ec4c: 84420002 lh v0,2(v0)
-8002ec50: 00000000 nop
-8002ec54: 00401821 move v1,v0
-8002ec58: 8fc20028 lw v0,40(s8)
-8002ec5c: 00000000 nop
-8002ec60: 84420006 lh v0,6(v0)
-8002ec64: 00000000 nop
-8002ec68: 00621021 addu v0,v1,v0
-8002ec6c: 2442ffff addiu v0,v0,-1
-8002ec70: afc20014 sw v0,20(s8)
- end_y = (drawenv->y + drawenv->h)-1;
-8002ec74: 8fc20028 lw v0,40(s8)
-8002ec78: 00000000 nop
-8002ec7c: 84420004 lh v0,4(v0)
-8002ec80: 00000000 nop
-8002ec84: 00401821 move v1,v0
-8002ec88: 8fc20028 lw v0,40(s8)
-8002ec8c: 00000000 nop
-8002ec90: 84420008 lh v0,8(v0)
-8002ec94: 00000000 nop
-8002ec98: 00621021 addu v0,v1,v0
-8002ec9c: 2442ffff addiu v0,v0,-1
-8002eca0: afc20018 sw v0,24(s8)
-
- gpu_data_ctrl(0xe4, (end_y<<10)|end_x);
-8002eca4: 8fc20018 lw v0,24(s8)
-8002eca8: 00000000 nop
-8002ecac: 00021a80 sll v1,v0,0xa
-8002ecb0: 8fc20014 lw v0,20(s8)
-8002ecb4: 00000000 nop
-8002ecb8: 00621025 or v0,v1,v0
-8002ecbc: 00402821 move a1,v0
-8002ecc0: 240400e4 li a0,228
-8002ecc4: 0c00bbb5 jal 8002eed4 <gpu_data_ctrl>
-8002ecc8: 00000000 nop
-
- //#warning "Check drawing offset better."
- gpu_data_ctrl(0xe5, (drawenv->y<<11)|drawenv->x);
-8002eccc: 8fc20028 lw v0,40(s8)
-8002ecd0: 00000000 nop
-8002ecd4: 84420004 lh v0,4(v0)
-8002ecd8: 00000000 nop
-8002ecdc: 000212c0 sll v0,v0,0xb
-8002ece0: 8fc30028 lw v1,40(s8)
-8002ece4: 00000000 nop
-8002ece8: 84630002 lh v1,2(v1)
-8002ecec: 00000000 nop
-8002ecf0: 00431025 or v0,v0,v1
-8002ecf4: 00402821 move a1,v0
-8002ecf8: 240400e5 li a0,229
-8002ecfc: 0c00bbb5 jal 8002eed4 <gpu_data_ctrl>
-8002ed00: 00000000 nop
- //gpu_data_ctrl(0xe5, 0);
-
-
- mf = 0;
-8002ed04: afc00010 sw zero,16(s8)
- if(drawenv->set_mask) mf|=MASK_SET;
-8002ed08: 8fc20028 lw v0,40(s8)
-8002ed0c: 00000000 nop
-8002ed10: 9042000b lbu v0,11(v0)
-8002ed14: 00000000 nop
-8002ed18: 10400005 beqz v0,8002ed30 <GsSetDrawEnv+0x1c8>
-8002ed1c: 00000000 nop
-8002ed20: 8fc20010 lw v0,16(s8)
-8002ed24: 00000000 nop
-8002ed28: 34420001 ori v0,v0,0x1
-8002ed2c: afc20010 sw v0,16(s8)
- if(drawenv->ignore_mask) mf|=MASK_IGNORE;
-8002ed30: 8fc20028 lw v0,40(s8)
-8002ed34: 00000000 nop
-8002ed38: 9042000a lbu v0,10(v0)
-8002ed3c: 00000000 nop
-8002ed40: 10400005 beqz v0,8002ed58 <GsSetDrawEnv+0x1f0>
-8002ed44: 00000000 nop
-8002ed48: 8fc20010 lw v0,16(s8)
-8002ed4c: 00000000 nop
-8002ed50: 34420002 ori v0,v0,0x2
-8002ed54: afc20010 sw v0,16(s8)
-
- GsSetMasking(mf);
-8002ed58: 8fc20010 lw v0,16(s8)
-8002ed5c: 00000000 nop
-8002ed60: 304200ff andi v0,v0,0xff
-8002ed64: 00402021 move a0,v0
-8002ed68: 0c00bf8c jal 8002fe30 <GsSetMasking>
-8002ed6c: 00000000 nop
-
- GsCurDrawEnvW = drawenv->w;
-8002ed70: 8fc20028 lw v0,40(s8)
-8002ed74: 00000000 nop
-8002ed78: 84420006 lh v0,6(v0)
-8002ed7c: 00000000 nop
-8002ed80: 3043ffff andi v1,v0,0xffff
-8002ed84: 3c028007 lui v0,0x8007
-8002ed88: a4431d40 sh v1,7488(v0)
- GsCurDrawEnvH = drawenv->h;
-8002ed8c: 8fc20028 lw v0,40(s8)
-8002ed90: 00000000 nop
-8002ed94: 84420008 lh v0,8(v0)
-8002ed98: 00000000 nop
-8002ed9c: 3043ffff andi v1,v0,0xffff
-8002eda0: 3c028007 lui v0,0x8007
-8002eda4: a4431d58 sh v1,7512(v0)
-}
-8002eda8: 00000000 nop
-8002edac: 03c0e821 move sp,s8
-8002edb0: 8fbf0024 lw ra,36(sp)
-8002edb4: 8fbe0020 lw s8,32(sp)
-8002edb8: 27bd0028 addiu sp,sp,40
-8002edbc: 03e00008 jr ra
-8002edc0: 00000000 nop
-
-8002edc4 <GsSetDispEnv>:
-
-void GsSetDispEnv(GsDispEnv *dispenv)
-{
-8002edc4: 27bdffe8 addiu sp,sp,-24
-8002edc8: afbf0014 sw ra,20(sp)
-8002edcc: afbe0010 sw s8,16(sp)
-8002edd0: 03a0f021 move s8,sp
-8002edd4: afc40018 sw a0,24(s8)
- gpu_ctrl(5, (dispenv->y<<10)|dispenv->x); // Display offset
-8002edd8: 8fc20018 lw v0,24(s8)
-8002eddc: 00000000 nop
-8002ede0: 84420002 lh v0,2(v0)
-8002ede4: 00000000 nop
-8002ede8: 00021280 sll v0,v0,0xa
-8002edec: 8fc30018 lw v1,24(s8)
-8002edf0: 00000000 nop
-8002edf4: 84630000 lh v1,0(v1)
-8002edf8: 00000000 nop
-8002edfc: 00431025 or v0,v0,v1
-8002ee00: 00402821 move a1,v0
-8002ee04: 24040005 li a0,5
-8002ee08: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002ee0c: 00000000 nop
-}
-8002ee10: 00000000 nop
-8002ee14: 03c0e821 move sp,s8
-8002ee18: 8fbf0014 lw ra,20(sp)
-8002ee1c: 8fbe0010 lw s8,16(sp)
-8002ee20: 27bd0018 addiu sp,sp,24
-8002ee24: 03e00008 jr ra
-8002ee28: 00000000 nop
-
-8002ee2c <gpu_ctrl>:
-
-void gpu_ctrl(unsigned int command, unsigned int param)
-{
-8002ee2c: 27bdfff0 addiu sp,sp,-16
-8002ee30: afbe000c sw s8,12(sp)
-8002ee34: 03a0f021 move s8,sp
-8002ee38: afc40010 sw a0,16(s8)
-8002ee3c: afc50014 sw a1,20(s8)
- unsigned int doubleword = (command << 0x18) | param;
-8002ee40: 8fc20010 lw v0,16(s8)
-8002ee44: 00000000 nop
-8002ee48: 00021e00 sll v1,v0,0x18
-8002ee4c: 8fc20014 lw v0,20(s8)
-8002ee50: 00000000 nop
-8002ee54: 00621025 or v0,v1,v0
-8002ee58: afc20000 sw v0,0(s8)
-
- GPU_CONTROL_PORT = 0x01000000;
-8002ee5c: 3c021f80 lui v0,0x1f80
-8002ee60: 34421814 ori v0,v0,0x1814
-8002ee64: 3c030100 lui v1,0x100
-8002ee68: ac430000 sw v1,0(v0)
- GPU_CONTROL_PORT = doubleword;
-8002ee6c: 3c021f80 lui v0,0x1f80
-8002ee70: 34421814 ori v0,v0,0x1814
-8002ee74: 8fc30000 lw v1,0(s8)
-8002ee78: 00000000 nop
-8002ee7c: ac430000 sw v1,0(v0)
-}
-8002ee80: 00000000 nop
-8002ee84: 03c0e821 move sp,s8
-8002ee88: 8fbe000c lw s8,12(sp)
-8002ee8c: 27bd0010 addiu sp,sp,16
-8002ee90: 03e00008 jr ra
-8002ee94: 00000000 nop
-
-8002ee98 <gpu_data>:
-
-void gpu_data(unsigned int data)
-{
-8002ee98: 27bdfff8 addiu sp,sp,-8
-8002ee9c: afbe0004 sw s8,4(sp)
-8002eea0: 03a0f021 move s8,sp
-8002eea4: afc40008 sw a0,8(s8)
- GPU_DATA_PORT = data;
-8002eea8: 3c021f80 lui v0,0x1f80
-8002eeac: 34421810 ori v0,v0,0x1810
-8002eeb0: 8fc30008 lw v1,8(s8)
-8002eeb4: 00000000 nop
-8002eeb8: ac430000 sw v1,0(v0)
-}
-8002eebc: 00000000 nop
-8002eec0: 03c0e821 move sp,s8
-8002eec4: 8fbe0004 lw s8,4(sp)
-8002eec8: 27bd0008 addiu sp,sp,8
-8002eecc: 03e00008 jr ra
-8002eed0: 00000000 nop
-
-8002eed4 <gpu_data_ctrl>:
-
-void gpu_data_ctrl(unsigned int command, unsigned int param)
-{
-8002eed4: 27bdfff0 addiu sp,sp,-16
-8002eed8: afbe000c sw s8,12(sp)
-8002eedc: 03a0f021 move s8,sp
-8002eee0: afc40010 sw a0,16(s8)
-8002eee4: afc50014 sw a1,20(s8)
- unsigned int doubleword = (command << 0x18) | param;
-8002eee8: 8fc20010 lw v0,16(s8)
-8002eeec: 00000000 nop
-8002eef0: 00021e00 sll v1,v0,0x18
-8002eef4: 8fc20014 lw v0,20(s8)
-8002eef8: 00000000 nop
-8002eefc: 00621025 or v0,v1,v0
-8002ef00: afc20000 sw v0,0(s8)
-
- GPU_CONTROL_PORT = 0x01000000;
-8002ef04: 3c021f80 lui v0,0x1f80
-8002ef08: 34421814 ori v0,v0,0x1814
-8002ef0c: 3c030100 lui v1,0x100
-8002ef10: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = doubleword;
-8002ef14: 3c021f80 lui v0,0x1f80
-8002ef18: 34421810 ori v0,v0,0x1810
-8002ef1c: 8fc30000 lw v1,0(s8)
-8002ef20: 00000000 nop
-8002ef24: ac430000 sw v1,0(v0)
-}
-8002ef28: 00000000 nop
-8002ef2c: 03c0e821 move sp,s8
-8002ef30: 8fbe000c lw s8,12(sp)
-8002ef34: 27bd0010 addiu sp,sp,16
-8002ef38: 03e00008 jr ra
-8002ef3c: 00000000 nop
-
-8002ef40 <setup_attribs>:
-
-unsigned int setup_attribs(unsigned char tpage, unsigned int attribute, unsigned char *packet)
-{
-8002ef40: 27bdfff0 addiu sp,sp,-16
-8002ef44: afbe000c sw s8,12(sp)
-8002ef48: 03a0f021 move s8,sp
-8002ef4c: 00801021 move v0,a0
-8002ef50: afc50014 sw a1,20(s8)
-8002ef54: afc60018 sw a2,24(s8)
-8002ef58: a3c20010 sb v0,16(s8)
-
-/*
- * First, setup draw mode setting.
- */
-
- sprite_mode_packet = draw_mode_packet;
-8002ef5c: 3c028007 lui v0,0x8007
-8002ef60: 8c421d5c lw v0,7516(v0)
-8002ef64: 00000000 nop
-8002ef68: afc20000 sw v0,0(s8)
- sprite_mode_packet|= tpage & 0x1f; /* Texture page */
-8002ef6c: 93c20010 lbu v0,16(s8)
-8002ef70: 00000000 nop
-8002ef74: 3042001f andi v0,v0,0x1f
-8002ef78: 8fc30000 lw v1,0(s8)
-8002ef7c: 00000000 nop
-8002ef80: 00621025 or v0,v1,v0
-8002ef84: afc20000 sw v0,0(s8)
- sprite_mode_packet|= (attribute & 3) << 7; /* Color mode */
-8002ef88: 8fc20014 lw v0,20(s8)
-8002ef8c: 00000000 nop
-8002ef90: 30420003 andi v0,v0,0x3
-8002ef94: 000211c0 sll v0,v0,0x7
-8002ef98: 8fc30000 lw v1,0(s8)
-8002ef9c: 00000000 nop
-8002efa0: 00621025 or v0,v1,v0
-8002efa4: afc20000 sw v0,0(s8)
- sprite_mode_packet|= ((attribute>>2)&3) << 5; /* Translucency mode */
-8002efa8: 8fc20014 lw v0,20(s8)
-8002efac: 00000000 nop
-8002efb0: 00021082 srl v0,v0,0x2
-8002efb4: 30420003 andi v0,v0,0x3
-8002efb8: 00021140 sll v0,v0,0x5
-8002efbc: 8fc30000 lw v1,0(s8)
-8002efc0: 00000000 nop
-8002efc4: 00621025 or v0,v1,v0
-8002efc8: afc20000 sw v0,0(s8)
-
-/*
- * Check for STP bit flag in attribute, and modify packet byte accordingly
- */
- if(attribute & 16)
-8002efcc: 8fc20014 lw v0,20(s8)
-8002efd0: 00000000 nop
-8002efd4: 30420010 andi v0,v0,0x10
-8002efd8: 1040000a beqz v0,8002f004 <setup_attribs+0xc4>
-8002efdc: 00000000 nop
- *packet|=2;
-8002efe0: 8fc20018 lw v0,24(s8)
-8002efe4: 00000000 nop
-8002efe8: 90420000 lbu v0,0(v0)
-8002efec: 00000000 nop
-8002eff0: 34420002 ori v0,v0,0x2
-8002eff4: 304300ff andi v1,v0,0xff
-8002eff8: 8fc20018 lw v0,24(s8)
-8002effc: 00000000 nop
-8002f000: a0430000 sb v1,0(v0)
-
- //printf("sprite_mode_packet = %08x\n", sprite_mode_packet);
-
- return sprite_mode_packet;
-8002f004: 8fc20000 lw v0,0(s8)
-}
-8002f008: 03c0e821 move sp,s8
-8002f00c: 8fbe000c lw s8,12(sp)
-8002f010: 27bd0010 addiu sp,sp,16
-8002f014: 03e00008 jr ra
-8002f018: 00000000 nop
-
-8002f01c <GsListPos>:
-
-unsigned int GsListPos()
-{
-8002f01c: 27bdfff8 addiu sp,sp,-8
-8002f020: afbe0004 sw s8,4(sp)
-8002f024: 03a0f021 move s8,sp
- return linked_list_pos;
-8002f028: 3c028007 lui v0,0x8007
-8002f02c: 8c421cd8 lw v0,7384(v0)
-}
-8002f030: 03c0e821 move sp,s8
-8002f034: 8fbe0004 lw s8,4(sp)
-8002f038: 27bd0008 addiu sp,sp,8
-8002f03c: 03e00008 jr ra
-8002f040: 00000000 nop
-
-8002f044 <GsEnableDisplay>:
-
-void GsEnableDisplay(int enable)
-{
-8002f044: 27bdffe8 addiu sp,sp,-24
-8002f048: afbf0014 sw ra,20(sp)
-8002f04c: afbe0010 sw s8,16(sp)
-8002f050: 03a0f021 move s8,sp
-8002f054: afc40018 sw a0,24(s8)
- gpu_ctrl(3, enable ? 0 : 1);
-8002f058: 8fc20018 lw v0,24(s8)
-8002f05c: 00000000 nop
-8002f060: 2c420001 sltiu v0,v0,1
-8002f064: 304200ff andi v0,v0,0xff
-8002f068: 00402821 move a1,v0
-8002f06c: 24040003 li a0,3
-8002f070: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f074: 00000000 nop
-}
-8002f078: 00000000 nop
-8002f07c: 03c0e821 move sp,s8
-8002f080: 8fbf0014 lw ra,20(sp)
-8002f084: 8fbe0010 lw s8,16(sp)
-8002f088: 27bd0018 addiu sp,sp,24
-8002f08c: 03e00008 jr ra
-8002f090: 00000000 nop
-
-8002f094 <GsReset>:
-
-void GsReset()
-{
-8002f094: 27bdffe8 addiu sp,sp,-24
-8002f098: afbf0014 sw ra,20(sp)
-8002f09c: afbe0010 sw s8,16(sp)
-8002f0a0: 03a0f021 move s8,sp
- gpu_ctrl(0, 0); // Reset GPU
-8002f0a4: 00002821 move a1,zero
-8002f0a8: 00002021 move a0,zero
-8002f0ac: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f0b0: 00000000 nop
-}
-8002f0b4: 00000000 nop
-8002f0b8: 03c0e821 move sp,s8
-8002f0bc: 8fbf0014 lw ra,20(sp)
-8002f0c0: 8fbe0010 lw s8,16(sp)
-8002f0c4: 27bd0018 addiu sp,sp,24
-8002f0c8: 03e00008 jr ra
-8002f0cc: 00000000 nop
-
-8002f0d0 <GsInitEx>:
-
-void GsInitEx(unsigned int flags)
-{
-8002f0d0: 27bdffe8 addiu sp,sp,-24
-8002f0d4: afbf0014 sw ra,20(sp)
-8002f0d8: afbe0010 sw s8,16(sp)
-8002f0dc: 03a0f021 move s8,sp
-8002f0e0: afc40018 sw a0,24(s8)
- //gpu_ctrl(0, 0); // Reset GPU
- GsReset(); // Reset GPU
-8002f0e4: 0c00bc25 jal 8002f094 <GsReset>
-8002f0e8: 00000000 nop
-
- DPCR |= (1<<0xb); // Enable dma channel 2
-8002f0ec: 3c021f80 lui v0,0x1f80
-8002f0f0: 344210f0 ori v0,v0,0x10f0
-8002f0f4: 3c031f80 lui v1,0x1f80
-8002f0f8: 346310f0 ori v1,v1,0x10f0
-8002f0fc: 8c630000 lw v1,0(v1)
-8002f100: 00000000 nop
-8002f104: 34630800 ori v1,v1,0x800
-8002f108: ac430000 sw v1,0(v0)
- gpu_ctrl(4, 2); // DMA CPU->GPU mode
-8002f10c: 24050002 li a1,2
-8002f110: 24040004 li a0,4
-8002f114: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f118: 00000000 nop
-
- //gpu_ctrl(3, 1); // Disable display
- GsEnableDisplay(0); // Disable display
-8002f11c: 00002021 move a0,zero
-8002f120: 0c00bc11 jal 8002f044 <GsEnableDisplay>
-8002f124: 00000000 nop
-
- GPU_DATA_PORT = 0x01000000; // Reset data port
-8002f128: 3c021f80 lui v0,0x1f80
-8002f12c: 34421810 ori v0,v0,0x1810
-8002f130: 3c030100 lui v1,0x100
-8002f134: ac430000 sw v1,0(v0)
-
- /*gpu_ctrl(6, 0xc40240); // Horizontal start end
- gpu_ctrl(7, 0x049025); // Vertical start end*/
- //DrawFBRect(0, 0, 1023, 511, 0, 0, 0);
-}
-8002f138: 00000000 nop
-8002f13c: 03c0e821 move sp,s8
-8002f140: 8fbf0014 lw ra,20(sp)
-8002f144: 8fbe0010 lw s8,16(sp)
-8002f148: 27bd0018 addiu sp,sp,24
-8002f14c: 03e00008 jr ra
-8002f150: 00000000 nop
-
-8002f154 <GsInit>:
-
-void GsInit()
-{
-8002f154: 27bdffe8 addiu sp,sp,-24
-8002f158: afbf0014 sw ra,20(sp)
-8002f15c: afbe0010 sw s8,16(sp)
-8002f160: 03a0f021 move s8,sp
- GsInitEx(0);
-8002f164: 00002021 move a0,zero
-8002f168: 0c00bc34 jal 8002f0d0 <GsInitEx>
-8002f16c: 00000000 nop
-}
-8002f170: 00000000 nop
-8002f174: 03c0e821 move sp,s8
-8002f178: 8fbf0014 lw ra,20(sp)
-8002f17c: 8fbe0010 lw s8,16(sp)
-8002f180: 27bd0018 addiu sp,sp,24
-8002f184: 03e00008 jr ra
-8002f188: 00000000 nop
-
-8002f18c <GsSetVideoMode>:
-
- ExitCriticalSection();
-}*/
-
-int GsSetVideoMode(int width, int height, int video_mode)
-{
-8002f18c: 27bdffe0 addiu sp,sp,-32
-8002f190: afbf001c sw ra,28(sp)
-8002f194: afbe0018 sw s8,24(sp)
-8002f198: 03a0f021 move s8,sp
-8002f19c: afc40020 sw a0,32(s8)
-8002f1a0: afc50024 sw a1,36(s8)
-8002f1a4: afc60028 sw a2,40(s8)
- // Just a quick wrapper for GsSetVideoModeEx
- return GsSetVideoModeEx(width, height, video_mode, 0, 0, 0);
-8002f1a8: afa00014 sw zero,20(sp)
-8002f1ac: afa00010 sw zero,16(sp)
-8002f1b0: 00003821 move a3,zero
-8002f1b4: 8fc60028 lw a2,40(s8)
-8002f1b8: 8fc50024 lw a1,36(s8)
-8002f1bc: 8fc40020 lw a0,32(s8)
-8002f1c0: 0c00bc78 jal 8002f1e0 <GsSetVideoModeEx>
-8002f1c4: 00000000 nop
-}
-8002f1c8: 03c0e821 move sp,s8
-8002f1cc: 8fbf001c lw ra,28(sp)
-8002f1d0: 8fbe0018 lw s8,24(sp)
-8002f1d4: 27bd0020 addiu sp,sp,32
-8002f1d8: 03e00008 jr ra
-8002f1dc: 00000000 nop
-
-8002f1e0 <GsSetVideoModeEx>:
-
-int GsSetVideoModeEx(int width, int height, int video_mode, int rgb24,
- int inter, int reverse)
-{
-8002f1e0: 27bdffe0 addiu sp,sp,-32
-8002f1e4: afbf001c sw ra,28(sp)
-8002f1e8: afbe0018 sw s8,24(sp)
-8002f1ec: 03a0f021 move s8,sp
-8002f1f0: afc40020 sw a0,32(s8)
-8002f1f4: afc50024 sw a1,36(s8)
-8002f1f8: afc60028 sw a2,40(s8)
-8002f1fc: afc7002c sw a3,44(s8)
- unsigned char mode = 0;
-8002f200: a3c00010 sb zero,16(s8)
-
- GsEnableDisplay(0);
-8002f204: 00002021 move a0,zero
-8002f208: 0c00bc11 jal 8002f044 <GsEnableDisplay>
-8002f20c: 00000000 nop
-
- if(video_mode == VMODE_NTSC)
-8002f210: 8fc20028 lw v0,40(s8)
-8002f214: 00000000 nop
-8002f218: 1440000d bnez v0,8002f250 <GsSetVideoModeEx+0x70>
-8002f21c: 00000000 nop
- {
- gpu_ctrl(6, 0xC4E24E); // Horizontal screen range
-8002f220: 3c0200c4 lui v0,0xc4
-8002f224: 3445e24e ori a1,v0,0xe24e
-8002f228: 24040006 li a0,6
-8002f22c: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f230: 00000000 nop
- gpu_ctrl(7, 0x040010); // Vertical screen range
-8002f234: 3c020004 lui v0,0x4
-8002f238: 34450010 ori a1,v0,0x10
-8002f23c: 24040007 li a0,7
-8002f240: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f244: 00000000 nop
-8002f248: 1000000b b 8002f278 <GsSetVideoModeEx+0x98>
-8002f24c: 00000000 nop
- }
- else
- {
- gpu_ctrl(6, 0xC62262); // Horizontal screen range
-8002f250: 3c0200c6 lui v0,0xc6
-8002f254: 34452262 ori a1,v0,0x2262
-8002f258: 24040006 li a0,6
-8002f25c: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f260: 00000000 nop
- gpu_ctrl(7, 0x04B42D); // Vertical screen range
-8002f264: 3c020004 lui v0,0x4
-8002f268: 3445b42d ori a1,v0,0xb42d
-8002f26c: 24040007 li a0,7
-8002f270: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f274: 00000000 nop
- }
-
- switch(height)
-8002f278: 8fc20024 lw v0,36(s8)
-8002f27c: 240300f0 li v1,240
-8002f280: 10430014 beq v0,v1,8002f2d4 <GsSetVideoModeEx+0xf4>
-8002f284: 00000000 nop
-8002f288: 240301e0 li v1,480
-8002f28c: 14430007 bne v0,v1,8002f2ac <GsSetVideoModeEx+0xcc>
-8002f290: 00000000 nop
- {
- case 240:
- break;
- case 480:
- mode|=4;
-8002f294: 93c20010 lbu v0,16(s8)
-8002f298: 00000000 nop
-8002f29c: 34420004 ori v0,v0,0x4
-8002f2a0: a3c20010 sb v0,16(s8)
- break;
-8002f2a4: 1000000c b 8002f2d8 <GsSetVideoModeEx+0xf8>
-8002f2a8: 00000000 nop
- default:
- printf("%s: error, unknown width %d!\n", __FUNCTION__, width);
-8002f2ac: 8fc60020 lw a2,32(s8)
-8002f2b0: 3c028004 lui v0,0x8004
-8002f2b4: 2445fd88 addiu a1,v0,-632
-8002f2b8: 3c028004 lui v0,0x8004
-8002f2bc: 2444fd48 addiu a0,v0,-696
-8002f2c0: 0c00ed8f jal 8003b63c <printf>
-8002f2c4: 00000000 nop
- return 0;
-8002f2c8: 00001021 move v0,zero
-8002f2cc: 10000075 b 8002f4a4 <GsSetVideoModeEx+0x2c4>
-8002f2d0: 00000000 nop
- }
-
- switch(height)
- {
- case 240:
- break;
-8002f2d4: 00000000 nop
- default:
- printf("%s: error, unknown width %d!\n", __FUNCTION__, width);
- return 0;
- }
-
- switch(width)
-8002f2d8: 8fc20020 lw v0,32(s8)
-8002f2dc: 24030180 li v1,384
-8002f2e0: 10430026 beq v0,v1,8002f37c <GsSetVideoModeEx+0x19c>
-8002f2e4: 00000000 nop
-8002f2e8: 28430181 slti v1,v0,385
-8002f2ec: 10600009 beqz v1,8002f314 <GsSetVideoModeEx+0x134>
-8002f2f0: 00000000 nop
-8002f2f4: 24030100 li v1,256
-8002f2f8: 10430030 beq v0,v1,8002f3bc <GsSetVideoModeEx+0x1dc>
-8002f2fc: 00000000 nop
-8002f300: 24030140 li v1,320
-8002f304: 1043000b beq v0,v1,8002f334 <GsSetVideoModeEx+0x154>
-8002f308: 00000000 nop
-8002f30c: 10000021 b 8002f394 <GsSetVideoModeEx+0x1b4>
-8002f310: 00000000 nop
-8002f314: 24030200 li v1,512
-8002f318: 1043000c beq v0,v1,8002f34c <GsSetVideoModeEx+0x16c>
-8002f31c: 00000000 nop
-8002f320: 24030280 li v1,640
-8002f324: 1043000f beq v0,v1,8002f364 <GsSetVideoModeEx+0x184>
-8002f328: 00000000 nop
-8002f32c: 10000019 b 8002f394 <GsSetVideoModeEx+0x1b4>
-8002f330: 00000000 nop
- {
- case 256:
- break;
- case 320:
- mode|=1;
-8002f334: 93c20010 lbu v0,16(s8)
-8002f338: 00000000 nop
-8002f33c: 34420001 ori v0,v0,0x1
-8002f340: a3c20010 sb v0,16(s8)
- break;
-8002f344: 1000001e b 8002f3c0 <GsSetVideoModeEx+0x1e0>
-8002f348: 00000000 nop
- case 512:
- mode|=2;
-8002f34c: 93c20010 lbu v0,16(s8)
-8002f350: 00000000 nop
-8002f354: 34420002 ori v0,v0,0x2
-8002f358: a3c20010 sb v0,16(s8)
- break;
-8002f35c: 10000018 b 8002f3c0 <GsSetVideoModeEx+0x1e0>
-8002f360: 00000000 nop
- case 640:
- mode|=3;
-8002f364: 93c20010 lbu v0,16(s8)
-8002f368: 00000000 nop
-8002f36c: 34420003 ori v0,v0,0x3
-8002f370: a3c20010 sb v0,16(s8)
- break;
-8002f374: 10000012 b 8002f3c0 <GsSetVideoModeEx+0x1e0>
-8002f378: 00000000 nop
- case 384:
- mode|=64;
-8002f37c: 93c20010 lbu v0,16(s8)
-8002f380: 00000000 nop
-8002f384: 34420040 ori v0,v0,0x40
-8002f388: a3c20010 sb v0,16(s8)
- break;
-8002f38c: 1000000c b 8002f3c0 <GsSetVideoModeEx+0x1e0>
-8002f390: 00000000 nop
- default:
- printf("%s: error, unknown height %d!\n", __FUNCTION__, height);
-8002f394: 8fc60024 lw a2,36(s8)
-8002f398: 3c028004 lui v0,0x8004
-8002f39c: 2445fd88 addiu a1,v0,-632
-8002f3a0: 3c028004 lui v0,0x8004
-8002f3a4: 2444fd68 addiu a0,v0,-664
-8002f3a8: 0c00ed8f jal 8003b63c <printf>
-8002f3ac: 00000000 nop
- return 0;
-8002f3b0: 00001021 move v0,zero
-8002f3b4: 1000003b b 8002f4a4 <GsSetVideoModeEx+0x2c4>
-8002f3b8: 00000000 nop
- }
-
- switch(width)
- {
- case 256:
- break;
-8002f3bc: 00000000 nop
- default:
- printf("%s: error, unknown height %d!\n", __FUNCTION__, height);
- return 0;
- }
-
- if(video_mode)mode|=8; // Set PAL
-8002f3c0: 8fc20028 lw v0,40(s8)
-8002f3c4: 00000000 nop
-8002f3c8: 10400005 beqz v0,8002f3e0 <GsSetVideoModeEx+0x200>
-8002f3cc: 00000000 nop
-8002f3d0: 93c20010 lbu v0,16(s8)
-8002f3d4: 00000000 nop
-8002f3d8: 34420008 ori v0,v0,0x8
-8002f3dc: a3c20010 sb v0,16(s8)
- if(rgb24)mode|=16; // Set unaccellerated 24-bit mode
-8002f3e0: 8fc2002c lw v0,44(s8)
-8002f3e4: 00000000 nop
-8002f3e8: 10400005 beqz v0,8002f400 <GsSetVideoModeEx+0x220>
-8002f3ec: 00000000 nop
-8002f3f0: 93c20010 lbu v0,16(s8)
-8002f3f4: 00000000 nop
-8002f3f8: 34420010 ori v0,v0,0x10
-8002f3fc: a3c20010 sb v0,16(s8)
- if(inter)mode|=32; // Set interlaced video mode
-8002f400: 8fc20030 lw v0,48(s8)
-8002f404: 00000000 nop
-8002f408: 10400005 beqz v0,8002f420 <GsSetVideoModeEx+0x240>
-8002f40c: 00000000 nop
-8002f410: 93c20010 lbu v0,16(s8)
-8002f414: 00000000 nop
-8002f418: 34420020 ori v0,v0,0x20
-8002f41c: a3c20010 sb v0,16(s8)
- if(reverse)mode|=128; // Set reverse flag (?)
-8002f420: 8fc20034 lw v0,52(s8)
-8002f424: 00000000 nop
-8002f428: 10400005 beqz v0,8002f440 <GsSetVideoModeEx+0x260>
-8002f42c: 00000000 nop
-8002f430: 93c30010 lbu v1,16(s8)
-8002f434: 2402ff80 li v0,-128
-8002f438: 00621025 or v0,v1,v0
-8002f43c: a3c20010 sb v0,16(s8)
-
- gpu_ctrl(8, mode);
-8002f440: 93c20010 lbu v0,16(s8)
-8002f444: 00000000 nop
-8002f448: 00402821 move a1,v0
-8002f44c: 24040008 li a0,8
-8002f450: 0c00bb8b jal 8002ee2c <gpu_ctrl>
-8002f454: 00000000 nop
- GsEnableDisplay(1);
-8002f458: 24040001 li a0,1
-8002f45c: 0c00bc11 jal 8002f044 <GsEnableDisplay>
-8002f460: 00000000 nop
-
- GsScreenW = width;
-8002f464: 8fc20020 lw v0,32(s8)
-8002f468: 00000000 nop
-8002f46c: 3043ffff andi v1,v0,0xffff
-8002f470: 3c028007 lui v0,0x8007
-8002f474: a4431d48 sh v1,7496(v0)
- GsScreenH = height;
-8002f478: 8fc20024 lw v0,36(s8)
-8002f47c: 00000000 nop
-8002f480: 3043ffff andi v1,v0,0xffff
-8002f484: 3c028007 lui v0,0x8007
-8002f488: a4431d42 sh v1,7490(v0)
- GsScreenM = video_mode;
-8002f48c: 8fc20028 lw v0,40(s8)
-8002f490: 00000000 nop
-8002f494: 304300ff andi v1,v0,0xff
-8002f498: 3c028007 lui v0,0x8007
-8002f49c: a0431d50 sb v1,7504(v0)
-
- return 1;
-8002f4a0: 24020001 li v0,1
-}
-8002f4a4: 03c0e821 move sp,s8
-8002f4a8: 8fbf001c lw ra,28(sp)
-8002f4ac: 8fbe0018 lw s8,24(sp)
-8002f4b0: 27bd0020 addiu sp,sp,32
-8002f4b4: 03e00008 jr ra
-8002f4b8: 00000000 nop
-
-8002f4bc <DrawFBRect>:
-
-void DrawFBRect(int x, int y, int w, int h, int r, int g, int b)
-{
-8002f4bc: 27bdffe8 addiu sp,sp,-24
-8002f4c0: afbf0014 sw ra,20(sp)
-8002f4c4: afbe0010 sw s8,16(sp)
-8002f4c8: 03a0f021 move s8,sp
-8002f4cc: afc40018 sw a0,24(s8)
-8002f4d0: afc5001c sw a1,28(s8)
-8002f4d4: afc60020 sw a2,32(s8)
-8002f4d8: afc70024 sw a3,36(s8)
- while(!(GPU_CONTROL_PORT & (1<<0x1c)));
-8002f4dc: 00000000 nop
-8002f4e0: 3c021f80 lui v0,0x1f80
-8002f4e4: 34421814 ori v0,v0,0x1814
-8002f4e8: 8c430000 lw v1,0(v0)
-8002f4ec: 3c021000 lui v0,0x1000
-8002f4f0: 00621024 and v0,v1,v0
-8002f4f4: 1040fffa beqz v0,8002f4e0 <DrawFBRect+0x24>
-8002f4f8: 00000000 nop
-
- // Disable DMA
- GPU_CONTROL_PORT = 0x04000000;
-8002f4fc: 3c021f80 lui v0,0x1f80
-8002f500: 34421814 ori v0,v0,0x1814
-8002f504: 3c030400 lui v1,0x400
-8002f508: ac430000 sw v1,0(v0)
-
- GPU_DATA_PORT = 0x01000000; // Reset data port
-8002f50c: 3c021f80 lui v0,0x1f80
-8002f510: 34421810 ori v0,v0,0x1810
-8002f514: 3c030100 lui v1,0x100
-8002f518: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = 0xE6000000; // Disable masking stuff
-8002f51c: 3c021f80 lui v0,0x1f80
-8002f520: 34421810 ori v0,v0,0x1810
-8002f524: 3c03e600 lui v1,0xe600
-8002f528: ac430000 sw v1,0(v0)
- gpu_data_ctrl(2, ((b&0xff)<<16)|((g&0xff)<<8)|r);
-8002f52c: 8fc20030 lw v0,48(s8)
-8002f530: 00000000 nop
-8002f534: 304200ff andi v0,v0,0xff
-8002f538: 00021c00 sll v1,v0,0x10
-8002f53c: 8fc2002c lw v0,44(s8)
-8002f540: 00000000 nop
-8002f544: 00021200 sll v0,v0,0x8
-8002f548: 3042ffff andi v0,v0,0xffff
-8002f54c: 00621825 or v1,v1,v0
-8002f550: 8fc20028 lw v0,40(s8)
-8002f554: 00000000 nop
-8002f558: 00621025 or v0,v1,v0
-8002f55c: 00402821 move a1,v0
-8002f560: 24040002 li a0,2
-8002f564: 0c00bbb5 jal 8002eed4 <gpu_data_ctrl>
-8002f568: 00000000 nop
- GPU_DATA_PORT = (y<<16)|x;
-8002f56c: 3c021f80 lui v0,0x1f80
-8002f570: 34421810 ori v0,v0,0x1810
-8002f574: 8fc3001c lw v1,28(s8)
-8002f578: 00000000 nop
-8002f57c: 00032400 sll a0,v1,0x10
-8002f580: 8fc30018 lw v1,24(s8)
-8002f584: 00000000 nop
-8002f588: 00831825 or v1,a0,v1
-8002f58c: ac430000 sw v1,0(v0)
- GPU_DATA_PORT = (h<<16)|w;
-8002f590: 3c021f80 lui v0,0x1f80
-8002f594: 34421810 ori v0,v0,0x1810
-8002f598: 8fc30024 lw v1,36(s8)
-8002f59c: 00000000 nop
-8002f5a0: 00032400 sll a0,v1,0x10
-8002f5a4: 8fc30020 lw v1,32(s8)
-8002f5a8: 00000000 nop
-8002f5ac: 00831825 or v1,a0,v1
-8002f5b0: ac430000 sw v1,0(v0)
-}
-8002f5b4: 00000000 nop
-8002f5b8: 03c0e821 move sp,s8
-8002f5bc: 8fbf0014 lw ra,20(sp)
-8002f5c0: 8fbe0010 lw s8,16(sp)
-8002f5c4: 27bd0018 addiu sp,sp,24
-8002f5c8: 03e00008 jr ra
-8002f5cc: 00000000 nop
-
-8002f5d0 <GsClearMem>:
-
-void GsClearMem()
-{
-8002f5d0: 27bdffd8 addiu sp,sp,-40
-8002f5d4: afbf0024 sw ra,36(sp)
-8002f5d8: afbe0020 sw s8,32(sp)
-8002f5dc: 03a0f021 move s8,sp
- // "Clears" the entire video memory by using DrawFBRect
- // and waits that it has finished drawing...
-
- DrawFBRect(0,0,1023,511,0,0,0);
-8002f5e0: afa00018 sw zero,24(sp)
-8002f5e4: afa00014 sw zero,20(sp)
-8002f5e8: afa00010 sw zero,16(sp)
-8002f5ec: 240701ff li a3,511
-8002f5f0: 240603ff li a2,1023
-8002f5f4: 00002821 move a1,zero
-8002f5f8: 00002021 move a0,zero
-8002f5fc: 0c00bd2f jal 8002f4bc <DrawFBRect>
-8002f600: 00000000 nop
- while(GsIsDrawing());
-8002f604: 00000000 nop
-8002f608: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-8002f60c: 00000000 nop
-8002f610: 1440fffd bnez v0,8002f608 <GsClearMem+0x38>
-8002f614: 00000000 nop
- DrawFBRect(0,511,1023,1,0,0,0);
-8002f618: afa00018 sw zero,24(sp)
-8002f61c: afa00014 sw zero,20(sp)
-8002f620: afa00010 sw zero,16(sp)
-8002f624: 24070001 li a3,1
-8002f628: 240603ff li a2,1023
-8002f62c: 240501ff li a1,511
-8002f630: 00002021 move a0,zero
-8002f634: 0c00bd2f jal 8002f4bc <DrawFBRect>
-8002f638: 00000000 nop
- while(GsIsDrawing());
-8002f63c: 00000000 nop
-8002f640: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-8002f644: 00000000 nop
-8002f648: 1440fffd bnez v0,8002f640 <GsClearMem+0x70>
-8002f64c: 00000000 nop
- DrawFBRect(1023,511,1,1,0,0,0);
-8002f650: afa00018 sw zero,24(sp)
-8002f654: afa00014 sw zero,20(sp)
-8002f658: afa00010 sw zero,16(sp)
-8002f65c: 24070001 li a3,1
-8002f660: 24060001 li a2,1
-8002f664: 240501ff li a1,511
-8002f668: 240403ff li a0,1023
-8002f66c: 0c00bd2f jal 8002f4bc <DrawFBRect>
-8002f670: 00000000 nop
- while(GsIsDrawing());
-8002f674: 00000000 nop
-8002f678: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-8002f67c: 00000000 nop
-8002f680: 1440fffd bnez v0,8002f678 <GsClearMem+0xa8>
-8002f684: 00000000 nop
-}
-8002f688: 00000000 nop
-8002f68c: 03c0e821 move sp,s8
-8002f690: 8fbf0024 lw ra,36(sp)
-8002f694: 8fbe0020 lw s8,32(sp)
-8002f698: 27bd0028 addiu sp,sp,40
-8002f69c: 03e00008 jr ra
-8002f6a0: 00000000 nop
-
-8002f6a4 <GsImageFromTim>:
-
-int GsImageFromTim(GsImage *image, void *timdata)
-{
-8002f6a4: 27bdffe8 addiu sp,sp,-24
-8002f6a8: afbe0014 sw s8,20(sp)
-8002f6ac: 03a0f021 move s8,sp
-8002f6b0: afc40018 sw a0,24(s8)
-8002f6b4: afc5001c sw a1,28(s8)
- unsigned int *timdata_i = (unsigned int*)timdata;
-8002f6b8: 8fc2001c lw v0,28(s8)
-8002f6bc: 00000000 nop
-8002f6c0: afc20004 sw v0,4(s8)
- unsigned short *timdata_s = (unsigned short*)timdata;
-8002f6c4: 8fc2001c lw v0,28(s8)
-8002f6c8: 00000000 nop
-8002f6cc: afc20008 sw v0,8(s8)
- unsigned int pdata_pos;
- unsigned int pdata_pos_s;
-
- //printf("timdata_i[0] = %08x\n", timdata_i[0]);
-
- if(timdata_i[0] != 0x10)
-8002f6d0: 8fc20004 lw v0,4(s8)
-8002f6d4: 00000000 nop
-8002f6d8: 8c430000 lw v1,0(v0)
-8002f6dc: 24020010 li v0,16
-8002f6e0: 10620004 beq v1,v0,8002f6f4 <GsImageFromTim+0x50>
-8002f6e4: 00000000 nop
- {
- //printf("timdata_i[0] = %08x\n", timdata_i[0]);
- return 0; // Unknown version or ID
-8002f6e8: 00001021 move v0,zero
-8002f6ec: 10000094 b 8002f940 <GsImageFromTim+0x29c>
-8002f6f0: 00000000 nop
- }
-
- image->pmode = timdata_i[1] & 7;
-8002f6f4: 8fc20004 lw v0,4(s8)
-8002f6f8: 00000000 nop
-8002f6fc: 24420004 addiu v0,v0,4
-8002f700: 8c420000 lw v0,0(v0)
-8002f704: 00000000 nop
-8002f708: 30430007 andi v1,v0,0x7
-8002f70c: 8fc20018 lw v0,24(s8)
-8002f710: 00000000 nop
-8002f714: ac430000 sw v1,0(v0)
-
- //printf("image->pmode = %d\n", image->pmode);
-
- image->has_clut = (timdata_i[1] & 8) ? 1 : 0;
-8002f718: 8fc20004 lw v0,4(s8)
-8002f71c: 00000000 nop
-8002f720: 24420004 addiu v0,v0,4
-8002f724: 8c420000 lw v0,0(v0)
-8002f728: 00000000 nop
-8002f72c: 30420008 andi v0,v0,0x8
-8002f730: 0002102b sltu v0,zero,v0
-8002f734: 304200ff andi v0,v0,0xff
-8002f738: 00401821 move v1,v0
-8002f73c: 8fc20018 lw v0,24(s8)
-8002f740: 00000000 nop
-8002f744: ac430004 sw v1,4(v0)
-
- if(!image->has_clut)
-8002f748: 8fc20018 lw v0,24(s8)
-8002f74c: 00000000 nop
-8002f750: 8c420004 lw v0,4(v0)
-8002f754: 00000000 nop
-8002f758: 14400005 bnez v0,8002f770 <GsImageFromTim+0xcc>
-8002f75c: 00000000 nop
- pdata_pos = 8;
-8002f760: 24020008 li v0,8
-8002f764: afc20000 sw v0,0(s8)
-8002f768: 10000032 b 8002f834 <GsImageFromTim+0x190>
-8002f76c: 00000000 nop
- else
- {
- pdata_pos = 8 + timdata_i[2];
-8002f770: 8fc20004 lw v0,4(s8)
-8002f774: 00000000 nop
-8002f778: 24420008 addiu v0,v0,8
-8002f77c: 8c420000 lw v0,0(v0)
-8002f780: 00000000 nop
-8002f784: 24420008 addiu v0,v0,8
-8002f788: afc20000 sw v0,0(s8)
- image->clut_x = timdata_s[6];
-8002f78c: 8fc20008 lw v0,8(s8)
-8002f790: 00000000 nop
-8002f794: 2442000c addiu v0,v0,12
-8002f798: 94420000 lhu v0,0(v0)
-8002f79c: 00000000 nop
-8002f7a0: 00401821 move v1,v0
-8002f7a4: 8fc20018 lw v0,24(s8)
-8002f7a8: 00000000 nop
-8002f7ac: ac430008 sw v1,8(v0)
- image->clut_y = timdata_s[7];
-8002f7b0: 8fc20008 lw v0,8(s8)
-8002f7b4: 00000000 nop
-8002f7b8: 2442000e addiu v0,v0,14
-8002f7bc: 94420000 lhu v0,0(v0)
-8002f7c0: 00000000 nop
-8002f7c4: 00401821 move v1,v0
-8002f7c8: 8fc20018 lw v0,24(s8)
-8002f7cc: 00000000 nop
-8002f7d0: ac43000c sw v1,12(v0)
- image->clut_w = timdata_s[8];
-8002f7d4: 8fc20008 lw v0,8(s8)
-8002f7d8: 00000000 nop
-8002f7dc: 24420010 addiu v0,v0,16
-8002f7e0: 94420000 lhu v0,0(v0)
-8002f7e4: 00000000 nop
-8002f7e8: 00401821 move v1,v0
-8002f7ec: 8fc20018 lw v0,24(s8)
-8002f7f0: 00000000 nop
-8002f7f4: ac430010 sw v1,16(v0)
- image->clut_h = timdata_s[9];
-8002f7f8: 8fc20008 lw v0,8(s8)
-8002f7fc: 00000000 nop
-8002f800: 24420012 addiu v0,v0,18
-8002f804: 94420000 lhu v0,0(v0)
-8002f808: 00000000 nop
-8002f80c: 00401821 move v1,v0
-8002f810: 8fc20018 lw v0,24(s8)
-8002f814: 00000000 nop
-8002f818: ac430014 sw v1,20(v0)
- image->clut_data = &timdata_s[10];
-8002f81c: 8fc20008 lw v0,8(s8)
-8002f820: 00000000 nop
-8002f824: 24430014 addiu v1,v0,20
-8002f828: 8fc20018 lw v0,24(s8)
-8002f82c: 00000000 nop
-8002f830: ac430028 sw v1,40(v0)
- printf("image->clut_x = %d\n", image->clut_x);
- printf("image->clut_h = %d\n", image->clut_h);
- printf("image->clut_w = %d\n", image->clut_w);*/
- }
-
- pdata_pos_s = pdata_pos / 2;
-8002f834: 8fc20000 lw v0,0(s8)
-8002f838: 00000000 nop
-8002f83c: 00021042 srl v0,v0,0x1
-8002f840: afc2000c sw v0,12(s8)
-
- image->x = timdata_s[pdata_pos_s + 2];
-8002f844: 8fc2000c lw v0,12(s8)
-8002f848: 00000000 nop
-8002f84c: 24420002 addiu v0,v0,2
-8002f850: 00021040 sll v0,v0,0x1
-8002f854: 8fc30008 lw v1,8(s8)
-8002f858: 00000000 nop
-8002f85c: 00621021 addu v0,v1,v0
-8002f860: 94420000 lhu v0,0(v0)
-8002f864: 00000000 nop
-8002f868: 00401821 move v1,v0
-8002f86c: 8fc20018 lw v0,24(s8)
-8002f870: 00000000 nop
-8002f874: ac430018 sw v1,24(v0)
- image->y = timdata_s[pdata_pos_s + 3];
-8002f878: 8fc2000c lw v0,12(s8)
-8002f87c: 00000000 nop
-8002f880: 24420003 addiu v0,v0,3
-8002f884: 00021040 sll v0,v0,0x1
-8002f888: 8fc30008 lw v1,8(s8)
-8002f88c: 00000000 nop
-8002f890: 00621021 addu v0,v1,v0
-8002f894: 94420000 lhu v0,0(v0)
-8002f898: 00000000 nop
-8002f89c: 00401821 move v1,v0
-8002f8a0: 8fc20018 lw v0,24(s8)
-8002f8a4: 00000000 nop
-8002f8a8: ac43001c sw v1,28(v0)
- image->w = timdata_s[pdata_pos_s + 4];
-8002f8ac: 8fc2000c lw v0,12(s8)
-8002f8b0: 00000000 nop
-8002f8b4: 24420004 addiu v0,v0,4
-8002f8b8: 00021040 sll v0,v0,0x1
-8002f8bc: 8fc30008 lw v1,8(s8)
-8002f8c0: 00000000 nop
-8002f8c4: 00621021 addu v0,v1,v0
-8002f8c8: 94420000 lhu v0,0(v0)
-8002f8cc: 00000000 nop
-8002f8d0: 00401821 move v1,v0
-8002f8d4: 8fc20018 lw v0,24(s8)
-8002f8d8: 00000000 nop
-8002f8dc: ac430020 sw v1,32(v0)
- image->h = timdata_s[pdata_pos_s + 5];
-8002f8e0: 8fc2000c lw v0,12(s8)
-8002f8e4: 00000000 nop
-8002f8e8: 24420005 addiu v0,v0,5
-8002f8ec: 00021040 sll v0,v0,0x1
-8002f8f0: 8fc30008 lw v1,8(s8)
-8002f8f4: 00000000 nop
-8002f8f8: 00621021 addu v0,v1,v0
-8002f8fc: 94420000 lhu v0,0(v0)
-8002f900: 00000000 nop
-8002f904: 00401821 move v1,v0
-8002f908: 8fc20018 lw v0,24(s8)
-8002f90c: 00000000 nop
-8002f910: ac430024 sw v1,36(v0)
- image->data = &timdata_s[pdata_pos_s + 6];
-8002f914: 8fc2000c lw v0,12(s8)
-8002f918: 00000000 nop
-8002f91c: 24420006 addiu v0,v0,6
-8002f920: 00021040 sll v0,v0,0x1
-8002f924: 8fc30008 lw v1,8(s8)
-8002f928: 00000000 nop
-8002f92c: 00621821 addu v1,v1,v0
-8002f930: 8fc20018 lw v0,24(s8)
-8002f934: 00000000 nop
-8002f938: ac43002c sw v1,44(v0)
- /*printf("image->y = %d\n", image->y);
- printf("image->x = %d\n", image->x);
- printf("image->h = %d\n", image->h);
- printf("image->w = %d\n", image->w);*/
-
- return 1;
-8002f93c: 24020001 li v0,1
-}
-8002f940: 03c0e821 move sp,s8
-8002f944: 8fbe0014 lw s8,20(sp)
-8002f948: 27bd0018 addiu sp,sp,24
-8002f94c: 03e00008 jr ra
-8002f950: 00000000 nop
-
-8002f954 <GsUploadImage>:
-
-void GsUploadImage(GsImage *image)
-{
-8002f954: 27bdffe0 addiu sp,sp,-32
-8002f958: afbf001c sw ra,28(sp)
-8002f95c: afbe0018 sw s8,24(sp)
-8002f960: 03a0f021 move s8,sp
-8002f964: afc40020 sw a0,32(s8)
- if(image->has_clut)
-8002f968: 8fc20020 lw v0,32(s8)
-8002f96c: 00000000 nop
-8002f970: 8c420004 lw v0,4(v0)
-8002f974: 00000000 nop
-8002f978: 10400004 beqz v0,8002f98c <GsUploadImage+0x38>
-8002f97c: 00000000 nop
- {
- GsUploadCLUT(image);
-8002f980: 8fc40020 lw a0,32(s8)
-8002f984: 0c00be81 jal 8002fa04 <GsUploadCLUT>
-8002f988: 00000000 nop
- }
-
- LoadImage(image->data, image->x, image->y, image->w, image->h);
-8002f98c: 8fc20020 lw v0,32(s8)
-8002f990: 00000000 nop
-8002f994: 8c43002c lw v1,44(v0)
-8002f998: 8fc20020 lw v0,32(s8)
-8002f99c: 00000000 nop
-8002f9a0: 8c440018 lw a0,24(v0)
-8002f9a4: 8fc20020 lw v0,32(s8)
-8002f9a8: 00000000 nop
-8002f9ac: 8c45001c lw a1,28(v0)
-8002f9b0: 8fc20020 lw v0,32(s8)
-8002f9b4: 00000000 nop
-8002f9b8: 8c460020 lw a2,32(v0)
-8002f9bc: 8fc20020 lw v0,32(s8)
-8002f9c0: 00000000 nop
-8002f9c4: 8c420024 lw v0,36(v0)
-8002f9c8: 00000000 nop
-8002f9cc: afa20010 sw v0,16(sp)
-8002f9d0: 00c03821 move a3,a2
-8002f9d4: 00a03021 move a2,a1
-8002f9d8: 00802821 move a1,a0
-8002f9dc: 00602021 move a0,v1
-8002f9e0: 0c00ba60 jal 8002e980 <LoadImage>
-8002f9e4: 00000000 nop
-}
-8002f9e8: 00000000 nop
-8002f9ec: 03c0e821 move sp,s8
-8002f9f0: 8fbf001c lw ra,28(sp)
-8002f9f4: 8fbe0018 lw s8,24(sp)
-8002f9f8: 27bd0020 addiu sp,sp,32
-8002f9fc: 03e00008 jr ra
-8002fa00: 00000000 nop
-
-8002fa04 <GsUploadCLUT>:
-
-void GsUploadCLUT(GsImage * image)
-{
-8002fa04: 27bdffe0 addiu sp,sp,-32
-8002fa08: afbf001c sw ra,28(sp)
-8002fa0c: afbe0018 sw s8,24(sp)
-8002fa10: 03a0f021 move s8,sp
-8002fa14: afc40020 sw a0,32(s8)
- LoadImage( image->clut_data, image->clut_x, image->clut_y,
-8002fa18: 8fc20020 lw v0,32(s8)
-8002fa1c: 00000000 nop
-8002fa20: 8c430028 lw v1,40(v0)
-8002fa24: 8fc20020 lw v0,32(s8)
-8002fa28: 00000000 nop
-8002fa2c: 8c440008 lw a0,8(v0)
-8002fa30: 8fc20020 lw v0,32(s8)
-8002fa34: 00000000 nop
-8002fa38: 8c45000c lw a1,12(v0)
-8002fa3c: 8fc20020 lw v0,32(s8)
-8002fa40: 00000000 nop
-8002fa44: 8c460010 lw a2,16(v0)
-8002fa48: 8fc20020 lw v0,32(s8)
-8002fa4c: 00000000 nop
-8002fa50: 8c420014 lw v0,20(v0)
-8002fa54: 00000000 nop
-8002fa58: afa20010 sw v0,16(sp)
-8002fa5c: 00c03821 move a3,a2
-8002fa60: 00a03021 move a2,a1
-8002fa64: 00802821 move a1,a0
-8002fa68: 00602021 move a0,v1
-8002fa6c: 0c00ba60 jal 8002e980 <LoadImage>
-8002fa70: 00000000 nop
- image->clut_w, image->clut_h );
-}
-8002fa74: 00000000 nop
-8002fa78: 03c0e821 move sp,s8
-8002fa7c: 8fbf001c lw ra,28(sp)
-8002fa80: 8fbe0018 lw s8,24(sp)
-8002fa84: 27bd0020 addiu sp,sp,32
-8002fa88: 03e00008 jr ra
-8002fa8c: 00000000 nop
-
-8002fa90 <GsSpriteFromImage>:
-
-int GsSpriteFromImage(GsSprite *sprite, GsImage *image, int do_upload)
-{
-8002fa90: 27bdffe8 addiu sp,sp,-24
-8002fa94: afbf0014 sw ra,20(sp)
-8002fa98: afbe0010 sw s8,16(sp)
-8002fa9c: 03a0f021 move s8,sp
-8002faa0: afc40018 sw a0,24(s8)
-8002faa4: afc5001c sw a1,28(s8)
-8002faa8: afc60020 sw a2,32(s8)
- if(do_upload)
-8002faac: 8fc20020 lw v0,32(s8)
-8002fab0: 00000000 nop
-8002fab4: 10400004 beqz v0,8002fac8 <GsSpriteFromImage+0x38>
-8002fab8: 00000000 nop
- GsUploadImage(image);
-8002fabc: 8fc4001c lw a0,28(s8)
-8002fac0: 0c00be55 jal 8002f954 <GsUploadImage>
-8002fac4: 00000000 nop
-
- bzero(sprite, sizeof(GsSprite));
-8002fac8: 2406002c li a2,44
-8002facc: 00002821 move a1,zero
-8002fad0: 8fc40018 lw a0,24(s8)
-8002fad4: 0c00d7ab jal 80035eac <memset>
-8002fad8: 00000000 nop
-
- sprite->tpage = (image->x / 64) + ((image->y/256)*16);
-8002fadc: 8fc2001c lw v0,28(s8)
-8002fae0: 00000000 nop
-8002fae4: 8c420018 lw v0,24(v0)
-8002fae8: 00000000 nop
-8002faec: 04410002 bgez v0,8002faf8 <GsSpriteFromImage+0x68>
-8002faf0: 00000000 nop
-8002faf4: 2442003f addiu v0,v0,63
-8002faf8: 00021183 sra v0,v0,0x6
-8002fafc: 304300ff andi v1,v0,0xff
-8002fb00: 8fc2001c lw v0,28(s8)
-8002fb04: 00000000 nop
-8002fb08: 8c42001c lw v0,28(v0)
-8002fb0c: 00000000 nop
-8002fb10: 04410002 bgez v0,8002fb1c <GsSpriteFromImage+0x8c>
-8002fb14: 00000000 nop
-8002fb18: 244200ff addiu v0,v0,255
-8002fb1c: 00021203 sra v0,v0,0x8
-8002fb20: 304200ff andi v0,v0,0xff
-8002fb24: 00021100 sll v0,v0,0x4
-8002fb28: 304200ff andi v0,v0,0xff
-8002fb2c: 00621021 addu v0,v1,v0
-8002fb30: 304300ff andi v1,v0,0xff
-8002fb34: 8fc20018 lw v0,24(s8)
-8002fb38: 00000000 nop
-8002fb3c: a0430011 sb v1,17(v0)
- sprite->u = image->x & 0x3f;
-8002fb40: 8fc2001c lw v0,28(s8)
-8002fb44: 00000000 nop
-8002fb48: 8c420018 lw v0,24(v0)
-8002fb4c: 00000000 nop
-8002fb50: 304200ff andi v0,v0,0xff
-8002fb54: 3042003f andi v0,v0,0x3f
-8002fb58: 304300ff andi v1,v0,0xff
-8002fb5c: 8fc20018 lw v0,24(s8)
-8002fb60: 00000000 nop
-8002fb64: a0430004 sb v1,4(v0)
- sprite->v = image->y & 0xff;
-8002fb68: 8fc2001c lw v0,28(s8)
-8002fb6c: 00000000 nop
-8002fb70: 8c42001c lw v0,28(v0)
-8002fb74: 00000000 nop
-8002fb78: 304300ff andi v1,v0,0xff
-8002fb7c: 8fc20018 lw v0,24(s8)
-8002fb80: 00000000 nop
-8002fb84: a0430005 sb v1,5(v0)
-
- sprite->cx = image->clut_x;
-8002fb88: 8fc2001c lw v0,28(s8)
-8002fb8c: 00000000 nop
-8002fb90: 8c420008 lw v0,8(v0)
-8002fb94: 00000000 nop
-8002fb98: 00021c00 sll v1,v0,0x10
-8002fb9c: 00031c03 sra v1,v1,0x10
-8002fba0: 8fc20018 lw v0,24(s8)
-8002fba4: 00000000 nop
-8002fba8: a443000a sh v1,10(v0)
- sprite->cy = image->clut_y;
-8002fbac: 8fc2001c lw v0,28(s8)
-8002fbb0: 00000000 nop
-8002fbb4: 8c42000c lw v0,12(v0)
-8002fbb8: 00000000 nop
-8002fbbc: 00021c00 sll v1,v0,0x10
-8002fbc0: 00031c03 sra v1,v1,0x10
-8002fbc4: 8fc20018 lw v0,24(s8)
-8002fbc8: 00000000 nop
-8002fbcc: a443000c sh v1,12(v0)
-
- if(image->pmode == 0) // 4-bit pixel mode
-8002fbd0: 8fc2001c lw v0,28(s8)
-8002fbd4: 00000000 nop
-8002fbd8: 8c420000 lw v0,0(v0)
-8002fbdc: 00000000 nop
-8002fbe0: 1440000c bnez v0,8002fc14 <GsSpriteFromImage+0x184>
-8002fbe4: 00000000 nop
- sprite->u*=4;
-8002fbe8: 8fc20018 lw v0,24(s8)
-8002fbec: 00000000 nop
-8002fbf0: 90420004 lbu v0,4(v0)
-8002fbf4: 00000000 nop
-8002fbf8: 00021080 sll v0,v0,0x2
-8002fbfc: 304300ff andi v1,v0,0xff
-8002fc00: 8fc20018 lw v0,24(s8)
-8002fc04: 00000000 nop
-8002fc08: a0430004 sb v1,4(v0)
-8002fc0c: 10000010 b 8002fc50 <GsSpriteFromImage+0x1c0>
-8002fc10: 00000000 nop
- else if(image->pmode == 1) // 8-bit pixel mode
-8002fc14: 8fc2001c lw v0,28(s8)
-8002fc18: 00000000 nop
-8002fc1c: 8c430000 lw v1,0(v0)
-8002fc20: 24020001 li v0,1
-8002fc24: 1462000a bne v1,v0,8002fc50 <GsSpriteFromImage+0x1c0>
-8002fc28: 00000000 nop
- sprite->u*=2;
-8002fc2c: 8fc20018 lw v0,24(s8)
-8002fc30: 00000000 nop
-8002fc34: 90420004 lbu v0,4(v0)
-8002fc38: 00000000 nop
-8002fc3c: 00021040 sll v0,v0,0x1
-8002fc40: 304300ff andi v1,v0,0xff
-8002fc44: 8fc20018 lw v0,24(s8)
-8002fc48: 00000000 nop
-8002fc4c: a0430004 sb v1,4(v0)
-
- switch(image->pmode)
-8002fc50: 8fc2001c lw v0,28(s8)
-8002fc54: 00000000 nop
-8002fc58: 8c420000 lw v0,0(v0)
-8002fc5c: 24030001 li v1,1
-8002fc60: 1043001e beq v0,v1,8002fcdc <GsSpriteFromImage+0x24c>
-8002fc64: 00000000 nop
-8002fc68: 28430002 slti v1,v0,2
-8002fc6c: 10600005 beqz v1,8002fc84 <GsSpriteFromImage+0x1f4>
-8002fc70: 00000000 nop
-8002fc74: 1040000b beqz v0,8002fca4 <GsSpriteFromImage+0x214>
-8002fc78: 00000000 nop
-8002fc7c: 10000045 b 8002fd94 <GsSpriteFromImage+0x304>
-8002fc80: 00000000 nop
-8002fc84: 24030002 li v1,2
-8002fc88: 10430022 beq v0,v1,8002fd14 <GsSpriteFromImage+0x284>
-8002fc8c: 00000000 nop
-8002fc90: 24030003 li v1,3
-8002fc94: 1043002a beq v0,v1,8002fd40 <GsSpriteFromImage+0x2b0>
-8002fc98: 00000000 nop
-8002fc9c: 1000003d b 8002fd94 <GsSpriteFromImage+0x304>
-8002fca0: 00000000 nop
- {
- case 0:
- sprite->w = image->w * 4;
-8002fca4: 8fc2001c lw v0,28(s8)
-8002fca8: 00000000 nop
-8002fcac: 8c420020 lw v0,32(v0)
-8002fcb0: 00000000 nop
-8002fcb4: 3042ffff andi v0,v0,0xffff
-8002fcb8: 00021080 sll v0,v0,0x2
-8002fcbc: 3042ffff andi v0,v0,0xffff
-8002fcc0: 00021c00 sll v1,v0,0x10
-8002fcc4: 00031c03 sra v1,v1,0x10
-8002fcc8: 8fc20018 lw v0,24(s8)
-8002fccc: 00000000 nop
-8002fcd0: a4430006 sh v1,6(v0)
- break;
-8002fcd4: 1000002f b 8002fd94 <GsSpriteFromImage+0x304>
-8002fcd8: 00000000 nop
- case 1:
- sprite->w = image->w * 2;
-8002fcdc: 8fc2001c lw v0,28(s8)
-8002fce0: 00000000 nop
-8002fce4: 8c420020 lw v0,32(v0)
-8002fce8: 00000000 nop
-8002fcec: 3042ffff andi v0,v0,0xffff
-8002fcf0: 00021040 sll v0,v0,0x1
-8002fcf4: 3042ffff andi v0,v0,0xffff
-8002fcf8: 00021c00 sll v1,v0,0x10
-8002fcfc: 00031c03 sra v1,v1,0x10
-8002fd00: 8fc20018 lw v0,24(s8)
-8002fd04: 00000000 nop
-8002fd08: a4430006 sh v1,6(v0)
- break;
-8002fd0c: 10000021 b 8002fd94 <GsSpriteFromImage+0x304>
-8002fd10: 00000000 nop
- case 2:
- sprite->w = image->w;
-8002fd14: 8fc2001c lw v0,28(s8)
-8002fd18: 00000000 nop
-8002fd1c: 8c420020 lw v0,32(v0)
-8002fd20: 00000000 nop
-8002fd24: 00021c00 sll v1,v0,0x10
-8002fd28: 00031c03 sra v1,v1,0x10
-8002fd2c: 8fc20018 lw v0,24(s8)
-8002fd30: 00000000 nop
-8002fd34: a4430006 sh v1,6(v0)
- break;
-8002fd38: 10000016 b 8002fd94 <GsSpriteFromImage+0x304>
-8002fd3c: 00000000 nop
- case 3:
- sprite->w = image->w + (image->w / 2);
-8002fd40: 8fc2001c lw v0,28(s8)
-8002fd44: 00000000 nop
-8002fd48: 8c420020 lw v0,32(v0)
-8002fd4c: 00000000 nop
-8002fd50: 3043ffff andi v1,v0,0xffff
-8002fd54: 8fc2001c lw v0,28(s8)
-8002fd58: 00000000 nop
-8002fd5c: 8c420020 lw v0,32(v0)
-8002fd60: 00000000 nop
-8002fd64: 000227c2 srl a0,v0,0x1f
-8002fd68: 00821021 addu v0,a0,v0
-8002fd6c: 00021043 sra v0,v0,0x1
-8002fd70: 3042ffff andi v0,v0,0xffff
-8002fd74: 00621021 addu v0,v1,v0
-8002fd78: 3042ffff andi v0,v0,0xffff
-8002fd7c: 00021c00 sll v1,v0,0x10
-8002fd80: 00031c03 sra v1,v1,0x10
-8002fd84: 8fc20018 lw v0,24(s8)
-8002fd88: 00000000 nop
-8002fd8c: a4430006 sh v1,6(v0)
- break;
-8002fd90: 00000000 nop
- }
-
- sprite->h = image->h;
-8002fd94: 8fc2001c lw v0,28(s8)
-8002fd98: 00000000 nop
-8002fd9c: 8c420024 lw v0,36(v0)
-8002fda0: 00000000 nop
-8002fda4: 00021c00 sll v1,v0,0x10
-8002fda8: 00031c03 sra v1,v1,0x10
-8002fdac: 8fc20018 lw v0,24(s8)
-8002fdb0: 00000000 nop
-8002fdb4: a4430008 sh v1,8(v0)
- sprite->attribute = COLORMODE(image->pmode);
-8002fdb8: 8fc2001c lw v0,28(s8)
-8002fdbc: 00000000 nop
-8002fdc0: 8c420000 lw v0,0(v0)
-8002fdc4: 00000000 nop
-8002fdc8: 30430003 andi v1,v0,0x3
-8002fdcc: 8fc20018 lw v0,24(s8)
-8002fdd0: 00000000 nop
-8002fdd4: ac430014 sw v1,20(v0)
- sprite->r = sprite->g = sprite->b = NORMAL_LUMINANCE;
-8002fdd8: 8fc20018 lw v0,24(s8)
-8002fddc: 2403ff80 li v1,-128
-8002fde0: a0430010 sb v1,16(v0)
-8002fde4: 8fc20018 lw v0,24(s8)
-8002fde8: 00000000 nop
-8002fdec: 90430010 lbu v1,16(v0)
-8002fdf0: 8fc20018 lw v0,24(s8)
-8002fdf4: 00000000 nop
-8002fdf8: a043000f sb v1,15(v0)
-8002fdfc: 8fc20018 lw v0,24(s8)
-8002fe00: 00000000 nop
-8002fe04: 9043000f lbu v1,15(v0)
-8002fe08: 8fc20018 lw v0,24(s8)
-8002fe0c: 00000000 nop
-8002fe10: a043000e sb v1,14(v0)
-
- return 1;
-8002fe14: 24020001 li v0,1
-}
-8002fe18: 03c0e821 move sp,s8
-8002fe1c: 8fbf0014 lw ra,20(sp)
-8002fe20: 8fbe0010 lw s8,16(sp)
-8002fe24: 27bd0018 addiu sp,sp,24
-8002fe28: 03e00008 jr ra
-8002fe2c: 00000000 nop
-
-8002fe30 <GsSetMasking>:
-
-void GsSetMasking(unsigned char flag)
-{
-8002fe30: 27bdffe8 addiu sp,sp,-24
-8002fe34: afbf0014 sw ra,20(sp)
-8002fe38: afbe0010 sw s8,16(sp)
-8002fe3c: 03a0f021 move s8,sp
-8002fe40: 00801021 move v0,a0
-8002fe44: a3c20018 sb v0,24(s8)
- gpu_data_ctrl(0xe6, flag);
-8002fe48: 93c20018 lbu v0,24(s8)
-8002fe4c: 00000000 nop
-8002fe50: 00402821 move a1,v0
-8002fe54: 240400e6 li a0,230
-8002fe58: 0c00bbb5 jal 8002eed4 <gpu_data_ctrl>
-8002fe5c: 00000000 nop
-}
-8002fe60: 00000000 nop
-8002fe64: 03c0e821 move sp,s8
-8002fe68: 8fbf0014 lw ra,20(sp)
-8002fe6c: 8fbe0010 lw s8,16(sp)
-8002fe70: 27bd0018 addiu sp,sp,24
-8002fe74: 03e00008 jr ra
-8002fe78: 00000000 nop
-
-8002fe7c <GsIsDrawing>:
-
-int GsIsDrawing()
-{
-8002fe7c: 27bdfff8 addiu sp,sp,-8
-8002fe80: afbe0004 sw s8,4(sp)
-8002fe84: 03a0f021 move s8,sp
- for(x = 0; x < 1000; x++);
-
- return r;
- }*/
-
- return !(GPU_CONTROL_PORT & (1<<0x1a)) ;
-8002fe88: 3c021f80 lui v0,0x1f80
-8002fe8c: 34421814 ori v0,v0,0x1814
-8002fe90: 8c430000 lw v1,0(v0)
-8002fe94: 3c020400 lui v0,0x400
-8002fe98: 00621024 and v0,v1,v0
-8002fe9c: 2c420001 sltiu v0,v0,1
-8002fea0: 304200ff andi v0,v0,0xff
-}
-8002fea4: 03c0e821 move sp,s8
-8002fea8: 8fbe0004 lw s8,4(sp)
-8002feac: 27bd0008 addiu sp,sp,8
-8002feb0: 03e00008 jr ra
-8002feb4: 00000000 nop
-
-8002feb8 <GsSetDrawEnvSimple>:
-
-// Functions which use default values to use when you do not
-// really need to fiddle with all the fields of the structure
-
-void GsSetDrawEnvSimple(int x, int y, int w, int h)
-{
-8002feb8: 27bdffd8 addiu sp,sp,-40
-8002febc: afbf0024 sw ra,36(sp)
-8002fec0: afbe0020 sw s8,32(sp)
-8002fec4: 03a0f021 move s8,sp
-8002fec8: afc40028 sw a0,40(s8)
-8002fecc: afc5002c sw a1,44(s8)
-8002fed0: afc60030 sw a2,48(s8)
-8002fed4: afc70034 sw a3,52(s8)
- GsDrawEnv env;
-
- env.dither = 0;
-8002fed8: a3c00010 sb zero,16(s8)
- env.draw_on_display = 1;
-8002fedc: 24020001 li v0,1
-8002fee0: a3c20011 sb v0,17(s8)
- env.x = x;
-8002fee4: 8fc20028 lw v0,40(s8)
-8002fee8: 00000000 nop
-8002feec: 00021400 sll v0,v0,0x10
-8002fef0: 00021403 sra v0,v0,0x10
-8002fef4: a7c20012 sh v0,18(s8)
- env.y = y;
-8002fef8: 8fc2002c lw v0,44(s8)
-8002fefc: 00000000 nop
-8002ff00: 00021400 sll v0,v0,0x10
-8002ff04: 00021403 sra v0,v0,0x10
-8002ff08: a7c20014 sh v0,20(s8)
- env.w = w;
-8002ff0c: 8fc20030 lw v0,48(s8)
-8002ff10: 00000000 nop
-8002ff14: 00021400 sll v0,v0,0x10
-8002ff18: 00021403 sra v0,v0,0x10
-8002ff1c: a7c20016 sh v0,22(s8)
- env.h = h;
-8002ff20: 8fc20034 lw v0,52(s8)
-8002ff24: 00000000 nop
-8002ff28: 00021400 sll v0,v0,0x10
-8002ff2c: 00021403 sra v0,v0,0x10
-8002ff30: a7c20018 sh v0,24(s8)
- env.ignore_mask = 0;
-8002ff34: a3c0001a sb zero,26(s8)
- env.set_mask = 0;
-8002ff38: a3c0001b sb zero,27(s8)
-
- GsSetDrawEnv(&env);
-8002ff3c: 27c20010 addiu v0,s8,16
-8002ff40: 00402021 move a0,v0
-8002ff44: 0c00bada jal 8002eb68 <GsSetDrawEnv>
-8002ff48: 00000000 nop
-}
-8002ff4c: 00000000 nop
-8002ff50: 03c0e821 move sp,s8
-8002ff54: 8fbf0024 lw ra,36(sp)
-8002ff58: 8fbe0020 lw s8,32(sp)
-8002ff5c: 27bd0028 addiu sp,sp,40
-8002ff60: 03e00008 jr ra
-8002ff64: 00000000 nop
-
-8002ff68 <GsSetDispEnvSimple>:
-
-void GsSetDispEnvSimple(int x, int y)
-{
-8002ff68: 27bdffe0 addiu sp,sp,-32
-8002ff6c: afbf001c sw ra,28(sp)
-8002ff70: afbe0018 sw s8,24(sp)
-8002ff74: 03a0f021 move s8,sp
-8002ff78: afc40020 sw a0,32(s8)
-8002ff7c: afc50024 sw a1,36(s8)
- GsDispEnv env;
-
- env.x = x;
-8002ff80: 8fc20020 lw v0,32(s8)
-8002ff84: 00000000 nop
-8002ff88: 00021400 sll v0,v0,0x10
-8002ff8c: 00021403 sra v0,v0,0x10
-8002ff90: a7c20010 sh v0,16(s8)
- env.y = y;
-8002ff94: 8fc20024 lw v0,36(s8)
-8002ff98: 00000000 nop
-8002ff9c: 00021400 sll v0,v0,0x10
-8002ffa0: 00021403 sra v0,v0,0x10
-8002ffa4: a7c20012 sh v0,18(s8)
-
- GsSetDispEnv(&env);
-8002ffa8: 27c20010 addiu v0,s8,16
-8002ffac: 00402021 move a0,v0
-8002ffb0: 0c00bb71 jal 8002edc4 <GsSetDispEnv>
-8002ffb4: 00000000 nop
-}
-8002ffb8: 00000000 nop
-8002ffbc: 03c0e821 move sp,s8
-8002ffc0: 8fbf001c lw ra,28(sp)
-8002ffc4: 8fbe0018 lw s8,24(sp)
-8002ffc8: 27bd0020 addiu sp,sp,32
-8002ffcc: 03e00008 jr ra
-8002ffd0: 00000000 nop
-
-8002ffd4 <GsLoadFont>:
-
-// Built-in font functions.
-
-void GsLoadFont(int fb_x, int fb_y, int cx, int cy)
-{
-8002ffd4: 27bdffd8 addiu sp,sp,-40
-8002ffd8: afbf0024 sw ra,36(sp)
-8002ffdc: afbe0020 sw s8,32(sp)
-8002ffe0: 03a0f021 move s8,sp
-8002ffe4: afc40028 sw a0,40(s8)
-8002ffe8: afc5002c sw a1,44(s8)
-8002ffec: afc60030 sw a2,48(s8)
-8002fff0: afc70034 sw a3,52(s8)
- unsigned short pal[2] = {0x0, 0x7fff};
-8002fff4: a7c00018 sh zero,24(s8)
-8002fff8: 24027fff li v0,32767
-8002fffc: a7c2001a sh v0,26(s8)
-
- LoadImage(psxsdk_font_data, fb_x, fb_y, 16, 128);
-80030000: 24020080 li v0,128
-80030004: afa20010 sw v0,16(sp)
-80030008: 24070010 li a3,16
-8003000c: 8fc6002c lw a2,44(s8)
-80030010: 8fc50028 lw a1,40(s8)
-80030014: 3c028004 lui v0,0x8004
-80030018: 2444154c addiu a0,v0,5452
-8003001c: 0c00ba60 jal 8002e980 <LoadImage>
-80030020: 00000000 nop
- while(GsIsDrawing());
-80030024: 00000000 nop
-80030028: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-8003002c: 00000000 nop
-80030030: 1440fffd bnez v0,80030028 <GsLoadFont+0x54>
-80030034: 00000000 nop
-
- if(cx != -1 && cy != -1)
-80030038: 8fc30030 lw v1,48(s8)
-8003003c: 2402ffff li v0,-1
-80030040: 1062001b beq v1,v0,800300b0 <GsLoadFont+0xdc>
-80030044: 00000000 nop
-80030048: 8fc30034 lw v1,52(s8)
-8003004c: 2402ffff li v0,-1
-80030050: 10620017 beq v1,v0,800300b0 <GsLoadFont+0xdc>
-80030054: 00000000 nop
- {
- LoadImage(pal, cx, cy, 16, 1);
-80030058: 24020001 li v0,1
-8003005c: afa20010 sw v0,16(sp)
-80030060: 24070010 li a3,16
-80030064: 8fc60034 lw a2,52(s8)
-80030068: 8fc50030 lw a1,48(s8)
-8003006c: 27c20018 addiu v0,s8,24
-80030070: 00402021 move a0,v0
-80030074: 0c00ba60 jal 8002e980 <LoadImage>
-80030078: 00000000 nop
-
- fb_font_cx = cx;
-8003007c: 3c028007 lui v0,0x8007
-80030080: 8fc30030 lw v1,48(s8)
-80030084: 00000000 nop
-80030088: ac431d54 sw v1,7508(v0)
- fb_font_cy = cy;
-8003008c: 3c028007 lui v0,0x8007
-80030090: 8fc30034 lw v1,52(s8)
-80030094: 00000000 nop
-80030098: ac431d44 sw v1,7492(v0)
-
- while(GsIsDrawing());
-8003009c: 00000000 nop
-800300a0: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-800300a4: 00000000 nop
-800300a8: 1440fffd bnez v0,800300a0 <GsLoadFont+0xcc>
-800300ac: 00000000 nop
- }
-
- fb_font_x = fb_x;
-800300b0: 3c028007 lui v0,0x8007
-800300b4: 8fc30028 lw v1,40(s8)
-800300b8: 00000000 nop
-800300bc: ac431d4c sw v1,7500(v0)
- fb_font_y = fb_y;
-800300c0: 3c028007 lui v0,0x8007
-800300c4: 8fc3002c lw v1,44(s8)
-800300c8: 00000000 nop
-800300cc: ac431d3c sw v1,7484(v0)
-}
-800300d0: 00000000 nop
-800300d4: 03c0e821 move sp,s8
-800300d8: 8fbf0024 lw ra,36(sp)
-800300dc: 8fbe0020 lw s8,32(sp)
-800300e0: 27bd0028 addiu sp,sp,40
-800300e4: 03e00008 jr ra
-800300e8: 00000000 nop
-
-800300ec <GsPrintFont_Draw>:
-
-unsigned int GsPrintFont_Draw(int x, int y, int scalex, int scaley)
-{
-800300ec: 27bdffb0 addiu sp,sp,-80
-800300f0: afbf004c sw ra,76(sp)
-800300f4: afbe0048 sw s8,72(sp)
-800300f8: 03a0f021 move s8,sp
-800300fc: afc40050 sw a0,80(s8)
-80030100: afc50054 sw a1,84(s8)
-80030104: afc60058 sw a2,88(s8)
-80030108: afc7005c sw a3,92(s8)
- va_start(ap, fmt);*/
-
-// r = vsnprintf(gpu_stringbuf, 512, fmt, ap);
-
-// va_end(ap);
- fw = gs_calculate_scaled_size(8, scalex);//(8*scalex)/4096;
-8003010c: 8fc50058 lw a1,88(s8)
-80030110: 24040008 li a0,8
-80030114: 0c00ae07 jal 8002b81c <gs_calculate_scaled_size>
-80030118: 00000000 nop
-8003011c: afc20014 sw v0,20(s8)
- fh = gs_calculate_scaled_size(8, scaley);//(8*scaley)/4096;
-80030120: 8fc5005c lw a1,92(s8)
-80030124: 24040008 li a0,8
-80030128: 0c00ae07 jal 8002b81c <gs_calculate_scaled_size>
-8003012c: 00000000 nop
-80030130: afc20018 sw v0,24(s8)
-
- spr.x = x;
-80030134: 8fc20050 lw v0,80(s8)
-80030138: 00000000 nop
-8003013c: 00021400 sll v0,v0,0x10
-80030140: 00021403 sra v0,v0,0x10
-80030144: a7c2001c sh v0,28(s8)
- spr.y = y;
-80030148: 8fc20054 lw v0,84(s8)
-8003014c: 00000000 nop
-80030150: 00021400 sll v0,v0,0x10
-80030154: 00021403 sra v0,v0,0x10
-80030158: a7c2001e sh v0,30(s8)
- spr.r = prfont_rl;
-8003015c: 3c028004 lui v0,0x8004
-80030160: 9042255c lbu v0,9564(v0)
-80030164: 00000000 nop
-80030168: a3c2002a sb v0,42(s8)
- spr.g = prfont_gl;
-8003016c: 3c028004 lui v0,0x8004
-80030170: 9042255d lbu v0,9565(v0)
-80030174: 00000000 nop
-80030178: a3c2002b sb v0,43(s8)
- spr.b = prfont_bl;
-8003017c: 3c028004 lui v0,0x8004
-80030180: 9042255e lbu v0,9566(v0)
-80030184: 00000000 nop
-80030188: a3c2002c sb v0,44(s8)
- spr.attribute = 0;
-8003018c: afc00030 sw zero,48(s8)
- spr.cx = fb_font_cx;
-80030190: 3c028007 lui v0,0x8007
-80030194: 8c421d54 lw v0,7508(v0)
-80030198: 00000000 nop
-8003019c: 00021400 sll v0,v0,0x10
-800301a0: 00021403 sra v0,v0,0x10
-800301a4: a7c20026 sh v0,38(s8)
- spr.cy = fb_font_cy;
-800301a8: 3c028007 lui v0,0x8007
-800301ac: 8c421d44 lw v0,7492(v0)
-800301b0: 00000000 nop
-800301b4: 00021400 sll v0,v0,0x10
-800301b8: 00021403 sra v0,v0,0x10
-800301bc: a7c20028 sh v0,40(s8)
- spr.tpage = (fb_font_x / 64) + ((fb_font_y / 256)*16);
-800301c0: 3c028007 lui v0,0x8007
-800301c4: 8c421d4c lw v0,7500(v0)
-800301c8: 00000000 nop
-800301cc: 04410002 bgez v0,800301d8 <GsPrintFont_Draw+0xec>
-800301d0: 00000000 nop
-800301d4: 2442003f addiu v0,v0,63
-800301d8: 00021183 sra v0,v0,0x6
-800301dc: 304300ff andi v1,v0,0xff
-800301e0: 3c028007 lui v0,0x8007
-800301e4: 8c421d3c lw v0,7484(v0)
-800301e8: 00000000 nop
-800301ec: 04410002 bgez v0,800301f8 <GsPrintFont_Draw+0x10c>
-800301f0: 00000000 nop
-800301f4: 244200ff addiu v0,v0,255
-800301f8: 00021203 sra v0,v0,0x8
-800301fc: 304200ff andi v0,v0,0xff
-80030200: 00021100 sll v0,v0,0x4
-80030204: 304200ff andi v0,v0,0xff
-80030208: 00621021 addu v0,v1,v0
-8003020c: 304200ff andi v0,v0,0xff
-80030210: a3c2002d sb v0,45(s8)
- spr.w = 8;
-80030214: 24020008 li v0,8
-80030218: a7c20022 sh v0,34(s8)
- spr.h = 8;
-8003021c: 24020008 li v0,8
-80030220: a7c20024 sh v0,36(s8)
- spr.scalex = scalex;
-80030224: 8fc20058 lw v0,88(s8)
-80030228: 00000000 nop
-8003022c: afc20034 sw v0,52(s8)
- spr.scaley = scaley;
-80030230: 8fc2005c lw v0,92(s8)
-80030234: 00000000 nop
-80030238: afc20038 sw v0,56(s8)
-
- string = gpu_stringbuf;
-8003023c: 3c028007 lui v0,0x8007
-80030240: 24428960 addiu v0,v0,-30368
-80030244: afc20010 sw v0,16(s8)
-
- while(*string)
-80030248: 100000da b 800305b4 <GsPrintFont_Draw+0x4c8>
-8003024c: 00000000 nop
- {
- if(prfont_flags & PRFONT_WRAP)
-80030250: 3c028007 lui v0,0x8007
-80030254: 8c421cdc lw v0,7388(v0)
-80030258: 00000000 nop
-8003025c: 30420001 andi v0,v0,0x1
-80030260: 10400020 beqz v0,800302e4 <GsPrintFont_Draw+0x1f8>
-80030264: 00000000 nop
- {
- if(spr.x >= GsScreenW)
-80030268: 87c2001c lh v0,28(s8)
-8003026c: 00000000 nop
-80030270: 00401821 move v1,v0
-80030274: 3c028007 lui v0,0x8007
-80030278: 94421d48 lhu v0,7496(v0)
-8003027c: 00000000 nop
-80030280: 0062102a slt v0,v1,v0
-80030284: 14400017 bnez v0,800302e4 <GsPrintFont_Draw+0x1f8>
-80030288: 00000000 nop
- {
- spr.x = spr.x - GsScreenW;
-8003028c: 87c2001c lh v0,28(s8)
-80030290: 00000000 nop
-80030294: 3043ffff andi v1,v0,0xffff
-80030298: 3c028007 lui v0,0x8007
-8003029c: 94421d48 lhu v0,7496(v0)
-800302a0: 00000000 nop
-800302a4: 00621023 subu v0,v1,v0
-800302a8: 3042ffff andi v0,v0,0xffff
-800302ac: 00021400 sll v0,v0,0x10
-800302b0: 00021403 sra v0,v0,0x10
-800302b4: a7c2001c sh v0,28(s8)
- spr.y += fh;
-800302b8: 87c2001e lh v0,30(s8)
-800302bc: 00000000 nop
-800302c0: 3043ffff andi v1,v0,0xffff
-800302c4: 8fc20018 lw v0,24(s8)
-800302c8: 00000000 nop
-800302cc: 3042ffff andi v0,v0,0xffff
-800302d0: 00621021 addu v0,v1,v0
-800302d4: 3042ffff andi v0,v0,0xffff
-800302d8: 00021400 sll v0,v0,0x10
-800302dc: 00021403 sra v0,v0,0x10
-800302e0: a7c2001e sh v0,30(s8)
- }
- }
-
- if(*string >= ' ' && *string <= '~')
-800302e4: 8fc20010 lw v0,16(s8)
-800302e8: 00000000 nop
-800302ec: 80420000 lb v0,0(v0)
-800302f0: 00000000 nop
-800302f4: 28420020 slti v0,v0,32
-800302f8: 14400071 bnez v0,800304c0 <GsPrintFont_Draw+0x3d4>
-800302fc: 00000000 nop
-80030300: 8fc20010 lw v0,16(s8)
-80030304: 00000000 nop
-80030308: 80430000 lb v1,0(v0)
-8003030c: 2402007f li v0,127
-80030310: 1062006b beq v1,v0,800304c0 <GsPrintFont_Draw+0x3d4>
-80030314: 00000000 nop
- {
- spr.u = ((fb_font_x & 0x3f)*4)+((*string & 7) << 3);
-80030318: 3c028007 lui v0,0x8007
-8003031c: 8c421d4c lw v0,7500(v0)
-80030320: 00000000 nop
-80030324: 304200ff andi v0,v0,0xff
-80030328: 3042003f andi v0,v0,0x3f
-8003032c: 304200ff andi v0,v0,0xff
-80030330: 00021080 sll v0,v0,0x2
-80030334: 304300ff andi v1,v0,0xff
-80030338: 8fc20010 lw v0,16(s8)
-8003033c: 00000000 nop
-80030340: 80420000 lb v0,0(v0)
-80030344: 00000000 nop
-80030348: 304200ff andi v0,v0,0xff
-8003034c: 30420007 andi v0,v0,0x7
-80030350: 304200ff andi v0,v0,0xff
-80030354: 000210c0 sll v0,v0,0x3
-80030358: 304200ff andi v0,v0,0xff
-8003035c: 00621021 addu v0,v1,v0
-80030360: 304200ff andi v0,v0,0xff
-80030364: a3c20020 sb v0,32(s8)
- spr.v = (fb_font_y & 0xff)+(*string & 0xf8);
-80030368: 3c028007 lui v0,0x8007
-8003036c: 8c421d3c lw v0,7484(v0)
-80030370: 00000000 nop
-80030374: 304300ff andi v1,v0,0xff
-80030378: 8fc20010 lw v0,16(s8)
-8003037c: 00000000 nop
-80030380: 80420000 lb v0,0(v0)
-80030384: 00000000 nop
-80030388: 304400ff andi a0,v0,0xff
-8003038c: 2402fff8 li v0,-8
-80030390: 00821024 and v0,a0,v0
-80030394: 304200ff andi v0,v0,0xff
-80030398: 00621021 addu v0,v1,v0
-8003039c: 304200ff andi v0,v0,0xff
-800303a0: a3c20021 sb v0,33(s8)
-
- if((spr.x < GsCurDrawEnvW && (spr.x+fw)>=0) &&
-800303a4: 87c2001c lh v0,28(s8)
-800303a8: 00000000 nop
-800303ac: 00401821 move v1,v0
-800303b0: 3c028007 lui v0,0x8007
-800303b4: 94421d40 lhu v0,7488(v0)
-800303b8: 00000000 nop
-800303bc: 0062102a slt v0,v1,v0
-800303c0: 10400034 beqz v0,80030494 <GsPrintFont_Draw+0x3a8>
-800303c4: 00000000 nop
-800303c8: 87c2001c lh v0,28(s8)
-800303cc: 00000000 nop
-800303d0: 00401821 move v1,v0
-800303d4: 8fc20014 lw v0,20(s8)
-800303d8: 00000000 nop
-800303dc: 00621021 addu v0,v1,v0
-800303e0: 0440002c bltz v0,80030494 <GsPrintFont_Draw+0x3a8>
-800303e4: 00000000 nop
- (spr.y < GsCurDrawEnvH && (spr.y+fh)>=0))
-800303e8: 87c2001e lh v0,30(s8)
-800303ec: 00000000 nop
-800303f0: 00401821 move v1,v0
-800303f4: 3c028007 lui v0,0x8007
-800303f8: 94421d58 lhu v0,7512(v0)
-800303fc: 00000000 nop
- if(*string >= ' ' && *string <= '~')
- {
- spr.u = ((fb_font_x & 0x3f)*4)+((*string & 7) << 3);
- spr.v = (fb_font_y & 0xff)+(*string & 0xf8);
-
- if((spr.x < GsCurDrawEnvW && (spr.x+fw)>=0) &&
-80030400: 0062102a slt v0,v1,v0
-80030404: 10400023 beqz v0,80030494 <GsPrintFont_Draw+0x3a8>
-80030408: 00000000 nop
- (spr.y < GsCurDrawEnvH && (spr.y+fh)>=0))
-8003040c: 87c2001e lh v0,30(s8)
-80030410: 00000000 nop
-80030414: 00401821 move v1,v0
-80030418: 8fc20018 lw v0,24(s8)
-8003041c: 00000000 nop
-80030420: 00621021 addu v0,v1,v0
-80030424: 0440001b bltz v0,80030494 <GsPrintFont_Draw+0x3a8>
-80030428: 00000000 nop
- {
-
- if((scalex == 0 || scalex == 1) && (scaley == 0 || scaley == 1))
-8003042c: 8fc20058 lw v0,88(s8)
-80030430: 00000000 nop
-80030434: 10400005 beqz v0,8003044c <GsPrintFont_Draw+0x360>
-80030438: 00000000 nop
-8003043c: 8fc30058 lw v1,88(s8)
-80030440: 24020001 li v0,1
-80030444: 1462000f bne v1,v0,80030484 <GsPrintFont_Draw+0x398>
-80030448: 00000000 nop
-8003044c: 8fc2005c lw v0,92(s8)
-80030450: 00000000 nop
-80030454: 10400005 beqz v0,8003046c <GsPrintFont_Draw+0x380>
-80030458: 00000000 nop
-8003045c: 8fc3005c lw v1,92(s8)
-80030460: 24020001 li v0,1
-80030464: 14620007 bne v1,v0,80030484 <GsPrintFont_Draw+0x398>
-80030468: 00000000 nop
- GsSortSimpleSprite(&spr);
-8003046c: 27c2001c addiu v0,s8,28
-80030470: 00402021 move a0,v0
-80030474: 0c00b69c jal 8002da70 <GsSortSimpleSprite>
-80030478: 00000000 nop
-8003047c: 10000005 b 80030494 <GsPrintFont_Draw+0x3a8>
-80030480: 00000000 nop
- else
- GsSortSprite(&spr);
-80030484: 27c2001c addiu v0,s8,28
-80030488: 00402021 move a0,v0
-8003048c: 0c00b356 jal 8002cd58 <GsSortSprite>
-80030490: 00000000 nop
- }
-
- spr.x += fw;
-80030494: 87c2001c lh v0,28(s8)
-80030498: 00000000 nop
-8003049c: 3043ffff andi v1,v0,0xffff
-800304a0: 8fc20014 lw v0,20(s8)
-800304a4: 00000000 nop
-800304a8: 3042ffff andi v0,v0,0xffff
-800304ac: 00621021 addu v0,v1,v0
-800304b0: 3042ffff andi v0,v0,0xffff
-800304b4: 00021400 sll v0,v0,0x10
-800304b8: 00021403 sra v0,v0,0x10
-800304bc: a7c2001c sh v0,28(s8)
- }
-
- if(*string == '\r')
-800304c0: 8fc20010 lw v0,16(s8)
-800304c4: 00000000 nop
-800304c8: 80430000 lb v1,0(v0)
-800304cc: 2402000d li v0,13
-800304d0: 14620002 bne v1,v0,800304dc <GsPrintFont_Draw+0x3f0>
-800304d4: 00000000 nop
- spr.x = 0;
-800304d8: a7c0001c sh zero,28(s8)
-
- if(*string == '\n')
-800304dc: 8fc20010 lw v0,16(s8)
-800304e0: 00000000 nop
-800304e4: 80430000 lb v1,0(v0)
-800304e8: 2402000a li v0,10
-800304ec: 1462001a bne v1,v0,80030558 <GsPrintFont_Draw+0x46c>
-800304f0: 00000000 nop
- {
- spr.x = (prfont_flags & PRFONT_UNIXLF)? 0 : x;
-800304f4: 3c028007 lui v0,0x8007
-800304f8: 8c421cdc lw v0,7388(v0)
-800304fc: 00000000 nop
-80030500: 30420010 andi v0,v0,0x10
-80030504: 14400007 bnez v0,80030524 <GsPrintFont_Draw+0x438>
-80030508: 00000000 nop
-8003050c: 8fc20050 lw v0,80(s8)
-80030510: 00000000 nop
-80030514: 00021400 sll v0,v0,0x10
-80030518: 00021403 sra v0,v0,0x10
-8003051c: 10000002 b 80030528 <GsPrintFont_Draw+0x43c>
-80030520: 00000000 nop
-80030524: 00001021 move v0,zero
-80030528: a7c2001c sh v0,28(s8)
- spr.y += fh;
-8003052c: 87c2001e lh v0,30(s8)
-80030530: 00000000 nop
-80030534: 3043ffff andi v1,v0,0xffff
-80030538: 8fc20018 lw v0,24(s8)
-8003053c: 00000000 nop
-80030540: 3042ffff andi v0,v0,0xffff
-80030544: 00621021 addu v0,v1,v0
-80030548: 3042ffff andi v0,v0,0xffff
-8003054c: 00021400 sll v0,v0,0x10
-80030550: 00021403 sra v0,v0,0x10
-80030554: a7c2001e sh v0,30(s8)
- }
-
- if(*string == '\t')
-80030558: 8fc20010 lw v0,16(s8)
-8003055c: 00000000 nop
-80030560: 80430000 lb v1,0(v0)
-80030564: 24020009 li v0,9
-80030568: 1462000e bne v1,v0,800305a4 <GsPrintFont_Draw+0x4b8>
-8003056c: 00000000 nop
- spr.x += fw * 8;
-80030570: 87c2001c lh v0,28(s8)
-80030574: 00000000 nop
-80030578: 3043ffff andi v1,v0,0xffff
-8003057c: 8fc20014 lw v0,20(s8)
-80030580: 00000000 nop
-80030584: 3042ffff andi v0,v0,0xffff
-80030588: 000210c0 sll v0,v0,0x3
-8003058c: 3042ffff andi v0,v0,0xffff
-80030590: 00621021 addu v0,v1,v0
-80030594: 3042ffff andi v0,v0,0xffff
-80030598: 00021400 sll v0,v0,0x10
-8003059c: 00021403 sra v0,v0,0x10
-800305a0: a7c2001c sh v0,28(s8)
-
- string++;
-800305a4: 8fc20010 lw v0,16(s8)
-800305a8: 00000000 nop
-800305ac: 24420001 addiu v0,v0,1
-800305b0: afc20010 sw v0,16(s8)
- spr.scalex = scalex;
- spr.scaley = scaley;
-
- string = gpu_stringbuf;
-
- while(*string)
-800305b4: 8fc20010 lw v0,16(s8)
-800305b8: 00000000 nop
-800305bc: 80420000 lb v0,0(v0)
-800305c0: 00000000 nop
-800305c4: 1440ff22 bnez v0,80030250 <GsPrintFont_Draw+0x164>
-800305c8: 00000000 nop
- spr.x += fw * 8;
-
- string++;
- }
-
- return (spr.y << 16) | spr.x;
-800305cc: 87c2001e lh v0,30(s8)
-800305d0: 00000000 nop
-800305d4: 00021400 sll v0,v0,0x10
-800305d8: 87c3001c lh v1,28(s8)
-800305dc: 00000000 nop
-800305e0: 00431025 or v0,v0,v1
-}
-800305e4: 03c0e821 move sp,s8
-800305e8: 8fbf004c lw ra,76(sp)
-800305ec: 8fbe0048 lw s8,72(sp)
-800305f0: 27bd0050 addiu sp,sp,80
-800305f4: 03e00008 jr ra
-800305f8: 00000000 nop
-
-800305fc <GsVPrintFont>:
-
-unsigned int GsVPrintFont(int x, int y, const char *fmt, va_list ap)
-{
-800305fc: 27bdffe0 addiu sp,sp,-32
-80030600: afbf001c sw ra,28(sp)
-80030604: afbe0018 sw s8,24(sp)
-80030608: 03a0f021 move s8,sp
-8003060c: afc40020 sw a0,32(s8)
-80030610: afc50024 sw a1,36(s8)
-80030614: afc60028 sw a2,40(s8)
-80030618: afc7002c sw a3,44(s8)
- int r;
- //GsSprite spr;
- //char *string;
- int fw = gs_calculate_scaled_size(8, prfont_scale_x);
-8003061c: 3c028007 lui v0,0x8007
-80030620: 8c421ce0 lw v0,7392(v0)
-80030624: 00000000 nop
-80030628: 00402821 move a1,v0
-8003062c: 24040008 li a0,8
-80030630: 0c00ae07 jal 8002b81c <gs_calculate_scaled_size>
-80030634: 00000000 nop
-80030638: afc20014 sw v0,20(s8)
-
- r = vsnprintf(gpu_stringbuf, 512, fmt, ap);
-8003063c: 8fc7002c lw a3,44(s8)
-80030640: 8fc60028 lw a2,40(s8)
-80030644: 24050200 li a1,512
-80030648: 3c028007 lui v0,0x8007
-8003064c: 24448960 addiu a0,v0,-30368
-80030650: 0c00ec5d jal 8003b174 <vsnprintf>
-80030654: 00000000 nop
-80030658: afc20010 sw v0,16(s8)
-
- if(prfont_flags & PRFONT_WRAP)
-8003065c: 3c028007 lui v0,0x8007
-80030660: 8c421cdc lw v0,7388(v0)
-80030664: 00000000 nop
-80030668: 30420001 andi v0,v0,0x1
-8003066c: 1040000f beqz v0,800306ac <GsVPrintFont+0xb0>
-80030670: 00000000 nop
- r = GsPrintFont_Draw(x, y, prfont_scale_x, prfont_scale_y);
-80030674: 3c028007 lui v0,0x8007
-80030678: 8c431ce0 lw v1,7392(v0)
-8003067c: 3c028007 lui v0,0x8007
-80030680: 8c421ce4 lw v0,7396(v0)
-80030684: 00000000 nop
-80030688: 00403821 move a3,v0
-8003068c: 00603021 move a2,v1
-80030690: 8fc50024 lw a1,36(s8)
-80030694: 8fc40020 lw a0,32(s8)
-80030698: 0c00c03b jal 800300ec <GsPrintFont_Draw>
-8003069c: 00000000 nop
-800306a0: afc20010 sw v0,16(s8)
-800306a4: 10000048 b 800307c8 <GsVPrintFont+0x1cc>
-800306a8: 00000000 nop
- else if(prfont_flags & PRFONT_CENTER)
-800306ac: 3c028007 lui v0,0x8007
-800306b0: 8c421cdc lw v0,7388(v0)
-800306b4: 00000000 nop
-800306b8: 30420002 andi v0,v0,0x2
-800306bc: 1040001b beqz v0,8003072c <GsVPrintFont+0x130>
-800306c0: 00000000 nop
- r = GsPrintFont_Draw(x - ((r * fw)/2), y, prfont_scale_x, prfont_scale_y);
-800306c4: 8fc30010 lw v1,16(s8)
-800306c8: 8fc20014 lw v0,20(s8)
-800306cc: 00000000 nop
-800306d0: 00620018 mult v1,v0
-800306d4: 00001012 mflo v0
-800306d8: 00021fc2 srl v1,v0,0x1f
-800306dc: 00621021 addu v0,v1,v0
-800306e0: 00021043 sra v0,v0,0x1
-800306e4: 00401821 move v1,v0
-800306e8: 8fc20020 lw v0,32(s8)
-800306ec: 00000000 nop
-800306f0: 00431823 subu v1,v0,v1
-800306f4: 3c028007 lui v0,0x8007
-800306f8: 8c441ce0 lw a0,7392(v0)
-800306fc: 3c028007 lui v0,0x8007
-80030700: 8c421ce4 lw v0,7396(v0)
-80030704: 00000000 nop
-80030708: 00403821 move a3,v0
-8003070c: 00803021 move a2,a0
-80030710: 8fc50024 lw a1,36(s8)
-80030714: 00602021 move a0,v1
-80030718: 0c00c03b jal 800300ec <GsPrintFont_Draw>
-8003071c: 00000000 nop
-80030720: afc20010 sw v0,16(s8)
-80030724: 10000028 b 800307c8 <GsVPrintFont+0x1cc>
-80030728: 00000000 nop
- else if(prfont_flags & PRFONT_RIGHT)
-8003072c: 3c028007 lui v0,0x8007
-80030730: 8c421cdc lw v0,7388(v0)
-80030734: 00000000 nop
-80030738: 30420004 andi v0,v0,0x4
-8003073c: 10400016 beqz v0,80030798 <GsVPrintFont+0x19c>
-80030740: 00000000 nop
- r = GsPrintFont_Draw(x - (r * fw), y, prfont_scale_x, prfont_scale_y);
-80030744: 8fc30010 lw v1,16(s8)
-80030748: 8fc20014 lw v0,20(s8)
-8003074c: 00000000 nop
-80030750: 00620018 mult v1,v0
-80030754: 8fc20020 lw v0,32(s8)
-80030758: 00001812 mflo v1
-8003075c: 00431823 subu v1,v0,v1
-80030760: 3c028007 lui v0,0x8007
-80030764: 8c441ce0 lw a0,7392(v0)
-80030768: 3c028007 lui v0,0x8007
-8003076c: 8c421ce4 lw v0,7396(v0)
-80030770: 00000000 nop
-80030774: 00403821 move a3,v0
-80030778: 00803021 move a2,a0
-8003077c: 8fc50024 lw a1,36(s8)
-80030780: 00602021 move a0,v1
-80030784: 0c00c03b jal 800300ec <GsPrintFont_Draw>
-80030788: 00000000 nop
-8003078c: afc20010 sw v0,16(s8)
-80030790: 1000000d b 800307c8 <GsVPrintFont+0x1cc>
-80030794: 00000000 nop
- else
- r = GsPrintFont_Draw(x, y, prfont_scale_x, prfont_scale_y);
-80030798: 3c028007 lui v0,0x8007
-8003079c: 8c431ce0 lw v1,7392(v0)
-800307a0: 3c028007 lui v0,0x8007
-800307a4: 8c421ce4 lw v0,7396(v0)
-800307a8: 00000000 nop
-800307ac: 00403821 move a3,v0
-800307b0: 00603021 move a2,v1
-800307b4: 8fc50024 lw a1,36(s8)
-800307b8: 8fc40020 lw a0,32(s8)
-800307bc: 0c00c03b jal 800300ec <GsPrintFont_Draw>
-800307c0: 00000000 nop
-800307c4: afc20010 sw v0,16(s8)
-
- return r;
-800307c8: 8fc20010 lw v0,16(s8)
-}
-800307cc: 03c0e821 move sp,s8
-800307d0: 8fbf001c lw ra,28(sp)
-800307d4: 8fbe0018 lw s8,24(sp)
-800307d8: 27bd0020 addiu sp,sp,32
-800307dc: 03e00008 jr ra
-800307e0: 00000000 nop
-
-800307e4 <GsPrintFont>:
-
-unsigned int GsPrintFont(int x, int y, const char *fmt, ...)
-{
-800307e4: 27bdffe0 addiu sp,sp,-32
-800307e8: afbf001c sw ra,28(sp)
-800307ec: afbe0018 sw s8,24(sp)
-800307f0: 03a0f021 move s8,sp
-800307f4: afc40020 sw a0,32(s8)
-800307f8: afc50024 sw a1,36(s8)
-800307fc: afc60028 sw a2,40(s8)
-80030800: afc7002c sw a3,44(s8)
- int r;
-
- va_list ap;
-
- va_start(ap, fmt);
-80030804: 27c2002c addiu v0,s8,44
-80030808: afc20014 sw v0,20(s8)
-
- r = GsVPrintFont(x, y, fmt, ap);
-8003080c: 8fc20014 lw v0,20(s8)
-80030810: 00000000 nop
-80030814: 00403821 move a3,v0
-80030818: 8fc60028 lw a2,40(s8)
-8003081c: 8fc50024 lw a1,36(s8)
-80030820: 8fc40020 lw a0,32(s8)
-80030824: 0c00c17f jal 800305fc <GsVPrintFont>
-80030828: 00000000 nop
-8003082c: afc20010 sw v0,16(s8)
-
- va_end(ap);
-
- return r;
-80030830: 8fc20010 lw v0,16(s8)
-}
-80030834: 03c0e821 move sp,s8
-80030838: 8fbf001c lw ra,28(sp)
-8003083c: 8fbe0018 lw s8,24(sp)
-80030840: 27bd0020 addiu sp,sp,32
-80030844: 03e00008 jr ra
-80030848: 00000000 nop
-
-8003084c <GsSetFont>:
-
-void GsSetFont(int fb_x, int fb_y, int cx, int cy)
-{
-8003084c: 27bdfff8 addiu sp,sp,-8
-80030850: afbe0004 sw s8,4(sp)
-80030854: 03a0f021 move s8,sp
-80030858: afc40008 sw a0,8(s8)
-8003085c: afc5000c sw a1,12(s8)
-80030860: afc60010 sw a2,16(s8)
-80030864: afc70014 sw a3,20(s8)
- if(fb_x != -1)
-80030868: 8fc30008 lw v1,8(s8)
-8003086c: 2402ffff li v0,-1
-80030870: 10620005 beq v1,v0,80030888 <GsSetFont+0x3c>
-80030874: 00000000 nop
- fb_font_x = fb_x;
-80030878: 3c028007 lui v0,0x8007
-8003087c: 8fc30008 lw v1,8(s8)
-80030880: 00000000 nop
-80030884: ac431d4c sw v1,7500(v0)
-
- if(fb_y != -1)
-80030888: 8fc3000c lw v1,12(s8)
-8003088c: 2402ffff li v0,-1
-80030890: 10620005 beq v1,v0,800308a8 <GsSetFont+0x5c>
-80030894: 00000000 nop
- fb_font_y = fb_y;
-80030898: 3c028007 lui v0,0x8007
-8003089c: 8fc3000c lw v1,12(s8)
-800308a0: 00000000 nop
-800308a4: ac431d3c sw v1,7484(v0)
-
- if(fb_font_cx != -1)
-800308a8: 3c028007 lui v0,0x8007
-800308ac: 8c431d54 lw v1,7508(v0)
-800308b0: 2402ffff li v0,-1
-800308b4: 10620005 beq v1,v0,800308cc <GsSetFont+0x80>
-800308b8: 00000000 nop
- fb_font_cx = cx;
-800308bc: 3c028007 lui v0,0x8007
-800308c0: 8fc30010 lw v1,16(s8)
-800308c4: 00000000 nop
-800308c8: ac431d54 sw v1,7508(v0)
-
- if(fb_font_cy != -1)
-800308cc: 3c028007 lui v0,0x8007
-800308d0: 8c431d44 lw v1,7492(v0)
-800308d4: 2402ffff li v0,-1
-800308d8: 10620005 beq v1,v0,800308f0 <GsSetFont+0xa4>
-800308dc: 00000000 nop
- fb_font_cy = cy;
-800308e0: 3c028007 lui v0,0x8007
-800308e4: 8fc30014 lw v1,20(s8)
-800308e8: 00000000 nop
-800308ec: ac431d44 sw v1,7492(v0)
-}
-800308f0: 00000000 nop
-800308f4: 03c0e821 move sp,s8
-800308f8: 8fbe0004 lw s8,4(sp)
-800308fc: 27bd0008 addiu sp,sp,8
-80030900: 03e00008 jr ra
-80030904: 00000000 nop
-
-80030908 <GsSetFontAttrib>:
-
-void GsSetFontAttrib(unsigned int flags)
-{
-80030908: 27bdffe8 addiu sp,sp,-24
-8003090c: afbf0014 sw ra,20(sp)
-80030910: afbe0010 sw s8,16(sp)
-80030914: 03a0f021 move s8,sp
-80030918: afc40018 sw a0,24(s8)
- prfont_flags = flags;
-8003091c: 3c028007 lui v0,0x8007
-80030920: 8fc30018 lw v1,24(s8)
-80030924: 00000000 nop
-80030928: ac431cdc sw v1,7388(v0)
-
- if(prfont_flags == 0)
-8003092c: 3c028007 lui v0,0x8007
-80030930: 8c421cdc lw v0,7388(v0)
-80030934: 00000000 nop
-80030938: 14400010 bnez v0,8003097c <GsSetFontAttrib+0x74>
-8003093c: 00000000 nop
- {
- PRFONT_SCALEX(0);
-80030940: 00002021 move a0,zero
-80030944: 0c00adbe jal 8002b6f8 <PRFONT_SCALEX>
-80030948: 00000000 nop
- PRFONT_SCALEY(0);
-8003094c: 00002021 move a0,zero
-80030950: 0c00adcc jal 8002b730 <PRFONT_SCALEY>
-80030954: 00000000 nop
-
- PRFONT_RL(NORMAL_LUMINANCE);
-80030958: 24040080 li a0,128
-8003095c: 0c00adda jal 8002b768 <PRFONT_RL>
-80030960: 00000000 nop
- PRFONT_GL(NORMAL_LUMINANCE);
-80030964: 24040080 li a0,128
-80030968: 0c00ade9 jal 8002b7a4 <PRFONT_GL>
-8003096c: 00000000 nop
- PRFONT_BL(NORMAL_LUMINANCE);
-80030970: 24040080 li a0,128
-80030974: 0c00adf8 jal 8002b7e0 <PRFONT_BL>
-80030978: 00000000 nop
- }
-}
-8003097c: 00000000 nop
-80030980: 03c0e821 move sp,s8
-80030984: 8fbf0014 lw ra,20(sp)
-80030988: 8fbe0010 lw s8,16(sp)
-8003098c: 27bd0018 addiu sp,sp,24
-80030990: 03e00008 jr ra
-80030994: 00000000 nop
-
-80030998 <gs_internal_cos>:
-
-static double gs_internal_cos(int a)
-{
-80030998: 27bdfff0 addiu sp,sp,-16
-8003099c: afbe000c sw s8,12(sp)
-800309a0: 03a0f021 move s8,sp
-800309a4: afc40010 sw a0,16(s8)
- int a_a = (a>>12)-(((a>>12)/360)*360);
-800309a8: 8fc40010 lw a0,16(s8)
-800309ac: 00000000 nop
-800309b0: 00042b03 sra a1,a0,0xc
-800309b4: 24040168 li a0,360
-800309b8: 14800002 bnez a0,800309c4 <gs_internal_cos+0x2c>
-800309bc: 00a4001a div zero,a1,a0
-800309c0: 0007000d break 0x7
-800309c4: 00002010 mfhi a0
-800309c8: afc40000 sw a0,0(s8)
-
- if(a_a>=0 && a_a<=90)
-800309cc: 8fc40000 lw a0,0(s8)
-800309d0: 00000000 nop
-800309d4: 04800010 bltz a0,80030a18 <gs_internal_cos+0x80>
-800309d8: 00000000 nop
-800309dc: 8fc40000 lw a0,0(s8)
-800309e0: 00000000 nop
-800309e4: 2884005b slti a0,a0,91
-800309e8: 1080000b beqz a0,80030a18 <gs_internal_cos+0x80>
-800309ec: 00000000 nop
- return gs_rot_cos_tbl[a_a];
-800309f0: 3c028004 lui v0,0x8004
-800309f4: 8fc30000 lw v1,0(s8)
-800309f8: 00000000 nop
-800309fc: 000318c0 sll v1,v1,0x3
-80030a00: 2442fa70 addiu v0,v0,-1424
-80030a04: 00621021 addu v0,v1,v0
-80030a08: 8c430004 lw v1,4(v0)
-80030a0c: 8c420000 lw v0,0(v0)
-80030a10: 1000004c b 80030b44 <gs_internal_cos+0x1ac>
-80030a14: 00000000 nop
- else if(a_a>90 && a_a<=180)
-80030a18: 8fc40000 lw a0,0(s8)
-80030a1c: 00000000 nop
-80030a20: 2884005b slti a0,a0,91
-80030a24: 14800016 bnez a0,80030a80 <gs_internal_cos+0xe8>
-80030a28: 00000000 nop
-80030a2c: 8fc40000 lw a0,0(s8)
-80030a30: 00000000 nop
-80030a34: 288400b5 slti a0,a0,181
-80030a38: 10800011 beqz a0,80030a80 <gs_internal_cos+0xe8>
-80030a3c: 00000000 nop
- return -gs_rot_cos_tbl[180 - a_a];
-80030a40: 240500b4 li a1,180
-80030a44: 8fc40000 lw a0,0(s8)
-80030a48: 00000000 nop
-80030a4c: 00a42823 subu a1,a1,a0
-80030a50: 3c048004 lui a0,0x8004
-80030a54: 000528c0 sll a1,a1,0x3
-80030a58: 2484fa70 addiu a0,a0,-1424
-80030a5c: 00a42021 addu a0,a1,a0
-80030a60: 8c850004 lw a1,4(a0)
-80030a64: 8c840000 lw a0,0(a0)
-80030a68: 00000000 nop
-80030a6c: 00801021 move v0,a0
-80030a70: 3c068000 lui a2,0x8000
-80030a74: 00a61826 xor v1,a1,a2
-80030a78: 10000032 b 80030b44 <gs_internal_cos+0x1ac>
-80030a7c: 00000000 nop
- else if(a_a>180 && a_a<=270)
-80030a80: 8fc40000 lw a0,0(s8)
-80030a84: 00000000 nop
-80030a88: 288400b5 slti a0,a0,181
-80030a8c: 14800015 bnez a0,80030ae4 <gs_internal_cos+0x14c>
-80030a90: 00000000 nop
-80030a94: 8fc40000 lw a0,0(s8)
-80030a98: 00000000 nop
-80030a9c: 2884010f slti a0,a0,271
-80030aa0: 10800010 beqz a0,80030ae4 <gs_internal_cos+0x14c>
-80030aa4: 00000000 nop
- return -gs_rot_cos_tbl[a_a - 180];
-80030aa8: 8fc40000 lw a0,0(s8)
-80030aac: 00000000 nop
-80030ab0: 2485ff4c addiu a1,a0,-180
-80030ab4: 3c048004 lui a0,0x8004
-80030ab8: 000528c0 sll a1,a1,0x3
-80030abc: 2484fa70 addiu a0,a0,-1424
-80030ac0: 00a42021 addu a0,a1,a0
-80030ac4: 8c850004 lw a1,4(a0)
-80030ac8: 8c840000 lw a0,0(a0)
-80030acc: 00000000 nop
-80030ad0: 00801021 move v0,a0
-80030ad4: 3c068000 lui a2,0x8000
-80030ad8: 00a61826 xor v1,a1,a2
-80030adc: 10000019 b 80030b44 <gs_internal_cos+0x1ac>
-80030ae0: 00000000 nop
- else if(a_a>270 && a_a<=359)
-80030ae4: 8fc20000 lw v0,0(s8)
-80030ae8: 00000000 nop
-80030aec: 2842010f slti v0,v0,271
-80030af0: 14400012 bnez v0,80030b3c <gs_internal_cos+0x1a4>
-80030af4: 00000000 nop
-80030af8: 8fc20000 lw v0,0(s8)
-80030afc: 00000000 nop
-80030b00: 28420168 slti v0,v0,360
-80030b04: 1040000d beqz v0,80030b3c <gs_internal_cos+0x1a4>
-80030b08: 00000000 nop
- return gs_rot_cos_tbl[360 - a_a];
-80030b0c: 24030168 li v1,360
-80030b10: 8fc20000 lw v0,0(s8)
-80030b14: 00000000 nop
-80030b18: 00621823 subu v1,v1,v0
-80030b1c: 3c028004 lui v0,0x8004
-80030b20: 000318c0 sll v1,v1,0x3
-80030b24: 2442fa70 addiu v0,v0,-1424
-80030b28: 00621021 addu v0,v1,v0
-80030b2c: 8c430004 lw v1,4(v0)
-80030b30: 8c420000 lw v0,0(v0)
-80030b34: 10000003 b 80030b44 <gs_internal_cos+0x1ac>
-80030b38: 00000000 nop
-
- return 0;
-80030b3c: 00001021 move v0,zero
-80030b40: 00001821 move v1,zero
-}
-80030b44: 03c0e821 move sp,s8
-80030b48: 8fbe000c lw s8,12(sp)
-80030b4c: 27bd0010 addiu sp,sp,16
-80030b50: 03e00008 jr ra
-80030b54: 00000000 nop
-
-80030b58 <gs_internal_sin>:
-
-static double gs_internal_sin(int a)
-{
-80030b58: 27bdfff0 addiu sp,sp,-16
-80030b5c: afbe000c sw s8,12(sp)
-80030b60: 03a0f021 move s8,sp
-80030b64: afc40010 sw a0,16(s8)
- int a_a = (a>>12)-(((a>>12)/360)*360);
-80030b68: 8fc40010 lw a0,16(s8)
-80030b6c: 00000000 nop
-80030b70: 00042b03 sra a1,a0,0xc
-80030b74: 24040168 li a0,360
-80030b78: 14800002 bnez a0,80030b84 <gs_internal_sin+0x2c>
-80030b7c: 00a4001a div zero,a1,a0
-80030b80: 0007000d break 0x7
-80030b84: 00002010 mfhi a0
-80030b88: afc40000 sw a0,0(s8)
-
- if(a_a>=0 && a_a<=90)
-80030b8c: 8fc40000 lw a0,0(s8)
-80030b90: 00000000 nop
-80030b94: 04800012 bltz a0,80030be0 <gs_internal_sin+0x88>
-80030b98: 00000000 nop
-80030b9c: 8fc40000 lw a0,0(s8)
-80030ba0: 00000000 nop
-80030ba4: 2884005b slti a0,a0,91
-80030ba8: 1080000d beqz a0,80030be0 <gs_internal_sin+0x88>
-80030bac: 00000000 nop
- return gs_rot_cos_tbl[90-a_a];
-80030bb0: 2403005a li v1,90
-80030bb4: 8fc20000 lw v0,0(s8)
-80030bb8: 00000000 nop
-80030bbc: 00621823 subu v1,v1,v0
-80030bc0: 3c028004 lui v0,0x8004
-80030bc4: 000318c0 sll v1,v1,0x3
-80030bc8: 2442fa70 addiu v0,v0,-1424
-80030bcc: 00621021 addu v0,v1,v0
-80030bd0: 8c430004 lw v1,4(v0)
-80030bd4: 8c420000 lw v0,0(v0)
-80030bd8: 1000004b b 80030d08 <gs_internal_sin+0x1b0>
-80030bdc: 00000000 nop
- else if(a_a>90 && a_a<=180)
-80030be0: 8fc40000 lw a0,0(s8)
-80030be4: 00000000 nop
-80030be8: 2884005b slti a0,a0,91
-80030bec: 14800011 bnez a0,80030c34 <gs_internal_sin+0xdc>
-80030bf0: 00000000 nop
-80030bf4: 8fc40000 lw a0,0(s8)
-80030bf8: 00000000 nop
-80030bfc: 288400b5 slti a0,a0,181
-80030c00: 1080000c beqz a0,80030c34 <gs_internal_sin+0xdc>
-80030c04: 00000000 nop
- return gs_rot_cos_tbl[a_a-90];
-80030c08: 8fc20000 lw v0,0(s8)
-80030c0c: 00000000 nop
-80030c10: 2443ffa6 addiu v1,v0,-90
-80030c14: 3c028004 lui v0,0x8004
-80030c18: 000318c0 sll v1,v1,0x3
-80030c1c: 2442fa70 addiu v0,v0,-1424
-80030c20: 00621021 addu v0,v1,v0
-80030c24: 8c430004 lw v1,4(v0)
-80030c28: 8c420000 lw v0,0(v0)
-80030c2c: 10000036 b 80030d08 <gs_internal_sin+0x1b0>
-80030c30: 00000000 nop
- else if(a_a>180 && a_a<=270)
-80030c34: 8fc40000 lw a0,0(s8)
-80030c38: 00000000 nop
-80030c3c: 288400b5 slti a0,a0,181
-80030c40: 14800016 bnez a0,80030c9c <gs_internal_sin+0x144>
-80030c44: 00000000 nop
-80030c48: 8fc40000 lw a0,0(s8)
-80030c4c: 00000000 nop
-80030c50: 2884010f slti a0,a0,271
-80030c54: 10800011 beqz a0,80030c9c <gs_internal_sin+0x144>
-80030c58: 00000000 nop
- return -gs_rot_cos_tbl[270-a_a];
-80030c5c: 2405010e li a1,270
-80030c60: 8fc40000 lw a0,0(s8)
-80030c64: 00000000 nop
-80030c68: 00a42823 subu a1,a1,a0
-80030c6c: 3c048004 lui a0,0x8004
-80030c70: 000528c0 sll a1,a1,0x3
-80030c74: 2484fa70 addiu a0,a0,-1424
-80030c78: 00a42021 addu a0,a1,a0
-80030c7c: 8c850004 lw a1,4(a0)
-80030c80: 8c840000 lw a0,0(a0)
-80030c84: 00000000 nop
-80030c88: 00801021 move v0,a0
-80030c8c: 3c068000 lui a2,0x8000
-80030c90: 00a61826 xor v1,a1,a2
-80030c94: 1000001c b 80030d08 <gs_internal_sin+0x1b0>
-80030c98: 00000000 nop
- else if(a_a>270 && a_a<=359)
-80030c9c: 8fc40000 lw a0,0(s8)
-80030ca0: 00000000 nop
-80030ca4: 2884010f slti a0,a0,271
-80030ca8: 14800015 bnez a0,80030d00 <gs_internal_sin+0x1a8>
-80030cac: 00000000 nop
-80030cb0: 8fc40000 lw a0,0(s8)
-80030cb4: 00000000 nop
-80030cb8: 28840168 slti a0,a0,360
-80030cbc: 10800010 beqz a0,80030d00 <gs_internal_sin+0x1a8>
-80030cc0: 00000000 nop
- return -gs_rot_cos_tbl[a_a-270];
-80030cc4: 8fc40000 lw a0,0(s8)
-80030cc8: 00000000 nop
-80030ccc: 2485fef2 addiu a1,a0,-270
-80030cd0: 3c048004 lui a0,0x8004
-80030cd4: 000528c0 sll a1,a1,0x3
-80030cd8: 2484fa70 addiu a0,a0,-1424
-80030cdc: 00a42021 addu a0,a1,a0
-80030ce0: 8c850004 lw a1,4(a0)
-80030ce4: 8c840000 lw a0,0(a0)
-80030ce8: 00000000 nop
-80030cec: 00801021 move v0,a0
-80030cf0: 3c068000 lui a2,0x8000
-80030cf4: 00a61826 xor v1,a1,a2
-80030cf8: 10000003 b 80030d08 <gs_internal_sin+0x1b0>
-80030cfc: 00000000 nop
-
- return 0;
-80030d00: 00001021 move v0,zero
-80030d04: 00001821 move v1,zero
-}
-80030d08: 03c0e821 move sp,s8
-80030d0c: 8fbe000c lw s8,12(sp)
-80030d10: 27bd0010 addiu sp,sp,16
-80030d14: 03e00008 jr ra
-80030d18: 00000000 nop
-
-80030d1c <gs_internal_vector_rotate>:
-
-static void gs_internal_vector_rotate(int x_a, int y_a, int z_a, double *v, double *n)
-{
-80030d1c: 27bdff30 addiu sp,sp,-208
-80030d20: afbf00cc sw ra,204(sp)
-80030d24: afbe00c8 sw s8,200(sp)
-80030d28: afb700c4 sw s7,196(sp)
-80030d2c: afb600c0 sw s6,192(sp)
-80030d30: afb500bc sw s5,188(sp)
-80030d34: afb400b8 sw s4,184(sp)
-80030d38: afb300b4 sw s3,180(sp)
-80030d3c: afb200b0 sw s2,176(sp)
-80030d40: afb100ac sw s1,172(sp)
-80030d44: afb000a8 sw s0,168(sp)
-80030d48: 03a0f021 move s8,sp
-80030d4c: afc400d0 sw a0,208(s8)
-80030d50: afc500d4 sw a1,212(s8)
-80030d54: afc600d8 sw a2,216(s8)
-80030d58: afc700dc sw a3,220(s8)
- double axis_m[3][3];
- double b[3];
- double k[3], s[3];
- int x;
-
- k[0] = gs_internal_cos(x_a);
-80030d5c: 8fc400d0 lw a0,208(s8)
-80030d60: 0c00c266 jal 80030998 <gs_internal_cos>
-80030d64: 00000000 nop
-80030d68: afc20078 sw v0,120(s8)
-80030d6c: afc3007c sw v1,124(s8)
- k[1] = gs_internal_cos(y_a);
-80030d70: 8fc400d4 lw a0,212(s8)
-80030d74: 0c00c266 jal 80030998 <gs_internal_cos>
-80030d78: 00000000 nop
-80030d7c: afc20080 sw v0,128(s8)
-80030d80: afc30084 sw v1,132(s8)
- k[2] = gs_internal_cos(z_a);
-80030d84: 8fc400d8 lw a0,216(s8)
-80030d88: 0c00c266 jal 80030998 <gs_internal_cos>
-80030d8c: 00000000 nop
-80030d90: afc20088 sw v0,136(s8)
-80030d94: afc3008c sw v1,140(s8)
-
- s[0] = gs_internal_sin(x_a);
-80030d98: 8fc400d0 lw a0,208(s8)
-80030d9c: 0c00c2d6 jal 80030b58 <gs_internal_sin>
-80030da0: 00000000 nop
-80030da4: afc20090 sw v0,144(s8)
-80030da8: afc30094 sw v1,148(s8)
- s[1] = gs_internal_sin(y_a);
-80030dac: 8fc400d4 lw a0,212(s8)
-80030db0: 0c00c2d6 jal 80030b58 <gs_internal_sin>
-80030db4: 00000000 nop
-80030db8: afc20098 sw v0,152(s8)
-80030dbc: afc3009c sw v1,156(s8)
- s[2] = gs_internal_sin(z_a);
-80030dc0: 8fc400d8 lw a0,216(s8)
-80030dc4: 0c00c2d6 jal 80030b58 <gs_internal_sin>
-80030dc8: 00000000 nop
-80030dcc: afc200a0 sw v0,160(s8)
-80030dd0: afc300a4 sw v1,164(s8)
-
- axis_m[0][0] = k[1] * k[2];
-80030dd4: 8fc20080 lw v0,128(s8)
-80030dd8: 8fc30084 lw v1,132(s8)
-80030ddc: 8fc40088 lw a0,136(s8)
-80030de0: 8fc5008c lw a1,140(s8)
-80030de4: 00803021 move a2,a0
-80030de8: 00a03821 move a3,a1
-80030dec: 00402021 move a0,v0
-80030df0: 00602821 move a1,v1
-80030df4: 0c00f853 jal 8003e14c <__muldf3>
-80030df8: 00000000 nop
-80030dfc: afc20018 sw v0,24(s8)
-80030e00: afc3001c sw v1,28(s8)
- axis_m[0][1] = (k[0] * s[2]) + (s[0]*s[1]*k[2]);
-80030e04: 8fc20078 lw v0,120(s8)
-80030e08: 8fc3007c lw v1,124(s8)
-80030e0c: 8fc400a0 lw a0,160(s8)
-80030e10: 8fc500a4 lw a1,164(s8)
-80030e14: 00803021 move a2,a0
-80030e18: 00a03821 move a3,a1
-80030e1c: 00402021 move a0,v0
-80030e20: 00602821 move a1,v1
-80030e24: 0c00f853 jal 8003e14c <__muldf3>
-80030e28: 00000000 nop
-80030e2c: 0040b021 move s6,v0
-80030e30: 0060b821 move s7,v1
-80030e34: 8fc20090 lw v0,144(s8)
-80030e38: 8fc30094 lw v1,148(s8)
-80030e3c: 8fc40098 lw a0,152(s8)
-80030e40: 8fc5009c lw a1,156(s8)
-80030e44: 00803021 move a2,a0
-80030e48: 00a03821 move a3,a1
-80030e4c: 00402021 move a0,v0
-80030e50: 00602821 move a1,v1
-80030e54: 0c00f853 jal 8003e14c <__muldf3>
-80030e58: 00000000 nop
-80030e5c: 00402021 move a0,v0
-80030e60: 00602821 move a1,v1
-80030e64: 8fc20088 lw v0,136(s8)
-80030e68: 8fc3008c lw v1,140(s8)
-80030e6c: 00403021 move a2,v0
-80030e70: 00603821 move a3,v1
-80030e74: 0c00f853 jal 8003e14c <__muldf3>
-80030e78: 00000000 nop
-80030e7c: 00403021 move a2,v0
-80030e80: 00603821 move a3,v1
-80030e84: 02c02021 move a0,s6
-80030e88: 02e02821 move a1,s7
-80030e8c: 0c00f3d7 jal 8003cf5c <__adddf3>
-80030e90: 00000000 nop
-80030e94: afc20020 sw v0,32(s8)
-80030e98: afc30024 sw v1,36(s8)
- axis_m[0][2] = (s[0]*s[2]) - (k[0]*s[1]*k[2]);
-80030e9c: 8fc20090 lw v0,144(s8)
-80030ea0: 8fc30094 lw v1,148(s8)
-80030ea4: 8fc400a0 lw a0,160(s8)
-80030ea8: 8fc500a4 lw a1,164(s8)
-80030eac: 00803021 move a2,a0
-80030eb0: 00a03821 move a3,a1
-80030eb4: 00402021 move a0,v0
-80030eb8: 00602821 move a1,v1
-80030ebc: 0c00f853 jal 8003e14c <__muldf3>
-80030ec0: 00000000 nop
-80030ec4: 0040b021 move s6,v0
-80030ec8: 0060b821 move s7,v1
-80030ecc: 8fc20078 lw v0,120(s8)
-80030ed0: 8fc3007c lw v1,124(s8)
-80030ed4: 8fc40098 lw a0,152(s8)
-80030ed8: 8fc5009c lw a1,156(s8)
-80030edc: 00803021 move a2,a0
-80030ee0: 00a03821 move a3,a1
-80030ee4: 00402021 move a0,v0
-80030ee8: 00602821 move a1,v1
-80030eec: 0c00f853 jal 8003e14c <__muldf3>
-80030ef0: 00000000 nop
-80030ef4: 00402021 move a0,v0
-80030ef8: 00602821 move a1,v1
-80030efc: 8fc20088 lw v0,136(s8)
-80030f00: 8fc3008c lw v1,140(s8)
-80030f04: 00403021 move a2,v0
-80030f08: 00603821 move a3,v1
-80030f0c: 0c00f853 jal 8003e14c <__muldf3>
-80030f10: 00000000 nop
-80030f14: 00403021 move a2,v0
-80030f18: 00603821 move a3,v1
-80030f1c: 02c02021 move a0,s6
-80030f20: 02e02821 move a1,s7
-80030f24: 0c00f9d7 jal 8003e75c <__subdf3>
-80030f28: 00000000 nop
-80030f2c: afc20028 sw v0,40(s8)
-80030f30: afc3002c sw v1,44(s8)
- axis_m[1][0] = -(k[1] * s[2]);
-80030f34: 8fc20080 lw v0,128(s8)
-80030f38: 8fc30084 lw v1,132(s8)
-80030f3c: 8fc400a0 lw a0,160(s8)
-80030f40: 8fc500a4 lw a1,164(s8)
-80030f44: 00803021 move a2,a0
-80030f48: 00a03821 move a3,a1
-80030f4c: 00402021 move a0,v0
-80030f50: 00602821 move a1,v1
-80030f54: 0c00f853 jal 8003e14c <__muldf3>
-80030f58: 00000000 nop
-80030f5c: 0040a021 move s4,v0
-80030f60: 3c048000 lui a0,0x8000
-80030f64: 0064a826 xor s5,v1,a0
-80030f68: afd40030 sw s4,48(s8)
-80030f6c: afd50034 sw s5,52(s8)
- axis_m[1][1] = (k[0]*k[2]) - (s[0]*s[1]*s[2]);
-80030f70: 8fc20078 lw v0,120(s8)
-80030f74: 8fc3007c lw v1,124(s8)
-80030f78: 8fc40088 lw a0,136(s8)
-80030f7c: 8fc5008c lw a1,140(s8)
-80030f80: 00803021 move a2,a0
-80030f84: 00a03821 move a3,a1
-80030f88: 00402021 move a0,v0
-80030f8c: 00602821 move a1,v1
-80030f90: 0c00f853 jal 8003e14c <__muldf3>
-80030f94: 00000000 nop
-80030f98: 0040a021 move s4,v0
-80030f9c: 0060a821 move s5,v1
-80030fa0: 8fc20090 lw v0,144(s8)
-80030fa4: 8fc30094 lw v1,148(s8)
-80030fa8: 8fc40098 lw a0,152(s8)
-80030fac: 8fc5009c lw a1,156(s8)
-80030fb0: 00803021 move a2,a0
-80030fb4: 00a03821 move a3,a1
-80030fb8: 00402021 move a0,v0
-80030fbc: 00602821 move a1,v1
-80030fc0: 0c00f853 jal 8003e14c <__muldf3>
-80030fc4: 00000000 nop
-80030fc8: 00402021 move a0,v0
-80030fcc: 00602821 move a1,v1
-80030fd0: 8fc200a0 lw v0,160(s8)
-80030fd4: 8fc300a4 lw v1,164(s8)
-80030fd8: 00403021 move a2,v0
-80030fdc: 00603821 move a3,v1
-80030fe0: 0c00f853 jal 8003e14c <__muldf3>
-80030fe4: 00000000 nop
-80030fe8: 00403021 move a2,v0
-80030fec: 00603821 move a3,v1
-80030ff0: 02802021 move a0,s4
-80030ff4: 02a02821 move a1,s5
-80030ff8: 0c00f9d7 jal 8003e75c <__subdf3>
-80030ffc: 00000000 nop
-80031000: afc20038 sw v0,56(s8)
-80031004: afc3003c sw v1,60(s8)
- axis_m[1][2] = (s[0]*k[2]) + (k[0]*s[1]*s[2]);
-80031008: 8fc20090 lw v0,144(s8)
-8003100c: 8fc30094 lw v1,148(s8)
-80031010: 8fc40088 lw a0,136(s8)
-80031014: 8fc5008c lw a1,140(s8)
-80031018: 00803021 move a2,a0
-8003101c: 00a03821 move a3,a1
-80031020: 00402021 move a0,v0
-80031024: 00602821 move a1,v1
-80031028: 0c00f853 jal 8003e14c <__muldf3>
-8003102c: 00000000 nop
-80031030: 0040a021 move s4,v0
-80031034: 0060a821 move s5,v1
-80031038: 8fc20078 lw v0,120(s8)
-8003103c: 8fc3007c lw v1,124(s8)
-80031040: 8fc40098 lw a0,152(s8)
-80031044: 8fc5009c lw a1,156(s8)
-80031048: 00803021 move a2,a0
-8003104c: 00a03821 move a3,a1
-80031050: 00402021 move a0,v0
-80031054: 00602821 move a1,v1
-80031058: 0c00f853 jal 8003e14c <__muldf3>
-8003105c: 00000000 nop
-80031060: 00402021 move a0,v0
-80031064: 00602821 move a1,v1
-80031068: 8fc200a0 lw v0,160(s8)
-8003106c: 8fc300a4 lw v1,164(s8)
-80031070: 00403021 move a2,v0
-80031074: 00603821 move a3,v1
-80031078: 0c00f853 jal 8003e14c <__muldf3>
-8003107c: 00000000 nop
-80031080: 00403021 move a2,v0
-80031084: 00603821 move a3,v1
-80031088: 02802021 move a0,s4
-8003108c: 02a02821 move a1,s5
-80031090: 0c00f3d7 jal 8003cf5c <__adddf3>
-80031094: 00000000 nop
-80031098: afc20040 sw v0,64(s8)
-8003109c: afc30044 sw v1,68(s8)
- axis_m[2][0] = s[1];
-800310a0: 8fc20098 lw v0,152(s8)
-800310a4: 8fc3009c lw v1,156(s8)
-800310a8: afc20048 sw v0,72(s8)
-800310ac: afc3004c sw v1,76(s8)
- axis_m[2][1] = -(s[0]*k[1]);
-800310b0: 8fc20090 lw v0,144(s8)
-800310b4: 8fc30094 lw v1,148(s8)
-800310b8: 8fc40080 lw a0,128(s8)
-800310bc: 8fc50084 lw a1,132(s8)
-800310c0: 00803021 move a2,a0
-800310c4: 00a03821 move a3,a1
-800310c8: 00402021 move a0,v0
-800310cc: 00602821 move a1,v1
-800310d0: 0c00f853 jal 8003e14c <__muldf3>
-800310d4: 00000000 nop
-800310d8: 00409021 move s2,v0
-800310dc: 3c048000 lui a0,0x8000
-800310e0: 00649826 xor s3,v1,a0
-800310e4: afd20050 sw s2,80(s8)
-800310e8: afd30054 sw s3,84(s8)
- axis_m[2][2] = k[0]*k[1];
-800310ec: 8fc20078 lw v0,120(s8)
-800310f0: 8fc3007c lw v1,124(s8)
-800310f4: 8fc40080 lw a0,128(s8)
-800310f8: 8fc50084 lw a1,132(s8)
-800310fc: 00803021 move a2,a0
-80031100: 00a03821 move a3,a1
-80031104: 00402021 move a0,v0
-80031108: 00602821 move a1,v1
-8003110c: 0c00f853 jal 8003e14c <__muldf3>
-80031110: 00000000 nop
-80031114: afc20058 sw v0,88(s8)
-80031118: afc3005c sw v1,92(s8)
-
- for(x=0;x<3;x++)
-8003111c: afc00010 sw zero,16(s8)
-80031120: 1000005c b 80031294 <gs_internal_vector_rotate+0x578>
-80031124: 00000000 nop
- b[x] = (axis_m[x][0] * v[0]) + (axis_m[x][1] * v[1]) + (axis_m[x][2] * v[2]);
-80031128: 8fc20010 lw v0,16(s8)
-8003112c: 00000000 nop
-80031130: 000210c0 sll v0,v0,0x3
-80031134: 00021880 sll v1,v0,0x2
-80031138: 00621023 subu v0,v1,v0
-8003113c: 27c30010 addiu v1,s8,16
-80031140: 00621021 addu v0,v1,v0
-80031144: 8c43000c lw v1,12(v0)
-80031148: 8c420008 lw v0,8(v0)
-8003114c: 8fc400dc lw a0,220(s8)
-80031150: 00000000 nop
-80031154: 8c850004 lw a1,4(a0)
-80031158: 8c840000 lw a0,0(a0)
-8003115c: 00000000 nop
-80031160: 00803021 move a2,a0
-80031164: 00a03821 move a3,a1
-80031168: 00402021 move a0,v0
-8003116c: 00602821 move a1,v1
-80031170: 0c00f853 jal 8003e14c <__muldf3>
-80031174: 00000000 nop
-80031178: 00409021 move s2,v0
-8003117c: 00609821 move s3,v1
-80031180: 8fc20010 lw v0,16(s8)
-80031184: 00000000 nop
-80031188: 000210c0 sll v0,v0,0x3
-8003118c: 00021880 sll v1,v0,0x2
-80031190: 00621023 subu v0,v1,v0
-80031194: 27c30010 addiu v1,s8,16
-80031198: 00621021 addu v0,v1,v0
-8003119c: 8c430014 lw v1,20(v0)
-800311a0: 8c420010 lw v0,16(v0)
-800311a4: 8fc400dc lw a0,220(s8)
-800311a8: 00000000 nop
-800311ac: 24840008 addiu a0,a0,8
-800311b0: 8c850004 lw a1,4(a0)
-800311b4: 8c840000 lw a0,0(a0)
-800311b8: 00000000 nop
-800311bc: 00803021 move a2,a0
-800311c0: 00a03821 move a3,a1
-800311c4: 00402021 move a0,v0
-800311c8: 00602821 move a1,v1
-800311cc: 0c00f853 jal 8003e14c <__muldf3>
-800311d0: 00000000 nop
-800311d4: 00403021 move a2,v0
-800311d8: 00603821 move a3,v1
-800311dc: 02402021 move a0,s2
-800311e0: 02602821 move a1,s3
-800311e4: 0c00f3d7 jal 8003cf5c <__adddf3>
-800311e8: 00000000 nop
-800311ec: 00409021 move s2,v0
-800311f0: 00609821 move s3,v1
-800311f4: 8fc20010 lw v0,16(s8)
-800311f8: 00000000 nop
-800311fc: 000210c0 sll v0,v0,0x3
-80031200: 00021880 sll v1,v0,0x2
-80031204: 00621023 subu v0,v1,v0
-80031208: 27c30010 addiu v1,s8,16
-8003120c: 00621021 addu v0,v1,v0
-80031210: 8c43001c lw v1,28(v0)
-80031214: 8c420018 lw v0,24(v0)
-80031218: 8fc400dc lw a0,220(s8)
-8003121c: 00000000 nop
-80031220: 24840010 addiu a0,a0,16
-80031224: 8c850004 lw a1,4(a0)
-80031228: 8c840000 lw a0,0(a0)
-8003122c: 00000000 nop
-80031230: 00803021 move a2,a0
-80031234: 00a03821 move a3,a1
-80031238: 00402021 move a0,v0
-8003123c: 00602821 move a1,v1
-80031240: 0c00f853 jal 8003e14c <__muldf3>
-80031244: 00000000 nop
-80031248: 00403021 move a2,v0
-8003124c: 00603821 move a3,v1
-80031250: 02402021 move a0,s2
-80031254: 02602821 move a1,s3
-80031258: 0c00f3d7 jal 8003cf5c <__adddf3>
-8003125c: 00000000 nop
-80031260: 00402021 move a0,v0
-80031264: 00602821 move a1,v1
-80031268: 8fc20010 lw v0,16(s8)
-8003126c: 00000000 nop
-80031270: 000210c0 sll v0,v0,0x3
-80031274: 27c30010 addiu v1,s8,16
-80031278: 00621021 addu v0,v1,v0
-8003127c: ac440050 sw a0,80(v0)
-80031280: ac450054 sw a1,84(v0)
- axis_m[1][2] = (s[0]*k[2]) + (k[0]*s[1]*s[2]);
- axis_m[2][0] = s[1];
- axis_m[2][1] = -(s[0]*k[1]);
- axis_m[2][2] = k[0]*k[1];
-
- for(x=0;x<3;x++)
-80031284: 8fc20010 lw v0,16(s8)
-80031288: 00000000 nop
-8003128c: 24420001 addiu v0,v0,1
-80031290: afc20010 sw v0,16(s8)
-80031294: 8fc20010 lw v0,16(s8)
-80031298: 00000000 nop
-8003129c: 28420003 slti v0,v0,3
-800312a0: 1440ffa1 bnez v0,80031128 <gs_internal_vector_rotate+0x40c>
-800312a4: 00000000 nop
- b[x] = (axis_m[x][0] * v[0]) + (axis_m[x][1] * v[1]) + (axis_m[x][2] * v[2]);
-
- b[1]=-b[1];
-800312a8: 8fc20068 lw v0,104(s8)
-800312ac: 8fc3006c lw v1,108(s8)
-800312b0: 00408021 move s0,v0
-800312b4: 3c048000 lui a0,0x8000
-800312b8: 00648826 xor s1,v1,a0
-800312bc: afd00068 sw s0,104(s8)
-800312c0: afd1006c sw s1,108(s8)
-
- for(x=0;x<3;x++)
-800312c4: afc00010 sw zero,16(s8)
-800312c8: 10000015 b 80031320 <gs_internal_vector_rotate+0x604>
-800312cc: 00000000 nop
- n[x]=b[x];
-800312d0: 8fc20010 lw v0,16(s8)
-800312d4: 00000000 nop
-800312d8: 000210c0 sll v0,v0,0x3
-800312dc: 8fc300e0 lw v1,224(s8)
-800312e0: 00000000 nop
-800312e4: 00622021 addu a0,v1,v0
-800312e8: 8fc20010 lw v0,16(s8)
-800312ec: 00000000 nop
-800312f0: 000210c0 sll v0,v0,0x3
-800312f4: 27c30010 addiu v1,s8,16
-800312f8: 00621021 addu v0,v1,v0
-800312fc: 8c430054 lw v1,84(v0)
-80031300: 8c420050 lw v0,80(v0)
-80031304: 00000000 nop
-80031308: ac820000 sw v0,0(a0)
-8003130c: ac830004 sw v1,4(a0)
- for(x=0;x<3;x++)
- b[x] = (axis_m[x][0] * v[0]) + (axis_m[x][1] * v[1]) + (axis_m[x][2] * v[2]);
-
- b[1]=-b[1];
-
- for(x=0;x<3;x++)
-80031310: 8fc20010 lw v0,16(s8)
-80031314: 00000000 nop
-80031318: 24420001 addiu v0,v0,1
-8003131c: afc20010 sw v0,16(s8)
-80031320: 8fc20010 lw v0,16(s8)
-80031324: 00000000 nop
-80031328: 28420003 slti v0,v0,3
-8003132c: 1440ffe8 bnez v0,800312d0 <gs_internal_vector_rotate+0x5b4>
-80031330: 00000000 nop
- n[x]=b[x];
-}
-80031334: 00000000 nop
-80031338: 03c0e821 move sp,s8
-8003133c: 8fbf00cc lw ra,204(sp)
-80031340: 8fbe00c8 lw s8,200(sp)
-80031344: 8fb700c4 lw s7,196(sp)
-80031348: 8fb600c0 lw s6,192(sp)
-8003134c: 8fb500bc lw s5,188(sp)
-80031350: 8fb400b8 lw s4,184(sp)
-80031354: 8fb300b4 lw s3,180(sp)
-80031358: 8fb200b0 lw s2,176(sp)
-8003135c: 8fb100ac lw s1,172(sp)
-80031360: 8fb000a8 lw s0,168(sp)
-80031364: 27bd00d0 addiu sp,sp,208
-80031368: 03e00008 jr ra
-8003136c: 00000000 nop
-
-80031370 <GsIsWorking>:
-
-int GsIsWorking()
-{
-80031370: 27bdffe8 addiu sp,sp,-24
-80031374: afbf0014 sw ra,20(sp)
-80031378: afbe0010 sw s8,16(sp)
-8003137c: 03a0f021 move s8,sp
- return GsIsDrawing();
-80031380: 0c00bf9f jal 8002fe7c <GsIsDrawing>
-80031384: 00000000 nop
-}
-80031388: 03c0e821 move sp,s8
-8003138c: 8fbf0014 lw ra,20(sp)
-80031390: 8fbe0010 lw s8,16(sp)
-80031394: 27bd0018 addiu sp,sp,24
-80031398: 03e00008 jr ra
-8003139c: 00000000 nop
-
-800313a0 <GsSortCls>:
-
-void GsSortCls(int r, int g, int b)
-{
-800313a0: 27bdffd8 addiu sp,sp,-40
-800313a4: afbf0024 sw ra,36(sp)
-800313a8: afbe0020 sw s8,32(sp)
-800313ac: 03a0f021 move s8,sp
-800313b0: afc40028 sw a0,40(s8)
-800313b4: afc5002c sw a1,44(s8)
-800313b8: afc60030 sw a2,48(s8)
- GsRectangle rect;
-
- rect.r = r;
-800313bc: 8fc20028 lw v0,40(s8)
-800313c0: 00000000 nop
-800313c4: 304200ff andi v0,v0,0xff
-800313c8: a3c20018 sb v0,24(s8)
- rect.g = g;
-800313cc: 8fc2002c lw v0,44(s8)
-800313d0: 00000000 nop
-800313d4: 304200ff andi v0,v0,0xff
-800313d8: a3c20019 sb v0,25(s8)
- rect.b = b;
-800313dc: 8fc20030 lw v0,48(s8)
-800313e0: 00000000 nop
-800313e4: 304200ff andi v0,v0,0xff
-800313e8: a3c2001a sb v0,26(s8)
- rect.x = 0;
-800313ec: a7c00010 sh zero,16(s8)
- rect.y = 0;
-800313f0: a7c00012 sh zero,18(s8)
- rect.attribute = 0;
-800313f4: afc0001c sw zero,28(s8)
- rect.w = GsCurDrawEnvW;
-800313f8: 3c028007 lui v0,0x8007
-800313fc: 94421d40 lhu v0,7488(v0)
-80031400: 00000000 nop
-80031404: 00021400 sll v0,v0,0x10
-80031408: 00021403 sra v0,v0,0x10
-8003140c: a7c20014 sh v0,20(s8)
- rect.h = GsCurDrawEnvH;
-80031410: 3c028007 lui v0,0x8007
-80031414: 94421d58 lhu v0,7512(v0)
-80031418: 00000000 nop
-8003141c: 00021400 sll v0,v0,0x10
-80031420: 00021403 sra v0,v0,0x10
-80031424: a7c20016 sh v0,22(s8)
-
- GsSortRectangle(&rect);
-80031428: 27c20010 addiu v0,s8,16
-8003142c: 00402021 move a0,v0
-80031430: 0c00b762 jal 8002dd88 <GsSortRectangle>
-80031434: 00000000 nop
-}
-80031438: 00000000 nop
-8003143c: 03c0e821 move sp,s8
-80031440: 8fbf0024 lw ra,36(sp)
-80031444: 8fbe0020 lw s8,32(sp)
-80031448: 27bd0028 addiu sp,sp,40
-8003144c: 03e00008 jr ra
-80031450: 00000000 nop
-
-80031454 <GsSetAutoWait>:
-
-void GsSetAutoWait()
-{
-80031454: 27bdfff8 addiu sp,sp,-8
-80031458: afbe0004 sw s8,4(sp)
-8003145c: 03a0f021 move s8,sp
- __gs_autowait = 1;
-80031460: 3c028007 lui v0,0x8007
-80031464: 24030001 li v1,1
-80031468: ac431ce8 sw v1,7400(v0)
-}
-8003146c: 00000000 nop
-80031470: 03c0e821 move sp,s8
-80031474: 8fbe0004 lw s8,4(sp)
-80031478: 27bd0008 addiu sp,sp,8
-8003147c: 03e00008 jr ra
-80031480: 00000000 nop
-
-80031484 <GsRotateVector>:
-
-void GsRotateVector(int x_a, int y_a, int z_a, double *v, double *n)
-{
-80031484: 27bdffe0 addiu sp,sp,-32
-80031488: afbf001c sw ra,28(sp)
-8003148c: afbe0018 sw s8,24(sp)
-80031490: 03a0f021 move s8,sp
-80031494: afc40020 sw a0,32(s8)
-80031498: afc50024 sw a1,36(s8)
-8003149c: afc60028 sw a2,40(s8)
-800314a0: afc7002c sw a3,44(s8)
- gs_internal_vector_rotate(x_a, y_a, z_a, v, n);
-800314a4: 8fc20030 lw v0,48(s8)
-800314a8: 00000000 nop
-800314ac: afa20010 sw v0,16(sp)
-800314b0: 8fc7002c lw a3,44(s8)
-800314b4: 8fc60028 lw a2,40(s8)
-800314b8: 8fc50024 lw a1,36(s8)
-800314bc: 8fc40020 lw a0,32(s8)
-800314c0: 0c00c347 jal 80030d1c <gs_internal_vector_rotate>
-800314c4: 00000000 nop
-}
-800314c8: 00000000 nop
-800314cc: 03c0e821 move sp,s8
-800314d0: 8fbf001c lw ra,28(sp)
-800314d4: 8fbe0018 lw s8,24(sp)
-800314d8: 27bd0020 addiu sp,sp,32
-800314dc: 03e00008 jr ra
-800314e0: 00000000 nop
-
-800314e4 <GsSetListEx>:
- if(curCount > 0)
- linked_list[orig_pos] = (curCount << 24) | (((unsigned int)&linked_list[linked_list_pos]) & 0xffffff);
-}*/
-
-void GsSetListEx(unsigned int *listptr, unsigned int listpos)
-{
-800314e4: 27bdfff8 addiu sp,sp,-8
-800314e8: afbe0004 sw s8,4(sp)
-800314ec: 03a0f021 move s8,sp
-800314f0: afc40008 sw a0,8(s8)
-800314f4: afc5000c sw a1,12(s8)
- linked_list = listptr;
-800314f8: 3c028007 lui v0,0x8007
-800314fc: 8fc30008 lw v1,8(s8)
-80031500: 00000000 nop
-80031504: ac431cd4 sw v1,7380(v0)
- linked_list_pos = listpos;
-80031508: 3c028007 lui v0,0x8007
-8003150c: 8fc3000c lw v1,12(s8)
-80031510: 00000000 nop
-80031514: ac431cd8 sw v1,7384(v0)
-}
-80031518: 00000000 nop
-8003151c: 03c0e821 move sp,s8
-80031520: 8fbe0004 lw s8,4(sp)
-80031524: 27bd0008 addiu sp,sp,8
-80031528: 03e00008 jr ra
-8003152c: 00000000 nop
-
-80031530 <GsSortPolyLine>:
-
-void GsSortPolyLine(GsPolyLine *line)
-{
-80031530: 27bdffd8 addiu sp,sp,-40
-80031534: afbf0024 sw ra,36(sp)
-80031538: afbe0020 sw s8,32(sp)
-8003153c: 03a0f021 move s8,sp
-80031540: afc40028 sw a0,40(s8)
- // PKT 0x48
-
- int orig_pos = linked_list_pos;
-80031544: 3c028007 lui v0,0x8007
-80031548: 8c421cd8 lw v0,7384(v0)
-8003154c: 00000000 nop
-80031550: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x48;
-80031554: 24020048 li v0,72
-80031558: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, line->attribute, &pkt);
-8003155c: 8fc20028 lw v0,40(s8)
-80031560: 00000000 nop
-80031564: 8c420010 lw v0,16(v0)
-80031568: 27c3001c addiu v1,s8,28
-8003156c: 00603021 move a2,v1
-80031570: 00402821 move a1,v0
-80031574: 00002021 move a0,zero
-80031578: 0c00bbd0 jal 8002ef40 <setup_attribs>
-8003157c: 00000000 nop
-80031580: afc20018 sw v0,24(s8)
-
- linked_list_pos++; // skip this word, we will replace it later
-80031584: 3c028007 lui v0,0x8007
-80031588: 8c421cd8 lw v0,7384(v0)
-8003158c: 00000000 nop
-80031590: 24430001 addiu v1,v0,1
-80031594: 3c028007 lui v0,0x8007
-80031598: ac431cd8 sw v1,7384(v0)
- linked_list[linked_list_pos++] = md;
-8003159c: 3c028007 lui v0,0x8007
-800315a0: 8c431cd4 lw v1,7380(v0)
-800315a4: 3c028007 lui v0,0x8007
-800315a8: 8c421cd8 lw v0,7384(v0)
-800315ac: 00000000 nop
-800315b0: 24450001 addiu a1,v0,1
-800315b4: 3c048007 lui a0,0x8007
-800315b8: ac851cd8 sw a1,7384(a0)
-800315bc: 00021080 sll v0,v0,0x2
-800315c0: 00621021 addu v0,v1,v0
-800315c4: 8fc30018 lw v1,24(s8)
-800315c8: 00000000 nop
-800315cc: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r);
-800315d0: 3c028007 lui v0,0x8007
-800315d4: 8c431cd4 lw v1,7380(v0)
-800315d8: 3c028007 lui v0,0x8007
-800315dc: 8c421cd8 lw v0,7384(v0)
-800315e0: 00000000 nop
-800315e4: 24450001 addiu a1,v0,1
-800315e8: 3c048007 lui a0,0x8007
-800315ec: ac851cd8 sw a1,7384(a0)
-800315f0: 00021080 sll v0,v0,0x2
-800315f4: 00621021 addu v0,v1,v0
-800315f8: 93c3001c lbu v1,28(s8)
-800315fc: 00000000 nop
-80031600: 00032600 sll a0,v1,0x18
-80031604: 8fc30028 lw v1,40(s8)
-80031608: 00000000 nop
-8003160c: 90630006 lbu v1,6(v1)
-80031610: 00000000 nop
-80031614: 00031c00 sll v1,v1,0x10
-80031618: 00832025 or a0,a0,v1
-8003161c: 8fc30028 lw v1,40(s8)
-80031620: 00000000 nop
-80031624: 90630005 lbu v1,5(v1)
-80031628: 00000000 nop
-8003162c: 00031a00 sll v1,v1,0x8
-80031630: 00831825 or v1,a0,v1
-80031634: 8fc40028 lw a0,40(s8)
-80031638: 00000000 nop
-8003163c: 90840004 lbu a0,4(a0)
-80031640: 00000000 nop
-80031644: 00641825 or v1,v1,a0
-80031648: ac430000 sw v1,0(v0)
-
- for(x = 0; x < line->npoints; x++)
-8003164c: afc00010 sw zero,16(s8)
-80031650: 10000028 b 800316f4 <GsSortPolyLine+0x1c4>
-80031654: 00000000 nop
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff);
-80031658: 3c028007 lui v0,0x8007
-8003165c: 8c431cd4 lw v1,7380(v0)
-80031660: 3c028007 lui v0,0x8007
-80031664: 8c421cd8 lw v0,7384(v0)
-80031668: 00000000 nop
-8003166c: 24450001 addiu a1,v0,1
-80031670: 3c048007 lui a0,0x8007
-80031674: ac851cd8 sw a1,7384(a0)
-80031678: 00021080 sll v0,v0,0x2
-8003167c: 00621021 addu v0,v1,v0
-80031680: 8fc30028 lw v1,40(s8)
-80031684: 00000000 nop
-80031688: 8c64000c lw a0,12(v1)
-8003168c: 8fc30010 lw v1,16(s8)
-80031690: 00000000 nop
-80031694: 00031840 sll v1,v1,0x1
-80031698: 00831821 addu v1,a0,v1
-8003169c: 84630000 lh v1,0(v1)
-800316a0: 00000000 nop
-800316a4: 3063ffff andi v1,v1,0xffff
-800316a8: 306307ff andi v1,v1,0x7ff
-800316ac: 00032400 sll a0,v1,0x10
-800316b0: 8fc30028 lw v1,40(s8)
-800316b4: 00000000 nop
-800316b8: 8c650008 lw a1,8(v1)
-800316bc: 8fc30010 lw v1,16(s8)
-800316c0: 00000000 nop
-800316c4: 00031840 sll v1,v1,0x1
-800316c8: 00a31821 addu v1,a1,v1
-800316cc: 84630000 lh v1,0(v1)
-800316d0: 00000000 nop
-800316d4: 3063ffff andi v1,v1,0xffff
-800316d8: 306307ff andi v1,v1,0x7ff
-800316dc: 00831825 or v1,a0,v1
-800316e0: ac430000 sw v1,0(v0)
-
- linked_list_pos++; // skip this word, we will replace it later
- linked_list[linked_list_pos++] = md;
- linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r);
-
- for(x = 0; x < line->npoints; x++)
-800316e4: 8fc20010 lw v0,16(s8)
-800316e8: 00000000 nop
-800316ec: 24420001 addiu v0,v0,1
-800316f0: afc20010 sw v0,16(s8)
-800316f4: 8fc20028 lw v0,40(s8)
-800316f8: 00000000 nop
-800316fc: 8c430000 lw v1,0(v0)
-80031700: 8fc20010 lw v0,16(s8)
-80031704: 00000000 nop
-80031708: 0043102b sltu v0,v0,v1
-8003170c: 1440ffd2 bnez v0,80031658 <GsSortPolyLine+0x128>
-80031710: 00000000 nop
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff);
-
- linked_list[linked_list_pos++] = 0x55555555; // termination code
-80031714: 3c028007 lui v0,0x8007
-80031718: 8c431cd4 lw v1,7380(v0)
-8003171c: 3c028007 lui v0,0x8007
-80031720: 8c421cd8 lw v0,7384(v0)
-80031724: 00000000 nop
-80031728: 24450001 addiu a1,v0,1
-8003172c: 3c048007 lui a0,0x8007
-80031730: ac851cd8 sw a1,7384(a0)
-80031734: 00021080 sll v0,v0,0x2
-80031738: 00621021 addu v0,v1,v0
-8003173c: 3c035555 lui v1,0x5555
-80031740: 34635555 ori v1,v1,0x5555
-80031744: ac430000 sw v1,0(v0)
-
- linked_list[orig_pos] = ((line->npoints+3) << 24) | (((unsigned int)&linked_list[linked_list_pos]) & 0xffffff);
-80031748: 3c028007 lui v0,0x8007
-8003174c: 8c431cd4 lw v1,7380(v0)
-80031750: 8fc20014 lw v0,20(s8)
-80031754: 00000000 nop
-80031758: 00021080 sll v0,v0,0x2
-8003175c: 00621021 addu v0,v1,v0
-80031760: 8fc30028 lw v1,40(s8)
-80031764: 00000000 nop
-80031768: 8c630000 lw v1,0(v1)
-8003176c: 00000000 nop
-80031770: 24630003 addiu v1,v1,3
-80031774: 00032600 sll a0,v1,0x18
-80031778: 3c038007 lui v1,0x8007
-8003177c: 8c651cd4 lw a1,7380(v1)
-80031780: 3c038007 lui v1,0x8007
-80031784: 8c631cd8 lw v1,7384(v1)
-80031788: 00000000 nop
-8003178c: 00031880 sll v1,v1,0x2
-80031790: 00a31821 addu v1,a1,v1
-80031794: 00602821 move a1,v1
-80031798: 3c0300ff lui v1,0xff
-8003179c: 3463ffff ori v1,v1,0xffff
-800317a0: 00a31824 and v1,a1,v1
-800317a4: 00831825 or v1,a0,v1
-800317a8: ac430000 sw v1,0(v0)
-}
-800317ac: 00000000 nop
-800317b0: 03c0e821 move sp,s8
-800317b4: 8fbf0024 lw ra,36(sp)
-800317b8: 8fbe0020 lw s8,32(sp)
-800317bc: 27bd0028 addiu sp,sp,40
-800317c0: 03e00008 jr ra
-800317c4: 00000000 nop
-
-800317c8 <GsSortGPolyLine>:
-
-void GsSortGPolyLine(GsGPolyLine *line)
-{
-800317c8: 27bdffd8 addiu sp,sp,-40
-800317cc: afbf0024 sw ra,36(sp)
-800317d0: afbe0020 sw s8,32(sp)
-800317d4: 03a0f021 move s8,sp
-800317d8: afc40028 sw a0,40(s8)
- // PKT 0x58
-
- int orig_pos = linked_list_pos;
-800317dc: 3c028007 lui v0,0x8007
-800317e0: 8c421cd8 lw v0,7384(v0)
-800317e4: 00000000 nop
-800317e8: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x58;
-800317ec: 24020058 li v0,88
-800317f0: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(0, line->attribute, &pkt);
-800317f4: 8fc20028 lw v0,40(s8)
-800317f8: 00000000 nop
-800317fc: 8c420018 lw v0,24(v0)
-80031800: 27c3001c addiu v1,s8,28
-80031804: 00603021 move a2,v1
-80031808: 00402821 move a1,v0
-8003180c: 00002021 move a0,zero
-80031810: 0c00bbd0 jal 8002ef40 <setup_attribs>
-80031814: 00000000 nop
-80031818: afc20018 sw v0,24(s8)
-
- linked_list_pos++; // skip this word, we will replace it later
-8003181c: 3c028007 lui v0,0x8007
-80031820: 8c421cd8 lw v0,7384(v0)
-80031824: 00000000 nop
-80031828: 24430001 addiu v1,v0,1
-8003182c: 3c028007 lui v0,0x8007
-80031830: ac431cd8 sw v1,7384(v0)
- linked_list[linked_list_pos++] = md;
-80031834: 3c028007 lui v0,0x8007
-80031838: 8c431cd4 lw v1,7380(v0)
-8003183c: 3c028007 lui v0,0x8007
-80031840: 8c421cd8 lw v0,7384(v0)
-80031844: 00000000 nop
-80031848: 24450001 addiu a1,v0,1
-8003184c: 3c048007 lui a0,0x8007
-80031850: ac851cd8 sw a1,7384(a0)
-80031854: 00021080 sll v0,v0,0x2
-80031858: 00621021 addu v0,v1,v0
-8003185c: 8fc30018 lw v1,24(s8)
-80031860: 00000000 nop
-80031864: ac430000 sw v1,0(v0)
-
- for(x=0; x < line->npoints;x++)
-80031868: afc00010 sw zero,16(s8)
-8003186c: 1000005a b 800319d8 <GsSortGPolyLine+0x210>
-80031870: 00000000 nop
- {
- linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0);
-80031874: 3c028007 lui v0,0x8007
-80031878: 8c431cd4 lw v1,7380(v0)
-8003187c: 3c028007 lui v0,0x8007
-80031880: 8c421cd8 lw v0,7384(v0)
-80031884: 00000000 nop
-80031888: 24450001 addiu a1,v0,1
-8003188c: 3c048007 lui a0,0x8007
-80031890: ac851cd8 sw a1,7384(a0)
-80031894: 00021080 sll v0,v0,0x2
-80031898: 00621821 addu v1,v1,v0
-8003189c: 8fc20028 lw v0,40(s8)
-800318a0: 00000000 nop
-800318a4: 8c44000c lw a0,12(v0)
-800318a8: 8fc20010 lw v0,16(s8)
-800318ac: 00000000 nop
-800318b0: 00821021 addu v0,a0,v0
-800318b4: 90420000 lbu v0,0(v0)
-800318b8: 00000000 nop
-800318bc: 00022400 sll a0,v0,0x10
-800318c0: 8fc20028 lw v0,40(s8)
-800318c4: 00000000 nop
-800318c8: 8c450008 lw a1,8(v0)
-800318cc: 8fc20010 lw v0,16(s8)
-800318d0: 00000000 nop
-800318d4: 00a21021 addu v0,a1,v0
-800318d8: 90420000 lbu v0,0(v0)
-800318dc: 00000000 nop
-800318e0: 00021200 sll v0,v0,0x8
-800318e4: 00821025 or v0,a0,v0
-800318e8: 8fc40028 lw a0,40(s8)
-800318ec: 00000000 nop
-800318f0: 8c850004 lw a1,4(a0)
-800318f4: 8fc40010 lw a0,16(s8)
-800318f8: 00000000 nop
-800318fc: 00a42021 addu a0,a1,a0
-80031900: 90840000 lbu a0,0(a0)
-80031904: 00000000 nop
-80031908: 00442025 or a0,v0,a0
-8003190c: 8fc20010 lw v0,16(s8)
-80031910: 00000000 nop
-80031914: 14400006 bnez v0,80031930 <GsSortGPolyLine+0x168>
-80031918: 00000000 nop
-8003191c: 93c2001c lbu v0,28(s8)
-80031920: 00000000 nop
-80031924: 00021600 sll v0,v0,0x18
-80031928: 10000002 b 80031934 <GsSortGPolyLine+0x16c>
-8003192c: 00000000 nop
-80031930: 00001021 move v0,zero
-80031934: 00821025 or v0,a0,v0
-80031938: ac620000 sw v0,0(v1)
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff);
-8003193c: 3c028007 lui v0,0x8007
-80031940: 8c431cd4 lw v1,7380(v0)
-80031944: 3c028007 lui v0,0x8007
-80031948: 8c421cd8 lw v0,7384(v0)
-8003194c: 00000000 nop
-80031950: 24450001 addiu a1,v0,1
-80031954: 3c048007 lui a0,0x8007
-80031958: ac851cd8 sw a1,7384(a0)
-8003195c: 00021080 sll v0,v0,0x2
-80031960: 00621021 addu v0,v1,v0
-80031964: 8fc30028 lw v1,40(s8)
-80031968: 00000000 nop
-8003196c: 8c640014 lw a0,20(v1)
-80031970: 8fc30010 lw v1,16(s8)
-80031974: 00000000 nop
-80031978: 00031840 sll v1,v1,0x1
-8003197c: 00831821 addu v1,a0,v1
-80031980: 84630000 lh v1,0(v1)
-80031984: 00000000 nop
-80031988: 3063ffff andi v1,v1,0xffff
-8003198c: 306307ff andi v1,v1,0x7ff
-80031990: 00032400 sll a0,v1,0x10
-80031994: 8fc30028 lw v1,40(s8)
-80031998: 00000000 nop
-8003199c: 8c650010 lw a1,16(v1)
-800319a0: 8fc30010 lw v1,16(s8)
-800319a4: 00000000 nop
-800319a8: 00031840 sll v1,v1,0x1
-800319ac: 00a31821 addu v1,a1,v1
-800319b0: 84630000 lh v1,0(v1)
-800319b4: 00000000 nop
-800319b8: 3063ffff andi v1,v1,0xffff
-800319bc: 306307ff andi v1,v1,0x7ff
-800319c0: 00831825 or v1,a0,v1
-800319c4: ac430000 sw v1,0(v0)
- md = setup_attribs(0, line->attribute, &pkt);
-
- linked_list_pos++; // skip this word, we will replace it later
- linked_list[linked_list_pos++] = md;
-
- for(x=0; x < line->npoints;x++)
-800319c8: 8fc20010 lw v0,16(s8)
-800319cc: 00000000 nop
-800319d0: 24420001 addiu v0,v0,1
-800319d4: afc20010 sw v0,16(s8)
-800319d8: 8fc20028 lw v0,40(s8)
-800319dc: 00000000 nop
-800319e0: 8c430000 lw v1,0(v0)
-800319e4: 8fc20010 lw v0,16(s8)
-800319e8: 00000000 nop
-800319ec: 0043102b sltu v0,v0,v1
-800319f0: 1440ffa0 bnez v0,80031874 <GsSortGPolyLine+0xac>
-800319f4: 00000000 nop
- {
- linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0);
- linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff);
- }
-
- linked_list[linked_list_pos++] = 0x55555555; // termination code
-800319f8: 3c028007 lui v0,0x8007
-800319fc: 8c431cd4 lw v1,7380(v0)
-80031a00: 3c028007 lui v0,0x8007
-80031a04: 8c421cd8 lw v0,7384(v0)
-80031a08: 00000000 nop
-80031a0c: 24450001 addiu a1,v0,1
-80031a10: 3c048007 lui a0,0x8007
-80031a14: ac851cd8 sw a1,7384(a0)
-80031a18: 00021080 sll v0,v0,0x2
-80031a1c: 00621021 addu v0,v1,v0
-80031a20: 3c035555 lui v1,0x5555
-80031a24: 34635555 ori v1,v1,0x5555
-80031a28: ac430000 sw v1,0(v0)
-
- linked_list[orig_pos] = (((line->npoints*2)+2) << 24) | (((unsigned int)&linked_list[linked_list_pos]) & 0xffffff);
-80031a2c: 3c028007 lui v0,0x8007
-80031a30: 8c431cd4 lw v1,7380(v0)
-80031a34: 8fc20014 lw v0,20(s8)
-80031a38: 00000000 nop
-80031a3c: 00021080 sll v0,v0,0x2
-80031a40: 00621021 addu v0,v1,v0
-80031a44: 8fc30028 lw v1,40(s8)
-80031a48: 00000000 nop
-80031a4c: 8c630000 lw v1,0(v1)
-80031a50: 00000000 nop
-80031a54: 24630001 addiu v1,v1,1
-80031a58: 00031840 sll v1,v1,0x1
-80031a5c: 00032600 sll a0,v1,0x18
-80031a60: 3c038007 lui v1,0x8007
-80031a64: 8c651cd4 lw a1,7380(v1)
-80031a68: 3c038007 lui v1,0x8007
-80031a6c: 8c631cd8 lw v1,7384(v1)
-80031a70: 00000000 nop
-80031a74: 00031880 sll v1,v1,0x2
-80031a78: 00a31821 addu v1,a1,v1
-80031a7c: 00602821 move a1,v1
-80031a80: 3c0300ff lui v1,0xff
-80031a84: 3463ffff ori v1,v1,0xffff
-80031a88: 00a31824 and v1,a1,v1
-80031a8c: 00831825 or v1,a0,v1
-80031a90: ac430000 sw v1,0(v0)
-}
-80031a94: 00000000 nop
-80031a98: 03c0e821 move sp,s8
-80031a9c: 8fbf0024 lw ra,36(sp)
-80031aa0: 8fbe0020 lw s8,32(sp)
-80031aa4: 27bd0028 addiu sp,sp,40
-80031aa8: 03e00008 jr ra
-80031aac: 00000000 nop
-
-80031ab0 <GsSortGTPoly4>:
-
-void GsSortGTPoly4(GsGTPoly4 *tpoly4)
-{
-80031ab0: 27bdffd8 addiu sp,sp,-40
-80031ab4: afbf0024 sw ra,36(sp)
-80031ab8: afbe0020 sw s8,32(sp)
-80031abc: 03a0f021 move s8,sp
-80031ac0: afc40028 sw a0,40(s8)
- unsigned int orig_pos = linked_list_pos;
-80031ac4: 3c028007 lui v0,0x8007
-80031ac8: 8c421cd8 lw v0,7384(v0)
-80031acc: 00000000 nop
-80031ad0: afc20010 sw v0,16(s8)
- unsigned char pkt = 0x3c;
-80031ad4: 2402003c li v0,60
-80031ad8: a3c20018 sb v0,24(s8)
-
- /*md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt);*/
-
- //printf("tpoly4->tpage = %d\n", tpoly4->tpage);
-
- md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt);
-80031adc: 8fc20028 lw v0,40(s8)
-80031ae0: 00000000 nop
-80031ae4: 90420020 lbu v0,32(v0)
-80031ae8: 00000000 nop
-80031aec: 00402021 move a0,v0
-80031af0: 8fc20028 lw v0,40(s8)
-80031af4: 00000000 nop
-80031af8: 8c42002c lw v0,44(v0)
-80031afc: 27c30018 addiu v1,s8,24
-80031b00: 00603021 move a2,v1
-80031b04: 00402821 move a1,v0
-80031b08: 0c00bbd0 jal 8002ef40 <setup_attribs>
-80031b0c: 00000000 nop
-80031b10: afc20014 sw v0,20(s8)
-
- //printf("pkt = %x\n", pkt);
-
- linked_list[linked_list_pos++] = 0x0C000000;
-80031b14: 3c028007 lui v0,0x8007
-80031b18: 8c431cd4 lw v1,7380(v0)
-80031b1c: 3c028007 lui v0,0x8007
-80031b20: 8c421cd8 lw v0,7384(v0)
-80031b24: 00000000 nop
-80031b28: 24450001 addiu a1,v0,1
-80031b2c: 3c048007 lui a0,0x8007
-80031b30: ac851cd8 sw a1,7384(a0)
-80031b34: 00021080 sll v0,v0,0x2
-80031b38: 00621021 addu v0,v1,v0
-80031b3c: 3c030c00 lui v1,0xc00
-80031b40: ac430000 sw v1,0(v0)
- //linked_list[linked_list_pos++] = md;
- //linked_list[linked_list_pos++] = 0xe0000000;
- //linked_list[linked_list_pos++] = 0xe1000105;
-
- //printf("tpoly4 md: %08x\n", md);
- linked_list[linked_list_pos++] = (pkt<<24)|(tpoly4->b[0]<<16)|(tpoly4->g[0]<<8)|(tpoly4->r[0]);
-80031b44: 3c028007 lui v0,0x8007
-80031b48: 8c431cd4 lw v1,7380(v0)
-80031b4c: 3c028007 lui v0,0x8007
-80031b50: 8c421cd8 lw v0,7384(v0)
-80031b54: 00000000 nop
-80031b58: 24450001 addiu a1,v0,1
-80031b5c: 3c048007 lui a0,0x8007
-80031b60: ac851cd8 sw a1,7384(a0)
-80031b64: 00021080 sll v0,v0,0x2
-80031b68: 00621021 addu v0,v1,v0
-80031b6c: 93c30018 lbu v1,24(s8)
-80031b70: 00000000 nop
-80031b74: 00032600 sll a0,v1,0x18
-80031b78: 8fc30028 lw v1,40(s8)
-80031b7c: 00000000 nop
-80031b80: 90630008 lbu v1,8(v1)
-80031b84: 00000000 nop
-80031b88: 00031c00 sll v1,v1,0x10
-80031b8c: 00832025 or a0,a0,v1
-80031b90: 8fc30028 lw v1,40(s8)
-80031b94: 00000000 nop
-80031b98: 90630004 lbu v1,4(v1)
-80031b9c: 00000000 nop
-80031ba0: 00031a00 sll v1,v1,0x8
-80031ba4: 00831825 or v1,a0,v1
-80031ba8: 8fc40028 lw a0,40(s8)
-80031bac: 00000000 nop
-80031bb0: 90840000 lbu a0,0(a0)
-80031bb4: 00000000 nop
-80031bb8: 00641825 or v1,v1,a0
-80031bbc: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[0]&0x7ff)<<16)|(tpoly4->x[0]&0x7ff);
-80031bc0: 3c028007 lui v0,0x8007
-80031bc4: 8c431cd4 lw v1,7380(v0)
-80031bc8: 3c028007 lui v0,0x8007
-80031bcc: 8c421cd8 lw v0,7384(v0)
-80031bd0: 00000000 nop
-80031bd4: 24450001 addiu a1,v0,1
-80031bd8: 3c048007 lui a0,0x8007
-80031bdc: ac851cd8 sw a1,7384(a0)
-80031be0: 00021080 sll v0,v0,0x2
-80031be4: 00621021 addu v0,v1,v0
-80031be8: 8fc30028 lw v1,40(s8)
-80031bec: 00000000 nop
-80031bf0: 84630014 lh v1,20(v1)
-80031bf4: 00000000 nop
-80031bf8: 3063ffff andi v1,v1,0xffff
-80031bfc: 306307ff andi v1,v1,0x7ff
-80031c00: 00032400 sll a0,v1,0x10
-80031c04: 8fc30028 lw v1,40(s8)
-80031c08: 00000000 nop
-80031c0c: 8463000c lh v1,12(v1)
-80031c10: 00000000 nop
-80031c14: 3063ffff andi v1,v1,0xffff
-80031c18: 306307ff andi v1,v1,0x7ff
-80031c1c: 00831825 or v1,a0,v1
-80031c20: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (get_clutid(tpoly4->cx, tpoly4->cy)<<16)|(tpoly4->v[0]<<8)|tpoly4->u[0];
-80031c24: 3c028007 lui v0,0x8007
-80031c28: 8c431cd4 lw v1,7380(v0)
-80031c2c: 3c028007 lui v0,0x8007
-80031c30: 8c421cd8 lw v0,7384(v0)
-80031c34: 00000000 nop
-80031c38: 24450001 addiu a1,v0,1
-80031c3c: 3c048007 lui a0,0x8007
-80031c40: ac851cd8 sw a1,7384(a0)
-80031c44: 00021080 sll v0,v0,0x2
-80031c48: 00621021 addu v0,v1,v0
-80031c4c: 8fc30028 lw v1,40(s8)
-80031c50: 00000000 nop
-80031c54: 8463001c lh v1,28(v1)
-80031c58: 00000000 nop
-80031c5c: 3063ffff andi v1,v1,0xffff
-80031c60: 306303ff andi v1,v1,0x3ff
-80031c64: 00032103 sra a0,v1,0x4
-80031c68: 8fc30028 lw v1,40(s8)
-80031c6c: 00000000 nop
-80031c70: 8463001e lh v1,30(v1)
-80031c74: 00000000 nop
-80031c78: 3063ffff andi v1,v1,0xffff
-80031c7c: 306301ff andi v1,v1,0x1ff
-80031c80: 00031980 sll v1,v1,0x6
-80031c84: 00831825 or v1,a0,v1
-80031c88: 00032400 sll a0,v1,0x10
-80031c8c: 8fc30028 lw v1,40(s8)
-80031c90: 00000000 nop
-80031c94: 90630025 lbu v1,37(v1)
-80031c98: 00000000 nop
-80031c9c: 00031a00 sll v1,v1,0x8
-80031ca0: 00831825 or v1,a0,v1
-80031ca4: 8fc40028 lw a0,40(s8)
-80031ca8: 00000000 nop
-80031cac: 90840021 lbu a0,33(a0)
-80031cb0: 00000000 nop
-80031cb4: 00641825 or v1,v1,a0
-80031cb8: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (tpoly4->b[1]<<16)|(tpoly4->g[1]<<8)|tpoly4->r[1];
-80031cbc: 3c028007 lui v0,0x8007
-80031cc0: 8c431cd4 lw v1,7380(v0)
-80031cc4: 3c028007 lui v0,0x8007
-80031cc8: 8c421cd8 lw v0,7384(v0)
-80031ccc: 00000000 nop
-80031cd0: 24450001 addiu a1,v0,1
-80031cd4: 3c048007 lui a0,0x8007
-80031cd8: ac851cd8 sw a1,7384(a0)
-80031cdc: 00021080 sll v0,v0,0x2
-80031ce0: 00621021 addu v0,v1,v0
-80031ce4: 8fc30028 lw v1,40(s8)
-80031ce8: 00000000 nop
-80031cec: 90630009 lbu v1,9(v1)
-80031cf0: 00000000 nop
-80031cf4: 00032400 sll a0,v1,0x10
-80031cf8: 8fc30028 lw v1,40(s8)
-80031cfc: 00000000 nop
-80031d00: 90630005 lbu v1,5(v1)
-80031d04: 00000000 nop
-80031d08: 00031a00 sll v1,v1,0x8
-80031d0c: 00831825 or v1,a0,v1
-80031d10: 8fc40028 lw a0,40(s8)
-80031d14: 00000000 nop
-80031d18: 90840001 lbu a0,1(a0)
-80031d1c: 00000000 nop
-80031d20: 00641825 or v1,v1,a0
-80031d24: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[1]&0x7ff)<<16)|(tpoly4->x[1]&0x7ff);
-80031d28: 3c028007 lui v0,0x8007
-80031d2c: 8c431cd4 lw v1,7380(v0)
-80031d30: 3c028007 lui v0,0x8007
-80031d34: 8c421cd8 lw v0,7384(v0)
-80031d38: 00000000 nop
-80031d3c: 24450001 addiu a1,v0,1
-80031d40: 3c048007 lui a0,0x8007
-80031d44: ac851cd8 sw a1,7384(a0)
-80031d48: 00021080 sll v0,v0,0x2
-80031d4c: 00621021 addu v0,v1,v0
-80031d50: 8fc30028 lw v1,40(s8)
-80031d54: 00000000 nop
-80031d58: 84630016 lh v1,22(v1)
-80031d5c: 00000000 nop
-80031d60: 3063ffff andi v1,v1,0xffff
-80031d64: 306307ff andi v1,v1,0x7ff
-80031d68: 00032400 sll a0,v1,0x10
-80031d6c: 8fc30028 lw v1,40(s8)
-80031d70: 00000000 nop
-80031d74: 8463000e lh v1,14(v1)
-80031d78: 00000000 nop
-80031d7c: 3063ffff andi v1,v1,0xffff
-80031d80: 306307ff andi v1,v1,0x7ff
-80031d84: 00831825 or v1,a0,v1
-80031d88: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (md << 16)|(tpoly4->v[1]<<8)|tpoly4->u[1];
-80031d8c: 3c028007 lui v0,0x8007
-80031d90: 8c431cd4 lw v1,7380(v0)
-80031d94: 3c028007 lui v0,0x8007
-80031d98: 8c421cd8 lw v0,7384(v0)
-80031d9c: 00000000 nop
-80031da0: 24450001 addiu a1,v0,1
-80031da4: 3c048007 lui a0,0x8007
-80031da8: ac851cd8 sw a1,7384(a0)
-80031dac: 00021080 sll v0,v0,0x2
-80031db0: 00621021 addu v0,v1,v0
-80031db4: 8fc30014 lw v1,20(s8)
-80031db8: 00000000 nop
-80031dbc: 00031c00 sll v1,v1,0x10
-80031dc0: 8fc40028 lw a0,40(s8)
-80031dc4: 00000000 nop
-80031dc8: 90840026 lbu a0,38(a0)
-80031dcc: 00000000 nop
-80031dd0: 00042200 sll a0,a0,0x8
-80031dd4: 00641825 or v1,v1,a0
-80031dd8: 8fc40028 lw a0,40(s8)
-80031ddc: 00000000 nop
-80031de0: 90840022 lbu a0,34(a0)
-80031de4: 00000000 nop
-80031de8: 00641825 or v1,v1,a0
-80031dec: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (tpoly4->b[1]<<16)|(tpoly4->g[1]<<8)|tpoly4->r[1];
-80031df0: 3c028007 lui v0,0x8007
-80031df4: 8c431cd4 lw v1,7380(v0)
-80031df8: 3c028007 lui v0,0x8007
-80031dfc: 8c421cd8 lw v0,7384(v0)
-80031e00: 00000000 nop
-80031e04: 24450001 addiu a1,v0,1
-80031e08: 3c048007 lui a0,0x8007
-80031e0c: ac851cd8 sw a1,7384(a0)
-80031e10: 00021080 sll v0,v0,0x2
-80031e14: 00621021 addu v0,v1,v0
-80031e18: 8fc30028 lw v1,40(s8)
-80031e1c: 00000000 nop
-80031e20: 90630009 lbu v1,9(v1)
-80031e24: 00000000 nop
-80031e28: 00032400 sll a0,v1,0x10
-80031e2c: 8fc30028 lw v1,40(s8)
-80031e30: 00000000 nop
-80031e34: 90630005 lbu v1,5(v1)
-80031e38: 00000000 nop
-80031e3c: 00031a00 sll v1,v1,0x8
-80031e40: 00831825 or v1,a0,v1
-80031e44: 8fc40028 lw a0,40(s8)
-80031e48: 00000000 nop
-80031e4c: 90840001 lbu a0,1(a0)
-80031e50: 00000000 nop
-80031e54: 00641825 or v1,v1,a0
-80031e58: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[2]&0x7ff)<<16)|(tpoly4->x[2]&0x7ff);
-80031e5c: 3c028007 lui v0,0x8007
-80031e60: 8c431cd4 lw v1,7380(v0)
-80031e64: 3c028007 lui v0,0x8007
-80031e68: 8c421cd8 lw v0,7384(v0)
-80031e6c: 00000000 nop
-80031e70: 24450001 addiu a1,v0,1
-80031e74: 3c048007 lui a0,0x8007
-80031e78: ac851cd8 sw a1,7384(a0)
-80031e7c: 00021080 sll v0,v0,0x2
-80031e80: 00621021 addu v0,v1,v0
-80031e84: 8fc30028 lw v1,40(s8)
-80031e88: 00000000 nop
-80031e8c: 84630018 lh v1,24(v1)
-80031e90: 00000000 nop
-80031e94: 3063ffff andi v1,v1,0xffff
-80031e98: 306307ff andi v1,v1,0x7ff
-80031e9c: 00032400 sll a0,v1,0x10
-80031ea0: 8fc30028 lw v1,40(s8)
-80031ea4: 00000000 nop
-80031ea8: 84630010 lh v1,16(v1)
-80031eac: 00000000 nop
-80031eb0: 3063ffff andi v1,v1,0xffff
-80031eb4: 306307ff andi v1,v1,0x7ff
-80031eb8: 00831825 or v1,a0,v1
-80031ebc: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (tpoly4->v[2]<<8)|tpoly4->u[2];
-80031ec0: 3c028007 lui v0,0x8007
-80031ec4: 8c431cd4 lw v1,7380(v0)
-80031ec8: 3c028007 lui v0,0x8007
-80031ecc: 8c421cd8 lw v0,7384(v0)
-80031ed0: 00000000 nop
-80031ed4: 24450001 addiu a1,v0,1
-80031ed8: 3c048007 lui a0,0x8007
-80031edc: ac851cd8 sw a1,7384(a0)
-80031ee0: 00021080 sll v0,v0,0x2
-80031ee4: 00621021 addu v0,v1,v0
-80031ee8: 8fc30028 lw v1,40(s8)
-80031eec: 00000000 nop
-80031ef0: 90630027 lbu v1,39(v1)
-80031ef4: 00000000 nop
-80031ef8: 00031a00 sll v1,v1,0x8
-80031efc: 8fc40028 lw a0,40(s8)
-80031f00: 00000000 nop
-80031f04: 90840023 lbu a0,35(a0)
-80031f08: 00000000 nop
-80031f0c: 00641825 or v1,v1,a0
-80031f10: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (tpoly4->b[2]<<16)|(tpoly4->g[2]<<8)|tpoly4->r[2];
-80031f14: 3c028007 lui v0,0x8007
-80031f18: 8c431cd4 lw v1,7380(v0)
-80031f1c: 3c028007 lui v0,0x8007
-80031f20: 8c421cd8 lw v0,7384(v0)
-80031f24: 00000000 nop
-80031f28: 24450001 addiu a1,v0,1
-80031f2c: 3c048007 lui a0,0x8007
-80031f30: ac851cd8 sw a1,7384(a0)
-80031f34: 00021080 sll v0,v0,0x2
-80031f38: 00621021 addu v0,v1,v0
-80031f3c: 8fc30028 lw v1,40(s8)
-80031f40: 00000000 nop
-80031f44: 9063000a lbu v1,10(v1)
-80031f48: 00000000 nop
-80031f4c: 00032400 sll a0,v1,0x10
-80031f50: 8fc30028 lw v1,40(s8)
-80031f54: 00000000 nop
-80031f58: 90630006 lbu v1,6(v1)
-80031f5c: 00000000 nop
-80031f60: 00031a00 sll v1,v1,0x8
-80031f64: 00831825 or v1,a0,v1
-80031f68: 8fc40028 lw a0,40(s8)
-80031f6c: 00000000 nop
-80031f70: 90840002 lbu a0,2(a0)
-80031f74: 00000000 nop
-80031f78: 00641825 or v1,v1,a0
-80031f7c: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = ((tpoly4->y[3]&0x7ff)<<16)|(tpoly4->x[3]&0x7ff);
-80031f80: 3c028007 lui v0,0x8007
-80031f84: 8c431cd4 lw v1,7380(v0)
-80031f88: 3c028007 lui v0,0x8007
-80031f8c: 8c421cd8 lw v0,7384(v0)
-80031f90: 00000000 nop
-80031f94: 24450001 addiu a1,v0,1
-80031f98: 3c048007 lui a0,0x8007
-80031f9c: ac851cd8 sw a1,7384(a0)
-80031fa0: 00021080 sll v0,v0,0x2
-80031fa4: 00621021 addu v0,v1,v0
-80031fa8: 8fc30028 lw v1,40(s8)
-80031fac: 00000000 nop
-80031fb0: 8463001a lh v1,26(v1)
-80031fb4: 00000000 nop
-80031fb8: 3063ffff andi v1,v1,0xffff
-80031fbc: 306307ff andi v1,v1,0x7ff
-80031fc0: 00032400 sll a0,v1,0x10
-80031fc4: 8fc30028 lw v1,40(s8)
-80031fc8: 00000000 nop
-80031fcc: 84630012 lh v1,18(v1)
-80031fd0: 00000000 nop
-80031fd4: 3063ffff andi v1,v1,0xffff
-80031fd8: 306307ff andi v1,v1,0x7ff
-80031fdc: 00831825 or v1,a0,v1
-80031fe0: ac430000 sw v1,0(v0)
- linked_list[linked_list_pos++] = (tpoly4->v[3]<<8)|tpoly4->u[3];
-80031fe4: 3c028007 lui v0,0x8007
-80031fe8: 8c431cd4 lw v1,7380(v0)
-80031fec: 3c028007 lui v0,0x8007
-80031ff0: 8c421cd8 lw v0,7384(v0)
-80031ff4: 00000000 nop
-80031ff8: 24450001 addiu a1,v0,1
-80031ffc: 3c048007 lui a0,0x8007
-80032000: ac851cd8 sw a1,7384(a0)
-80032004: 00021080 sll v0,v0,0x2
-80032008: 00621021 addu v0,v1,v0
-8003200c: 8fc30028 lw v1,40(s8)
-80032010: 00000000 nop
-80032014: 90630028 lbu v1,40(v1)
-80032018: 00000000 nop
-8003201c: 00031a00 sll v1,v1,0x8
-80032020: 8fc40028 lw a0,40(s8)
-80032024: 00000000 nop
-80032028: 90840024 lbu a0,36(a0)
-8003202c: 00000000 nop
-80032030: 00641825 or v1,v1,a0
-80032034: ac430000 sw v1,0(v0)
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-80032038: 3c028007 lui v0,0x8007
-8003203c: 8c431cd4 lw v1,7380(v0)
-80032040: 8fc20010 lw v0,16(s8)
-80032044: 00000000 nop
-80032048: 00021080 sll v0,v0,0x2
-8003204c: 00621021 addu v0,v1,v0
-80032050: 3c038007 lui v1,0x8007
-80032054: 8c641cd4 lw a0,7380(v1)
-80032058: 8fc30010 lw v1,16(s8)
-8003205c: 00000000 nop
-80032060: 00031880 sll v1,v1,0x2
-80032064: 00831821 addu v1,a0,v1
-80032068: 8c640000 lw a0,0(v1)
-8003206c: 3c038007 lui v1,0x8007
-80032070: 8c651cd4 lw a1,7380(v1)
-80032074: 3c038007 lui v1,0x8007
-80032078: 8c631cd8 lw v1,7384(v1)
-8003207c: 00000000 nop
-80032080: 00031880 sll v1,v1,0x2
-80032084: 00a31821 addu v1,a1,v1
-80032088: 00602821 move a1,v1
-8003208c: 3c0300ff lui v1,0xff
-80032090: 3463ffff ori v1,v1,0xffff
-80032094: 00a31824 and v1,a1,v1
-80032098: 00831825 or v1,a0,v1
-8003209c: ac430000 sw v1,0(v0)
-}
-800320a0: 00000000 nop
-800320a4: 03c0e821 move sp,s8
-800320a8: 8fbf0024 lw ra,36(sp)
-800320ac: 8fbe0020 lw s8,32(sp)
-800320b0: 27bd0028 addiu sp,sp,40
-800320b4: 03e00008 jr ra
-800320b8: 00000000 nop
-
-800320bc <GsSortGTPoly3>:
-
-void GsSortGTPoly3(GsGTPoly3 *tpoly3)
-{
-800320bc: 27bdffd8 addiu sp,sp,-40
-800320c0: afbf0024 sw ra,36(sp)
-800320c4: afbe0020 sw s8,32(sp)
-800320c8: 03a0f021 move s8,sp
-800320cc: afc40028 sw a0,40(s8)
- int orig_pos = linked_list_pos;
-800320d0: 3c028007 lui v0,0x8007
-800320d4: 8c421cd8 lw v0,7384(v0)
-800320d8: 00000000 nop
-800320dc: afc20014 sw v0,20(s8)
- int x;
- unsigned char pkt = 0x34;
-800320e0: 24020034 li v0,52
-800320e4: a3c2001c sb v0,28(s8)
- unsigned int md;
-
- md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt);
-800320e8: 8fc20028 lw v0,40(s8)
-800320ec: 00000000 nop
-800320f0: 9042001a lbu v0,26(v0)
-800320f4: 00000000 nop
-800320f8: 00402021 move a0,v0
-800320fc: 8fc20028 lw v0,40(s8)
-80032100: 00000000 nop
-80032104: 8c420024 lw v0,36(v0)
-80032108: 27c3001c addiu v1,s8,28
-8003210c: 00603021 move a2,v1
-80032110: 00402821 move a1,v0
-80032114: 0c00bbd0 jal 8002ef40 <setup_attribs>
-80032118: 00000000 nop
-8003211c: afc20018 sw v0,24(s8)
-
- linked_list[linked_list_pos++] = 0x09000000;
-80032120: 3c028007 lui v0,0x8007
-80032124: 8c431cd4 lw v1,7380(v0)
-80032128: 3c028007 lui v0,0x8007
-8003212c: 8c421cd8 lw v0,7384(v0)
-80032130: 00000000 nop
-80032134: 24450001 addiu a1,v0,1
-80032138: 3c048007 lui a0,0x8007
-8003213c: ac851cd8 sw a1,7384(a0)
-80032140: 00021080 sll v0,v0,0x2
-80032144: 00621021 addu v0,v1,v0
-80032148: 3c030900 lui v1,0x900
-8003214c: ac430000 sw v1,0(v0)
-
- for(x = 0; x < 3; x++)
-80032150: afc00010 sw zero,16(s8)
-80032154: 100000b0 b 80032418 <GsSortGTPoly3+0x35c>
-80032158: 00000000 nop
- {
- linked_list[linked_list_pos++] =
-8003215c: 3c028007 lui v0,0x8007
-80032160: 8c431cd4 lw v1,7380(v0)
-80032164: 3c028007 lui v0,0x8007
-80032168: 8c421cd8 lw v0,7384(v0)
-8003216c: 00000000 nop
-80032170: 24450001 addiu a1,v0,1
-80032174: 3c048007 lui a0,0x8007
-80032178: ac851cd8 sw a1,7384(a0)
-8003217c: 00021080 sll v0,v0,0x2
-80032180: 00621821 addu v1,v1,v0
- ((x==0)?(pkt<<24):0)|(tpoly3->b[x]<<16)|(tpoly3->g[x]<<8)|(tpoly3->r[x]);
-80032184: 8fc20010 lw v0,16(s8)
-80032188: 00000000 nop
-8003218c: 14400006 bnez v0,800321a8 <GsSortGTPoly3+0xec>
-80032190: 00000000 nop
-80032194: 93c2001c lbu v0,28(s8)
-80032198: 00000000 nop
-8003219c: 00021600 sll v0,v0,0x18
-800321a0: 10000002 b 800321ac <GsSortGTPoly3+0xf0>
-800321a4: 00000000 nop
-800321a8: 00001021 move v0,zero
-800321ac: 8fc50028 lw a1,40(s8)
-800321b0: 8fc40010 lw a0,16(s8)
-800321b4: 00000000 nop
-800321b8: 00a42021 addu a0,a1,a0
-800321bc: 90840006 lbu a0,6(a0)
-800321c0: 00000000 nop
-800321c4: 00042400 sll a0,a0,0x10
-800321c8: 00442025 or a0,v0,a0
-800321cc: 8fc50028 lw a1,40(s8)
-800321d0: 8fc20010 lw v0,16(s8)
-800321d4: 00000000 nop
-800321d8: 00a21021 addu v0,a1,v0
-800321dc: 90420003 lbu v0,3(v0)
-800321e0: 00000000 nop
-800321e4: 00021200 sll v0,v0,0x8
-800321e8: 00821025 or v0,a0,v0
-800321ec: 8fc50028 lw a1,40(s8)
-800321f0: 8fc40010 lw a0,16(s8)
-800321f4: 00000000 nop
-800321f8: 00a42021 addu a0,a1,a0
-800321fc: 90840000 lbu a0,0(a0)
-80032200: 00000000 nop
-80032204: 00441025 or v0,v0,a0
-
- linked_list[linked_list_pos++] = 0x09000000;
-
- for(x = 0; x < 3; x++)
- {
- linked_list[linked_list_pos++] =
-80032208: ac620000 sw v0,0(v1)
- ((x==0)?(pkt<<24):0)|(tpoly3->b[x]<<16)|(tpoly3->g[x]<<8)|(tpoly3->r[x]);
- linked_list[linked_list_pos++] = ((tpoly3->y[x]&0x7ff)<<16)|(tpoly3->x[x]&0x7ff);
-8003220c: 3c028007 lui v0,0x8007
-80032210: 8c431cd4 lw v1,7380(v0)
-80032214: 3c028007 lui v0,0x8007
-80032218: 8c421cd8 lw v0,7384(v0)
-8003221c: 00000000 nop
-80032220: 24450001 addiu a1,v0,1
-80032224: 3c048007 lui a0,0x8007
-80032228: ac851cd8 sw a1,7384(a0)
-8003222c: 00021080 sll v0,v0,0x2
-80032230: 00621821 addu v1,v1,v0
-80032234: 8fc40028 lw a0,40(s8)
-80032238: 8fc20010 lw v0,16(s8)
-8003223c: 00000000 nop
-80032240: 24420008 addiu v0,v0,8
-80032244: 00021040 sll v0,v0,0x1
-80032248: 00821021 addu v0,a0,v0
-8003224c: 84420000 lh v0,0(v0)
-80032250: 00000000 nop
-80032254: 3042ffff andi v0,v0,0xffff
-80032258: 304207ff andi v0,v0,0x7ff
-8003225c: 00022400 sll a0,v0,0x10
-80032260: 8fc50028 lw a1,40(s8)
-80032264: 8fc20010 lw v0,16(s8)
-80032268: 00000000 nop
-8003226c: 24420004 addiu v0,v0,4
-80032270: 00021040 sll v0,v0,0x1
-80032274: 00a21021 addu v0,a1,v0
-80032278: 84420002 lh v0,2(v0)
-8003227c: 00000000 nop
-80032280: 3042ffff andi v0,v0,0xffff
-80032284: 304207ff andi v0,v0,0x7ff
-80032288: 00821025 or v0,a0,v0
-8003228c: ac620000 sw v0,0(v1)
- linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x];
-80032290: 3c028007 lui v0,0x8007
-80032294: 8c431cd4 lw v1,7380(v0)
-80032298: 3c028007 lui v0,0x8007
-8003229c: 8c421cd8 lw v0,7384(v0)
-800322a0: 00000000 nop
-800322a4: 00021080 sll v0,v0,0x2
-800322a8: 00621021 addu v0,v1,v0
-800322ac: 8fc40028 lw a0,40(s8)
-800322b0: 8fc30010 lw v1,16(s8)
-800322b4: 00000000 nop
-800322b8: 00831821 addu v1,a0,v1
-800322bc: 9063001b lbu v1,27(v1)
-800322c0: 00000000 nop
-800322c4: 00031a00 sll v1,v1,0x8
-800322c8: 8fc50028 lw a1,40(s8)
-800322cc: 8fc40010 lw a0,16(s8)
-800322d0: 00000000 nop
-800322d4: 00a42021 addu a0,a1,a0
-800322d8: 9084001e lbu a0,30(a0)
-800322dc: 00000000 nop
-800322e0: 00641825 or v1,v1,a0
-800322e4: ac430000 sw v1,0(v0)
-
- switch(x)
-800322e8: 8fc20010 lw v0,16(s8)
-800322ec: 00000000 nop
-800322f0: 10400006 beqz v0,8003230c <GsSortGTPoly3+0x250>
-800322f4: 00000000 nop
-800322f8: 24030001 li v1,1
-800322fc: 10430026 beq v0,v1,80032398 <GsSortGTPoly3+0x2dc>
-80032300: 00000000 nop
-80032304: 1000003a b 800323f0 <GsSortGTPoly3+0x334>
-80032308: 00000000 nop
- {
- case 0:
- linked_list[linked_list_pos++] |=
-8003230c: 3c028007 lui v0,0x8007
-80032310: 8c441cd4 lw a0,7380(v0)
-80032314: 3c028007 lui v0,0x8007
-80032318: 8c421cd8 lw v0,7384(v0)
-8003231c: 00000000 nop
-80032320: 24450001 addiu a1,v0,1
-80032324: 3c038007 lui v1,0x8007
-80032328: ac651cd8 sw a1,7384(v1)
-8003232c: 00021880 sll v1,v0,0x2
-80032330: 00831821 addu v1,a0,v1
-80032334: 3c048007 lui a0,0x8007
-80032338: 8c841cd4 lw a0,7380(a0)
-8003233c: 00021080 sll v0,v0,0x2
-80032340: 00821021 addu v0,a0,v0
-80032344: 8c420000 lw v0,0(v0)
- get_clutid(tpoly3->cx, tpoly3->cy) << 16;
-80032348: 8fc40028 lw a0,40(s8)
-8003234c: 00000000 nop
-80032350: 84840016 lh a0,22(a0)
-80032354: 00000000 nop
-80032358: 3084ffff andi a0,a0,0xffff
-8003235c: 308403ff andi a0,a0,0x3ff
-80032360: 00042903 sra a1,a0,0x4
-80032364: 8fc40028 lw a0,40(s8)
-80032368: 00000000 nop
-8003236c: 84840018 lh a0,24(a0)
-80032370: 00000000 nop
-80032374: 3084ffff andi a0,a0,0xffff
-80032378: 308401ff andi a0,a0,0x1ff
-8003237c: 00042180 sll a0,a0,0x6
-80032380: 00a42025 or a0,a1,a0
-80032384: 00042400 sll a0,a0,0x10
- linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x];
-
- switch(x)
- {
- case 0:
- linked_list[linked_list_pos++] |=
-80032388: 00441025 or v0,v0,a0
-8003238c: ac620000 sw v0,0(v1)
- get_clutid(tpoly3->cx, tpoly3->cy) << 16;
- break;
-80032390: 1000001d b 80032408 <GsSortGTPoly3+0x34c>
-80032394: 00000000 nop
- case 1:
- linked_list[linked_list_pos++] |=
-80032398: 3c028007 lui v0,0x8007
-8003239c: 8c441cd4 lw a0,7380(v0)
-800323a0: 3c028007 lui v0,0x8007
-800323a4: 8c421cd8 lw v0,7384(v0)
-800323a8: 00000000 nop
-800323ac: 24450001 addiu a1,v0,1
-800323b0: 3c038007 lui v1,0x8007
-800323b4: ac651cd8 sw a1,7384(v1)
-800323b8: 00021880 sll v1,v0,0x2
-800323bc: 00831821 addu v1,a0,v1
-800323c0: 3c048007 lui a0,0x8007
-800323c4: 8c841cd4 lw a0,7380(a0)
-800323c8: 00021080 sll v0,v0,0x2
-800323cc: 00821021 addu v0,a0,v0
-800323d0: 8c440000 lw a0,0(v0)
- md << 16;
-800323d4: 8fc20018 lw v0,24(s8)
-800323d8: 00000000 nop
-800323dc: 00021400 sll v0,v0,0x10
- case 0:
- linked_list[linked_list_pos++] |=
- get_clutid(tpoly3->cx, tpoly3->cy) << 16;
- break;
- case 1:
- linked_list[linked_list_pos++] |=
-800323e0: 00821025 or v0,a0,v0
-800323e4: ac620000 sw v0,0(v1)
- md << 16;
- break;
-800323e8: 10000007 b 80032408 <GsSortGTPoly3+0x34c>
-800323ec: 00000000 nop
- default:
- linked_list_pos++;
-800323f0: 3c028007 lui v0,0x8007
-800323f4: 8c421cd8 lw v0,7384(v0)
-800323f8: 00000000 nop
-800323fc: 24430001 addiu v1,v0,1
-80032400: 3c028007 lui v0,0x8007
-80032404: ac431cd8 sw v1,7384(v0)
-
- md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt);
-
- linked_list[linked_list_pos++] = 0x09000000;
-
- for(x = 0; x < 3; x++)
-80032408: 8fc20010 lw v0,16(s8)
-8003240c: 00000000 nop
-80032410: 24420001 addiu v0,v0,1
-80032414: afc20010 sw v0,16(s8)
-80032418: 8fc20010 lw v0,16(s8)
-8003241c: 00000000 nop
-80032420: 28420003 slti v0,v0,3
-80032424: 1440ff4d bnez v0,8003215c <GsSortGTPoly3+0xa0>
-80032428: 00000000 nop
- default:
- linked_list_pos++;
- }
- }
-
- linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff;
-8003242c: 3c028007 lui v0,0x8007
-80032430: 8c431cd4 lw v1,7380(v0)
-80032434: 8fc20014 lw v0,20(s8)
-80032438: 00000000 nop
-8003243c: 00021080 sll v0,v0,0x2
-80032440: 00621021 addu v0,v1,v0
-80032444: 3c038007 lui v1,0x8007
-80032448: 8c641cd4 lw a0,7380(v1)
-8003244c: 8fc30014 lw v1,20(s8)
-80032450: 00000000 nop
-80032454: 00031880 sll v1,v1,0x2
-80032458: 00831821 addu v1,a0,v1
-8003245c: 8c640000 lw a0,0(v1)
-80032460: 3c038007 lui v1,0x8007
-80032464: 8c651cd4 lw a1,7380(v1)
-80032468: 3c038007 lui v1,0x8007
-8003246c: 8c631cd8 lw v1,7384(v1)
-80032470: 00000000 nop
-80032474: 00031880 sll v1,v1,0x2
-80032478: 00a31821 addu v1,a1,v1
-8003247c: 00602821 move a1,v1
-80032480: 3c0300ff lui v1,0xff
-80032484: 3463ffff ori v1,v1,0xffff
-80032488: 00a31824 and v1,a1,v1
-8003248c: 00831825 or v1,a0,v1
-80032490: ac430000 sw v1,0(v0)
-}
-80032494: 00000000 nop
-80032498: 03c0e821 move sp,s8
-8003249c: 8fbf0024 lw ra,36(sp)
-800324a0: 8fbe0020 lw s8,32(sp)
-800324a4: 27bd0028 addiu sp,sp,40
-800324a8: 03e00008 jr ra
-800324ac: 00000000 nop
-
-800324b0 <QueryPAD>:
-
-unsigned char readpad_vibrations[4][2];
-int querypad_rxrdy = 1;
-
-void QueryPAD(int pad_n, unsigned char *in, unsigned char *out, int len)
-{
-800324b0: 27bdffe0 addiu sp,sp,-32
-800324b4: afbe001c sw s8,28(sp)
-800324b8: 03a0f021 move s8,sp
-800324bc: afc40020 sw a0,32(s8)
-800324c0: afc50024 sw a1,36(s8)
-800324c4: afc60028 sw a2,40(s8)
-800324c8: afc7002c sw a3,44(s8)
- int x;
- int y;
- int i;
- unsigned char TempData;
- int EmuFlag = 0;
-800324cc: afc0000c sw zero,12(s8)
-
- PADSIO_MODE(0) = 0xD;
-800324d0: 3c021f80 lui v0,0x1f80
-800324d4: 34421048 ori v0,v0,0x1048
-800324d8: 2403000d li v1,13
-800324dc: a4430000 sh v1,0(v0)
- PADSIO_BAUD(0) = 0x88;
-800324e0: 3c021f80 lui v0,0x1f80
-800324e4: 3442104e ori v0,v0,0x104e
-800324e8: 24030088 li v1,136
-800324ec: a4430000 sh v1,0(v0)
-
- if(pad_n == 1) PADSIO_CTRL(0) = 0x3003; else PADSIO_CTRL(0) = 0x1003;
-800324f0: 8fc30020 lw v1,32(s8)
-800324f4: 24020001 li v0,1
-800324f8: 14620007 bne v1,v0,80032518 <QueryPAD+0x68>
-800324fc: 00000000 nop
-80032500: 3c021f80 lui v0,0x1f80
-80032504: 3442104a ori v0,v0,0x104a
-80032508: 24033003 li v1,12291
-8003250c: a4430000 sh v1,0(v0)
-80032510: 10000005 b 80032528 <QueryPAD+0x78>
-80032514: 00000000 nop
-80032518: 3c021f80 lui v0,0x1f80
-8003251c: 3442104a ori v0,v0,0x104a
-80032520: 24031003 li v1,4099
-80032524: a4430000 sh v1,0(v0)
-
- /*Get the initial command (usually 0x01 or 0x81)*/
- TempData = *in;
-80032528: 8fc20024 lw v0,36(s8)
-8003252c: 00000000 nop
-80032530: 90420000 lbu v0,0(v0)
-80032534: 00000000 nop
-80032538: a3c20010 sb v0,16(s8)
-
- for(y=0;y<400;y++); /*Slight delay before first transmission*/
-8003253c: afc00004 sw zero,4(s8)
-80032540: 10000005 b 80032558 <QueryPAD+0xa8>
-80032544: 00000000 nop
-80032548: 8fc20004 lw v0,4(s8)
-8003254c: 00000000 nop
-80032550: 24420001 addiu v0,v0,1
-80032554: afc20004 sw v0,4(s8)
-80032558: 8fc20004 lw v0,4(s8)
-8003255c: 00000000 nop
-80032560: 28420190 slti v0,v0,400
-80032564: 1440fff8 bnez v0,80032548 <QueryPAD+0x98>
-80032568: 00000000 nop
-
- for(x = 0; x < len; x++)
-8003256c: afc00000 sw zero,0(s8)
-80032570: 1000007d b 80032768 <QueryPAD+0x2b8>
-80032574: 00000000 nop
- {
- /*Must use timeouts or else program hangs on emulators*/
- if(!EmuFlag)
-80032578: 8fc2000c lw v0,12(s8)
-8003257c: 00000000 nop
-80032580: 14400017 bnez v0,800325e0 <QueryPAD+0x130>
-80032584: 00000000 nop
- {
- for(y=0;y<1000;y++)
-80032588: afc00004 sw zero,4(s8)
-8003258c: 1000000c b 800325c0 <QueryPAD+0x110>
-80032590: 00000000 nop
- {
- /*Wait for TX ready*/
- if(PADSIO_STATUS(0) & 4)break;
-80032594: 3c021f80 lui v0,0x1f80
-80032598: 34421044 ori v0,v0,0x1044
-8003259c: 94420000 lhu v0,0(v0)
-800325a0: 00000000 nop
-800325a4: 30420004 andi v0,v0,0x4
-800325a8: 1440000c bnez v0,800325dc <QueryPAD+0x12c>
-800325ac: 00000000 nop
- for(x = 0; x < len; x++)
- {
- /*Must use timeouts or else program hangs on emulators*/
- if(!EmuFlag)
- {
- for(y=0;y<1000;y++)
-800325b0: 8fc20004 lw v0,4(s8)
-800325b4: 00000000 nop
-800325b8: 24420001 addiu v0,v0,1
-800325bc: afc20004 sw v0,4(s8)
-800325c0: 8fc20004 lw v0,4(s8)
-800325c4: 00000000 nop
-800325c8: 284203e8 slti v0,v0,1000
-800325cc: 1440fff1 bnez v0,80032594 <QueryPAD+0xe4>
-800325d0: 00000000 nop
-800325d4: 10000002 b 800325e0 <QueryPAD+0x130>
-800325d8: 00000000 nop
- {
- /*Wait for TX ready*/
- if(PADSIO_STATUS(0) & 4)break;
-800325dc: 00000000 nop
- }
- }
-
- PADSIO_DATA(0) = *in;
-800325e0: 3c021f80 lui v0,0x1f80
-800325e4: 34421040 ori v0,v0,0x1040
-800325e8: 8fc30024 lw v1,36(s8)
-800325ec: 00000000 nop
-800325f0: 90630000 lbu v1,0(v1)
-800325f4: 00000000 nop
-800325f8: a0430000 sb v1,0(v0)
- in++;
-800325fc: 8fc20024 lw v0,36(s8)
-80032600: 00000000 nop
-80032604: 24420001 addiu v0,v0,1
-80032608: afc20024 sw v0,36(s8)
-
- if(!EmuFlag)
-8003260c: 8fc2000c lw v0,12(s8)
-80032610: 00000000 nop
-80032614: 14400035 bnez v0,800326ec <QueryPAD+0x23c>
-80032618: 00000000 nop
- {
- /*Check ACK only for Memory Cards*/
- if(TempData == 0x81 || x == 0)
-8003261c: 93c30010 lbu v1,16(s8)
-80032620: 24020081 li v0,129
-80032624: 10620005 beq v1,v0,8003263c <QueryPAD+0x18c>
-80032628: 00000000 nop
-8003262c: 8fc20000 lw v0,0(s8)
-80032630: 00000000 nop
-80032634: 14400017 bnez v0,80032694 <QueryPAD+0x1e4>
-80032638: 00000000 nop
- {
- for(y=0;y<2000;y++)
-8003263c: afc00004 sw zero,4(s8)
-80032640: 1000000c b 80032674 <QueryPAD+0x1c4>
-80032644: 00000000 nop
- {
- /*Check for ACK signal*/
- if(PADSIO_STATUS(0) & 128)break;
-80032648: 3c021f80 lui v0,0x1f80
-8003264c: 34421044 ori v0,v0,0x1044
-80032650: 94420000 lhu v0,0(v0)
-80032654: 00000000 nop
-80032658: 30420080 andi v0,v0,0x80
-8003265c: 1440000c bnez v0,80032690 <QueryPAD+0x1e0>
-80032660: 00000000 nop
- if(!EmuFlag)
- {
- /*Check ACK only for Memory Cards*/
- if(TempData == 0x81 || x == 0)
- {
- for(y=0;y<2000;y++)
-80032664: 8fc20004 lw v0,4(s8)
-80032668: 00000000 nop
-8003266c: 24420001 addiu v0,v0,1
-80032670: afc20004 sw v0,4(s8)
-80032674: 8fc20004 lw v0,4(s8)
-80032678: 00000000 nop
-8003267c: 284207d0 slti v0,v0,2000
-80032680: 1440fff1 bnez v0,80032648 <QueryPAD+0x198>
-80032684: 00000000 nop
-80032688: 10000002 b 80032694 <QueryPAD+0x1e4>
-8003268c: 00000000 nop
- {
- /*Check for ACK signal*/
- if(PADSIO_STATUS(0) & 128)break;
-80032690: 00000000 nop
- }
- }
-
- for(i=0;i<100;i++)
-80032694: afc00008 sw zero,8(s8)
-80032698: 1000000c b 800326cc <QueryPAD+0x21c>
-8003269c: 00000000 nop
- {
- /*Read RX status flag, required for Xebra*/
- if(PADSIO_STATUS(0) & 2)break;
-800326a0: 3c021f80 lui v0,0x1f80
-800326a4: 34421044 ori v0,v0,0x1044
-800326a8: 94420000 lhu v0,0(v0)
-800326ac: 00000000 nop
-800326b0: 30420002 andi v0,v0,0x2
-800326b4: 1440000c bnez v0,800326e8 <QueryPAD+0x238>
-800326b8: 00000000 nop
- /*Check for ACK signal*/
- if(PADSIO_STATUS(0) & 128)break;
- }
- }
-
- for(i=0;i<100;i++)
-800326bc: 8fc20008 lw v0,8(s8)
-800326c0: 00000000 nop
-800326c4: 24420001 addiu v0,v0,1
-800326c8: afc20008 sw v0,8(s8)
-800326cc: 8fc20008 lw v0,8(s8)
-800326d0: 00000000 nop
-800326d4: 28420064 slti v0,v0,100
-800326d8: 1440fff1 bnez v0,800326a0 <QueryPAD+0x1f0>
-800326dc: 00000000 nop
-800326e0: 10000002 b 800326ec <QueryPAD+0x23c>
-800326e4: 00000000 nop
- {
- /*Read RX status flag, required for Xebra*/
- if(PADSIO_STATUS(0) & 2)break;
-800326e8: 00000000 nop
- }
- }
-
- *out = PADSIO_DATA(0);
-800326ec: 3c021f80 lui v0,0x1f80
-800326f0: 34421040 ori v0,v0,0x1040
-800326f4: 90430000 lbu v1,0(v0)
-800326f8: 8fc20028 lw v0,40(s8)
-800326fc: 00000000 nop
-80032700: a0430000 sb v1,0(v0)
-
- /*This is emulator, valid data was received without ACK, ePSXe and PCSX*/
- if((x == 0) && (y > 1900) && (*out != 0xFF))
-80032704: 8fc20000 lw v0,0(s8)
-80032708: 00000000 nop
-8003270c: 1440000e bnez v0,80032748 <QueryPAD+0x298>
-80032710: 00000000 nop
-80032714: 8fc20004 lw v0,4(s8)
-80032718: 00000000 nop
-8003271c: 2842076d slti v0,v0,1901
-80032720: 14400009 bnez v0,80032748 <QueryPAD+0x298>
-80032724: 00000000 nop
-80032728: 8fc20028 lw v0,40(s8)
-8003272c: 00000000 nop
-80032730: 90430000 lbu v1,0(v0)
-80032734: 240200ff li v0,255
-80032738: 10620003 beq v1,v0,80032748 <QueryPAD+0x298>
-8003273c: 00000000 nop
- {
- EmuFlag = 1;
-80032740: 24020001 li v0,1
-80032744: afc2000c sw v0,12(s8)
- }
-
- out++;
-80032748: 8fc20028 lw v0,40(s8)
-8003274c: 00000000 nop
-80032750: 24420001 addiu v0,v0,1
-80032754: afc20028 sw v0,40(s8)
- /*Get the initial command (usually 0x01 or 0x81)*/
- TempData = *in;
-
- for(y=0;y<400;y++); /*Slight delay before first transmission*/
-
- for(x = 0; x < len; x++)
-80032758: 8fc20000 lw v0,0(s8)
-8003275c: 00000000 nop
-80032760: 24420001 addiu v0,v0,1
-80032764: afc20000 sw v0,0(s8)
-80032768: 8fc30000 lw v1,0(s8)
-8003276c: 8fc2002c lw v0,44(s8)
-80032770: 00000000 nop
-80032774: 0062102a slt v0,v1,v0
-80032778: 1440ff7f bnez v0,80032578 <QueryPAD+0xc8>
-8003277c: 00000000 nop
- }
-
- out++;
- }
-
- PADSIO_CTRL(0) = 0;
-80032780: 3c021f80 lui v0,0x1f80
-80032784: 3442104a ori v0,v0,0x104a
-80032788: a4400000 sh zero,0(v0)
-}
-8003278c: 00000000 nop
-80032790: 03c0e821 move sp,s8
-80032794: 8fbe001c lw s8,28(sp)
-80032798: 27bd0020 addiu sp,sp,32
-8003279c: 03e00008 jr ra
-800327a0: 00000000 nop
-
-800327a4 <pad_read_raw>:
-
-void pad_read_raw(int pad_n, unsigned char *arr)
-{
-800327a4: 27bdffd0 addiu sp,sp,-48
-800327a8: afbf002c sw ra,44(sp)
-800327ac: afbe0028 sw s8,40(sp)
-800327b0: 03a0f021 move s8,sp
-800327b4: afc40030 sw a0,48(s8)
-800327b8: afc50034 sw a1,52(s8)
- // arr must be at least 16 bytes long...
-
- unsigned char pad_cmd[PAD_READ_RAW_SIZE] = {1,0x42,0,0,0};
-800327bc: afc00010 sw zero,16(s8)
-800327c0: afc00014 sw zero,20(s8)
-800327c4: afc00018 sw zero,24(s8)
-800327c8: afc0001c sw zero,28(s8)
-800327cc: afc00020 sw zero,32(s8)
-800327d0: a3c00024 sb zero,36(s8)
-800327d4: 24020001 li v0,1
-800327d8: a3c20010 sb v0,16(s8)
-800327dc: 24020042 li v0,66
-800327e0: a3c20011 sb v0,17(s8)
-
- pad_cmd[3] = readpad_vibrations[pad_n][0];
-800327e4: 3c028007 lui v0,0x8007
-800327e8: 8fc30030 lw v1,48(s8)
-800327ec: 00000000 nop
-800327f0: 00031840 sll v1,v1,0x1
-800327f4: 24421d60 addiu v0,v0,7520
-800327f8: 00621021 addu v0,v1,v0
-800327fc: 90420000 lbu v0,0(v0)
-80032800: 00000000 nop
-80032804: a3c20013 sb v0,19(s8)
- pad_cmd[4] = readpad_vibrations[pad_n][1];
-80032808: 3c028007 lui v0,0x8007
-8003280c: 8fc30030 lw v1,48(s8)
-80032810: 00000000 nop
-80032814: 00031840 sll v1,v1,0x1
-80032818: 24421d60 addiu v0,v0,7520
-8003281c: 00621021 addu v0,v1,v0
-80032820: 90420001 lbu v0,1(v0)
-80032824: 00000000 nop
-80032828: a3c20014 sb v0,20(s8)
-
- QueryPAD(pad_n, pad_cmd, arr, sizeof(pad_cmd));
-8003282c: 24070015 li a3,21
-80032830: 8fc60034 lw a2,52(s8)
-80032834: 27c20010 addiu v0,s8,16
-80032838: 00402821 move a1,v0
-8003283c: 8fc40030 lw a0,48(s8)
-80032840: 0c00c92c jal 800324b0 <QueryPAD>
-80032844: 00000000 nop
-}
-80032848: 00000000 nop
-8003284c: 03c0e821 move sp,s8
-80032850: 8fbf002c lw ra,44(sp)
-80032854: 8fbe0028 lw s8,40(sp)
-80032858: 27bd0030 addiu sp,sp,48
-8003285c: 03e00008 jr ra
-80032860: 00000000 nop
-
-80032864 <pad_escape_mode>:
-
-void pad_escape_mode(int pad_n, int enable)
-{
-80032864: 27bdffe0 addiu sp,sp,-32
-80032868: afbf001c sw ra,28(sp)
-8003286c: afbe0018 sw s8,24(sp)
-80032870: 03a0f021 move s8,sp
-80032874: afc40020 sw a0,32(s8)
-80032878: afc50024 sw a1,36(s8)
- unsigned char pad_cmd[] = {1,0x43,0,enable?1:0,0};
-8003287c: 24020001 li v0,1
-80032880: a3c20010 sb v0,16(s8)
-80032884: 24020043 li v0,67
-80032888: a3c20011 sb v0,17(s8)
-8003288c: a3c00012 sb zero,18(s8)
-80032890: 8fc20024 lw v0,36(s8)
-80032894: 00000000 nop
-80032898: 0002102b sltu v0,zero,v0
-8003289c: 304200ff andi v0,v0,0xff
-800328a0: a3c20013 sb v0,19(s8)
-800328a4: a3c00014 sb zero,20(s8)
-
- QueryPAD(pad_n, pad_cmd, NULL, sizeof(pad_cmd));
-800328a8: 24070005 li a3,5
-800328ac: 00003021 move a2,zero
-800328b0: 27c20010 addiu v0,s8,16
-800328b4: 00402821 move a1,v0
-800328b8: 8fc40020 lw a0,32(s8)
-800328bc: 0c00c92c jal 800324b0 <QueryPAD>
-800328c0: 00000000 nop
-}
-800328c4: 00000000 nop
-800328c8: 03c0e821 move sp,s8
-800328cc: 8fbf001c lw ra,28(sp)
-800328d0: 8fbe0018 lw s8,24(sp)
-800328d4: 27bd0020 addiu sp,sp,32
-800328d8: 03e00008 jr ra
-800328dc: 00000000 nop
-
-800328e0 <pad_enable_vibration>:
-
-void pad_enable_vibration(int pad_n)
-{
-800328e0: 27bdffd8 addiu sp,sp,-40
-800328e4: afbf0024 sw ra,36(sp)
-800328e8: afbe0020 sw s8,32(sp)
-800328ec: 03a0f021 move s8,sp
-800328f0: afc40028 sw a0,40(s8)
- unsigned char pad_cmd[] = {1, 0x4d, 0, 0, 1, 0xff, 0xff, 0xff, 0xff};
-800328f4: 3c028004 lui v0,0x8004
-800328f8: 2443fda0 addiu v1,v0,-608
-800328fc: 88630003 lwl v1,3(v1)
-80032900: 00000000 nop
-80032904: 9843fda0 lwr v1,-608(v0)
-80032908: 00000000 nop
-8003290c: 00602021 move a0,v1
-80032910: 2443fda0 addiu v1,v0,-608
-80032914: 88650007 lwl a1,7(v1)
-80032918: 00000000 nop
-8003291c: 98650004 lwr a1,4(v1)
-80032920: 00000000 nop
-80032924: 00a01821 move v1,a1
-80032928: afc40010 sw a0,16(s8)
-8003292c: afc30014 sw v1,20(s8)
-80032930: 2442fda0 addiu v0,v0,-608
-80032934: 90420008 lbu v0,8(v0)
-80032938: 00000000 nop
-8003293c: a3c20018 sb v0,24(s8)
-
- pad_escape_mode(pad_n, 1); // Enter escape / configuration mode
-80032940: 24050001 li a1,1
-80032944: 8fc40028 lw a0,40(s8)
-80032948: 0c00ca19 jal 80032864 <pad_escape_mode>
-8003294c: 00000000 nop
- QueryPAD(pad_n, pad_cmd, NULL, sizeof(pad_cmd));
-80032950: 24070009 li a3,9
-80032954: 00003021 move a2,zero
-80032958: 27c20010 addiu v0,s8,16
-8003295c: 00402821 move a1,v0
-80032960: 8fc40028 lw a0,40(s8)
-80032964: 0c00c92c jal 800324b0 <QueryPAD>
-80032968: 00000000 nop
- pad_escape_mode(pad_n, 0); // Exit escape / configuration mode
-8003296c: 00002821 move a1,zero
-80032970: 8fc40028 lw a0,40(s8)
-80032974: 0c00ca19 jal 80032864 <pad_escape_mode>
-80032978: 00000000 nop
-}
-8003297c: 00000000 nop
-80032980: 03c0e821 move sp,s8
-80032984: 8fbf0024 lw ra,36(sp)
-80032988: 8fbe0020 lw s8,32(sp)
-8003298c: 27bd0028 addiu sp,sp,40
-80032990: 03e00008 jr ra
-80032994: 00000000 nop
-
-80032998 <pad_set_vibration>:
-
-void pad_set_vibration(int pad_n, unsigned char small, unsigned char big)
-{
-80032998: 27bdfff8 addiu sp,sp,-8
-8003299c: afbe0004 sw s8,4(sp)
-800329a0: 03a0f021 move s8,sp
-800329a4: afc40008 sw a0,8(s8)
-800329a8: 00a01821 move v1,a1
-800329ac: 00c01021 move v0,a2
-800329b0: a3c3000c sb v1,12(s8)
-800329b4: a3c20010 sb v0,16(s8)
- if(pad_n >= 0 && pad_n <= 3)
-800329b8: 8fc20008 lw v0,8(s8)
-800329bc: 00000000 nop
-800329c0: 04400018 bltz v0,80032a24 <pad_set_vibration+0x8c>
-800329c4: 00000000 nop
-800329c8: 8fc20008 lw v0,8(s8)
-800329cc: 00000000 nop
-800329d0: 28420004 slti v0,v0,4
-800329d4: 10400013 beqz v0,80032a24 <pad_set_vibration+0x8c>
-800329d8: 00000000 nop
- {
- readpad_vibrations[pad_n][0] = small;
-800329dc: 3c028007 lui v0,0x8007
-800329e0: 8fc30008 lw v1,8(s8)
-800329e4: 00000000 nop
-800329e8: 00031840 sll v1,v1,0x1
-800329ec: 24421d60 addiu v0,v0,7520
-800329f0: 00621021 addu v0,v1,v0
-800329f4: 93c3000c lbu v1,12(s8)
-800329f8: 00000000 nop
-800329fc: a0430000 sb v1,0(v0)
- readpad_vibrations[pad_n][1] = big;
-80032a00: 3c028007 lui v0,0x8007
-80032a04: 8fc30008 lw v1,8(s8)
-80032a08: 00000000 nop
-80032a0c: 00031840 sll v1,v1,0x1
-80032a10: 24421d60 addiu v0,v0,7520
-80032a14: 00621021 addu v0,v1,v0
-80032a18: 93c30010 lbu v1,16(s8)
-80032a1c: 00000000 nop
-80032a20: a0430001 sb v1,1(v0)
- }
-}
-80032a24: 00000000 nop
-80032a28: 03c0e821 move sp,s8
-80032a2c: 8fbe0004 lw s8,4(sp)
-80032a30: 27bd0008 addiu sp,sp,8
-80032a34: 03e00008 jr ra
-80032a38: 00000000 nop
-
-80032a3c <McReadSector>:
- MEMCARD_READ_CMD = 'R',
- MEMCARD_WRITE_CMD = 'W'
-};
-
-unsigned char McReadSector(int card_slot, int sector, unsigned char *buffer)
-{
-80032a3c: 27bdffe8 addiu sp,sp,-24
-80032a40: afbf0014 sw ra,20(sp)
-80032a44: afbe0010 sw s8,16(sp)
-80032a48: 03a0f021 move s8,sp
-80032a4c: afc40018 sw a0,24(s8)
-80032a50: afc5001c sw a1,28(s8)
-80032a54: afc60020 sw a2,32(s8)
- memset(&card_cmd[0], 0, 140);
-80032a58: 2406008c li a2,140
-80032a5c: 00002821 move a1,zero
-80032a60: 3c028007 lui v0,0x8007
-80032a64: 24448b60 addiu a0,v0,-29856
-80032a68: 0c00d7ab jal 80035eac <memset>
-80032a6c: 00000000 nop
-
- card_cmd[0] = MEMCARD_ACCESS_CMD; /*MC access*/
-80032a70: 3c028007 lui v0,0x8007
-80032a74: 2403ff81 li v1,-127
-80032a78: a0438b60 sb v1,-29856(v0)
- card_cmd[1] = MEMCARD_READ_CMD; /*Read command*/
-80032a7c: 3c028007 lui v0,0x8007
-80032a80: 24428b60 addiu v0,v0,-29856
-80032a84: 24030052 li v1,82
-80032a88: a0430001 sb v1,1(v0)
-
- /*Copy frame number to command*/
- card_cmd[4] = sector >> 8; /*Frame MSB*/
-80032a8c: 8fc2001c lw v0,28(s8)
-80032a90: 00000000 nop
-80032a94: 00021203 sra v0,v0,0x8
-80032a98: 304300ff andi v1,v0,0xff
-80032a9c: 3c028007 lui v0,0x8007
-80032aa0: 24428b60 addiu v0,v0,-29856
-80032aa4: a0430004 sb v1,4(v0)
- card_cmd[5] = sector & 0xFF; /*Frame LSB*/
-80032aa8: 8fc2001c lw v0,28(s8)
-80032aac: 00000000 nop
-80032ab0: 304300ff andi v1,v0,0xff
-80032ab4: 3c028007 lui v0,0x8007
-80032ab8: 24428b60 addiu v0,v0,-29856
-80032abc: a0430005 sb v1,5(v0)
-
- memset(arr,0,140);
-80032ac0: 2406008c li a2,140
-80032ac4: 00002821 move a1,zero
-80032ac8: 3c028007 lui v0,0x8007
-80032acc: 24448bec addiu a0,v0,-29716
-80032ad0: 0c00d7ab jal 80035eac <memset>
-80032ad4: 00000000 nop
- QueryPAD(card_slot, card_cmd, arr, sizeof(card_cmd));
-80032ad8: 2407008c li a3,140
-80032adc: 3c028007 lui v0,0x8007
-80032ae0: 24468bec addiu a2,v0,-29716
-80032ae4: 3c028007 lui v0,0x8007
-80032ae8: 24458b60 addiu a1,v0,-29856
-80032aec: 8fc40018 lw a0,24(s8)
-80032af0: 0c00c92c jal 800324b0 <QueryPAD>
-80032af4: 00000000 nop
-
- /*Copy received frame data*/
- memcpy(buffer, &arr[10], 128);
-80032af8: 24060080 li a2,128
-80032afc: 3c028007 lui v0,0x8007
-80032b00: 24458bf6 addiu a1,v0,-29706
-80032b04: 8fc40020 lw a0,32(s8)
-80032b08: 0c00d75e jal 80035d78 <memcpy>
-80032b0c: 00000000 nop
-
- // Positions 6 and 7 belong to ACK's
- // They always should be 0x5C and 0x5D, respectively
- // On the other hand, positions 8 and 9 return MSB and LSB sectors.
-
- if(arr[6] != 0x5C)
-80032b10: 3c028007 lui v0,0x8007
-80032b14: 24428bec addiu v0,v0,-29716
-80032b18: 90430006 lbu v1,6(v0)
-80032b1c: 2402005c li v0,92
-80032b20: 10620004 beq v1,v0,80032b34 <McReadSector+0xf8>
-80032b24: 00000000 nop
- {
- dprintf("Error when writing from Memory Card!\n");
- dprintf("BAD ACK1! Expected 0x5C, got %d\n",arr[6]);
- return '1';
-80032b28: 24020031 li v0,49
-80032b2c: 10000025 b 80032bc4 <McReadSector+0x188>
-80032b30: 00000000 nop
- }
-
- if(arr[7] != 0x5D)
-80032b34: 3c028007 lui v0,0x8007
-80032b38: 24428bec addiu v0,v0,-29716
-80032b3c: 90430007 lbu v1,7(v0)
-80032b40: 2402005d li v0,93
-80032b44: 10620004 beq v1,v0,80032b58 <McReadSector+0x11c>
-80032b48: 00000000 nop
- {
- dprintf("Error when writing from Memory Card!\n");
- dprintf("BAD ACK2! Expected 0x5D, got %d\n",arr[7]);
- return '2';
-80032b4c: 24020032 li v0,50
-80032b50: 1000001c b 80032bc4 <McReadSector+0x188>
-80032b54: 00000000 nop
- }
-
- if(arr[8] != card_cmd[4])
-80032b58: 3c028007 lui v0,0x8007
-80032b5c: 24428bec addiu v0,v0,-29716
-80032b60: 90430008 lbu v1,8(v0)
-80032b64: 3c028007 lui v0,0x8007
-80032b68: 24428b60 addiu v0,v0,-29856
-80032b6c: 90420004 lbu v0,4(v0)
-80032b70: 00000000 nop
-80032b74: 10620004 beq v1,v0,80032b88 <McReadSector+0x14c>
-80032b78: 00000000 nop
- {
- dprintf("Error when writing from Memory Card!\n");
- dprintf("BAD MSB sector! Expected %d, got %d\n",card_cmd[4],arr[8]);
- return 'M';
-80032b7c: 2402004d li v0,77
-80032b80: 10000010 b 80032bc4 <McReadSector+0x188>
-80032b84: 00000000 nop
- }
-
- if(arr[9] != card_cmd[5])
-80032b88: 3c028007 lui v0,0x8007
-80032b8c: 24428bec addiu v0,v0,-29716
-80032b90: 90430009 lbu v1,9(v0)
-80032b94: 3c028007 lui v0,0x8007
-80032b98: 24428b60 addiu v0,v0,-29856
-80032b9c: 90420005 lbu v0,5(v0)
-80032ba0: 00000000 nop
-80032ba4: 10620004 beq v1,v0,80032bb8 <McReadSector+0x17c>
-80032ba8: 00000000 nop
- {
- dprintf("Error when writing from Memory Card!\n");
- dprintf("BAD LSB sector! Expected %d, got %d\n",card_cmd[5],arr[9]);
- return 'L';
-80032bac: 2402004c li v0,76
-80032bb0: 10000004 b 80032bc4 <McReadSector+0x188>
-80032bb4: 00000000 nop
- }
-
- /*Return RW status*/
- return arr[139];
-80032bb8: 3c028007 lui v0,0x8007
-80032bbc: 24428bec addiu v0,v0,-29716
-80032bc0: 9042008b lbu v0,139(v0)
-}
-80032bc4: 03c0e821 move sp,s8
-80032bc8: 8fbf0014 lw ra,20(sp)
-80032bcc: 8fbe0010 lw s8,16(sp)
-80032bd0: 27bd0018 addiu sp,sp,24
-80032bd4: 03e00008 jr ra
-80032bd8: 00000000 nop
-
-80032bdc <McWriteSector>:
- * @return
- *
- */
-
-unsigned char McWriteSector(int card_slot, int sector, unsigned char *buffer)
-{
-80032bdc: 27bdffe0 addiu sp,sp,-32
-80032be0: afbf001c sw ra,28(sp)
-80032be4: afbe0018 sw s8,24(sp)
-80032be8: 03a0f021 move s8,sp
-80032bec: afc40020 sw a0,32(s8)
-80032bf0: afc50024 sw a1,36(s8)
-80032bf4: afc60028 sw a2,40(s8)
- int i;
-
- memset(&card_cmd[0], 0, 140);
-80032bf8: 2406008c li a2,140
-80032bfc: 00002821 move a1,zero
-80032c00: 3c028007 lui v0,0x8007
-80032c04: 24448b60 addiu a0,v0,-29856
-80032c08: 0c00d7ab jal 80035eac <memset>
-80032c0c: 00000000 nop
-
- card_cmd[0] = MEMCARD_ACCESS_CMD; /*MC access*/
-80032c10: 3c028007 lui v0,0x8007
-80032c14: 2403ff81 li v1,-127
-80032c18: a0438b60 sb v1,-29856(v0)
- card_cmd[1] = MEMCARD_WRITE_CMD; /*Write command*/
-80032c1c: 3c028007 lui v0,0x8007
-80032c20: 24428b60 addiu v0,v0,-29856
-80032c24: 24030057 li v1,87
-80032c28: a0430001 sb v1,1(v0)
-
- /*Copy frame number to command*/
- card_cmd[4] = sector >> 8; /*Frame MSB*/
-80032c2c: 8fc20024 lw v0,36(s8)
-80032c30: 00000000 nop
-80032c34: 00021203 sra v0,v0,0x8
-80032c38: 304300ff andi v1,v0,0xff
-80032c3c: 3c028007 lui v0,0x8007
-80032c40: 24428b60 addiu v0,v0,-29856
-80032c44: a0430004 sb v1,4(v0)
- card_cmd[5] = sector & 0xFF; /*Frame LSB*/
-80032c48: 8fc20024 lw v0,36(s8)
-80032c4c: 00000000 nop
-80032c50: 304300ff andi v1,v0,0xff
-80032c54: 3c028007 lui v0,0x8007
-80032c58: 24428b60 addiu v0,v0,-29856
-80032c5c: a0430005 sb v1,5(v0)
-
- memcpy(&card_cmd[6], buffer, 128);
-80032c60: 24060080 li a2,128
-80032c64: 8fc50028 lw a1,40(s8)
-80032c68: 3c028007 lui v0,0x8007
-80032c6c: 24448b66 addiu a0,v0,-29850
-80032c70: 0c00d75e jal 80035d78 <memcpy>
-80032c74: 00000000 nop
-
- /* Compute checksum */
- for(i = 4, card_cmd[134] = 0; i < 134; i++)
-80032c78: 24020004 li v0,4
-80032c7c: afc20010 sw v0,16(s8)
-80032c80: 3c028007 lui v0,0x8007
-80032c84: 24428b60 addiu v0,v0,-29856
-80032c88: a0400086 sb zero,134(v0)
-80032c8c: 10000014 b 80032ce0 <McWriteSector+0x104>
-80032c90: 00000000 nop
- card_cmd[134] ^= card_cmd[i];
-80032c94: 3c028007 lui v0,0x8007
-80032c98: 24428b60 addiu v0,v0,-29856
-80032c9c: 90430086 lbu v1,134(v0)
-80032ca0: 3c028007 lui v0,0x8007
-80032ca4: 24448b60 addiu a0,v0,-29856
-80032ca8: 8fc20010 lw v0,16(s8)
-80032cac: 00000000 nop
-80032cb0: 00821021 addu v0,a0,v0
-80032cb4: 90420000 lbu v0,0(v0)
-80032cb8: 00000000 nop
-80032cbc: 00621026 xor v0,v1,v0
-80032cc0: 304300ff andi v1,v0,0xff
-80032cc4: 3c028007 lui v0,0x8007
-80032cc8: 24428b60 addiu v0,v0,-29856
-80032ccc: a0430086 sb v1,134(v0)
- card_cmd[5] = sector & 0xFF; /*Frame LSB*/
-
- memcpy(&card_cmd[6], buffer, 128);
-
- /* Compute checksum */
- for(i = 4, card_cmd[134] = 0; i < 134; i++)
-80032cd0: 8fc20010 lw v0,16(s8)
-80032cd4: 00000000 nop
-80032cd8: 24420001 addiu v0,v0,1
-80032cdc: afc20010 sw v0,16(s8)
-80032ce0: 8fc20010 lw v0,16(s8)
-80032ce4: 00000000 nop
-80032ce8: 28420086 slti v0,v0,134
-80032cec: 1440ffe9 bnez v0,80032c94 <McWriteSector+0xb8>
-80032cf0: 00000000 nop
- card_cmd[134] ^= card_cmd[i];
-
- memset(arr,0,140);
-80032cf4: 2406008c li a2,140
-80032cf8: 00002821 move a1,zero
-80032cfc: 3c028007 lui v0,0x8007
-80032d00: 24448bec addiu a0,v0,-29716
-80032d04: 0c00d7ab jal 80035eac <memset>
-80032d08: 00000000 nop
- QueryPAD(card_slot, card_cmd, arr, sizeof(card_cmd));
-80032d0c: 2407008c li a3,140
-80032d10: 3c028007 lui v0,0x8007
-80032d14: 24468bec addiu a2,v0,-29716
-80032d18: 3c028007 lui v0,0x8007
-80032d1c: 24458b60 addiu a1,v0,-29856
-80032d20: 8fc40020 lw a0,32(s8)
-80032d24: 0c00c92c jal 800324b0 <QueryPAD>
-80032d28: 00000000 nop
-
- if(arr[135] != 0x5C)
-80032d2c: 3c028007 lui v0,0x8007
-80032d30: 24428bec addiu v0,v0,-29716
-80032d34: 90430087 lbu v1,135(v0)
-80032d38: 2402005c li v0,92
-80032d3c: 10620004 beq v1,v0,80032d50 <McWriteSector+0x174>
-80032d40: 00000000 nop
- dprintf("Error when writing from Memory Card!\n");
- dprintf("BAD ACK1! Expected 0x5C, got %d\n",arr[135]);
- // Positions 6 and 7 belong to ACK's
- // They always should be 0x5C and 0x5D, respectively
- // On the other hand, positions 8 and 9 return MSB and LSB sectors.
- return '1';
-80032d44: 24020031 li v0,49
-80032d48: 1000000d b 80032d80 <McWriteSector+0x1a4>
-80032d4c: 00000000 nop
- }
-
- if(arr[136] != 0x5D)
-80032d50: 3c028007 lui v0,0x8007
-80032d54: 24428bec addiu v0,v0,-29716
-80032d58: 90430088 lbu v1,136(v0)
-80032d5c: 2402005d li v0,93
-80032d60: 10620004 beq v1,v0,80032d74 <McWriteSector+0x198>
-80032d64: 00000000 nop
- {
- dprintf("Error when writing from Memory Card!\n");
- dprintf("BAD ACK1! Expected 0x5C, got %d\n",arr[136]);
- return '2';
-80032d68: 24020032 li v0,50
-80032d6c: 10000004 b 80032d80 <McWriteSector+0x1a4>
-80032d70: 00000000 nop
- dprintf("BAD LSB Sector! Expected %d, got %d\n",card_cmd[5],arr[5]);
- return 0;
- } */
-
- /*Return RW status*/
- return arr[137];
-80032d74: 3c028007 lui v0,0x8007
-80032d78: 24428bec addiu v0,v0,-29716
-80032d7c: 90420089 lbu v0,137(v0)
-}
-80032d80: 03c0e821 move sp,s8
-80032d84: 8fbf001c lw ra,28(sp)
-80032d88: 8fbe0018 lw s8,24(sp)
-80032d8c: 27bd0020 addiu sp,sp,32
-80032d90: 03e00008 jr ra
-80032d94: 00000000 nop
-
-80032d98 <McGetStatus>:
-
-MEMCARD_STATUS McGetStatus(int card_slot)
-{
-80032d98: 27bdffe0 addiu sp,sp,-32
-80032d9c: afbf001c sw ra,28(sp)
-80032da0: afbe0018 sw s8,24(sp)
-80032da4: 03a0f021 move s8,sp
-80032da8: afc40020 sw a0,32(s8)
- unsigned int status = MEMCARD_STATUS_UNKNOWN;
-80032dac: afc00010 sw zero,16(s8)
-
- memset(&card_cmd[0], 0, 140);
-80032db0: 2406008c li a2,140
-80032db4: 00002821 move a1,zero
-80032db8: 3c028007 lui v0,0x8007
-80032dbc: 24448b60 addiu a0,v0,-29856
-80032dc0: 0c00d7ab jal 80035eac <memset>
-80032dc4: 00000000 nop
-
- card_cmd[0] = 0x81; /*MC access*/
-80032dc8: 3c028007 lui v0,0x8007
-80032dcc: 2403ff81 li v1,-127
-80032dd0: a0438b60 sb v1,-29856(v0)
- card_cmd[1] = 0x52; /*Read command*/
-80032dd4: 3c028007 lui v0,0x8007
-80032dd8: 24428b60 addiu v0,v0,-29856
-80032ddc: 24030052 li v1,82
-80032de0: a0430001 sb v1,1(v0)
-
- /*Copy frame number to command*/
- card_cmd[4] = 0;//sector >> 8; /*Frame MSB*/
-80032de4: 3c028007 lui v0,0x8007
-80032de8: 24428b60 addiu v0,v0,-29856
-80032dec: a0400004 sb zero,4(v0)
- card_cmd[5] = 0;//sector & 0xFF; /*Frame LSB*/
-80032df0: 3c028007 lui v0,0x8007
-80032df4: 24428b60 addiu v0,v0,-29856
-80032df8: a0400005 sb zero,5(v0)
-
- QueryPAD(card_slot, card_cmd, arr, sizeof(card_cmd));
-80032dfc: 2407008c li a3,140
-80032e00: 3c028007 lui v0,0x8007
-80032e04: 24468bec addiu a2,v0,-29716
-80032e08: 3c028007 lui v0,0x8007
-80032e0c: 24458b60 addiu a1,v0,-29856
-80032e10: 8fc40020 lw a0,32(s8)
-80032e14: 0c00c92c jal 800324b0 <QueryPAD>
-80032e18: 00000000 nop
-
- if(arr[2] == 0x5a && arr[3] == 0x5d)
-80032e1c: 3c028007 lui v0,0x8007
-80032e20: 24428bec addiu v0,v0,-29716
-80032e24: 90430002 lbu v1,2(v0)
-80032e28: 2402005a li v0,90
-80032e2c: 1462000b bne v1,v0,80032e5c <McGetStatus+0xc4>
-80032e30: 00000000 nop
-80032e34: 3c028007 lui v0,0x8007
-80032e38: 24428bec addiu v0,v0,-29716
-80032e3c: 90430003 lbu v1,3(v0)
-80032e40: 2402005d li v0,93
-80032e44: 14620005 bne v1,v0,80032e5c <McGetStatus+0xc4>
-80032e48: 00000000 nop
- {
- status |= MEMCARD_CONNECTED;
-80032e4c: 8fc20010 lw v0,16(s8)
-80032e50: 00000000 nop
-80032e54: 34420001 ori v0,v0,0x1
-80032e58: afc20010 sw v0,16(s8)
- }
-
- if(arr[6] == 'M' && arr[7] == 'C')
-80032e5c: 3c028007 lui v0,0x8007
-80032e60: 24428bec addiu v0,v0,-29716
-80032e64: 90430006 lbu v1,6(v0)
-80032e68: 2402004d li v0,77
-80032e6c: 1462000b bne v1,v0,80032e9c <McGetStatus+0x104>
-80032e70: 00000000 nop
-80032e74: 3c028007 lui v0,0x8007
-80032e78: 24428bec addiu v0,v0,-29716
-80032e7c: 90430007 lbu v1,7(v0)
-80032e80: 24020043 li v0,67
-80032e84: 14620005 bne v1,v0,80032e9c <McGetStatus+0x104>
-80032e88: 00000000 nop
- {
- status |= MEMCARD_FORMATTED;
-80032e8c: 8fc20010 lw v0,16(s8)
-80032e90: 00000000 nop
-80032e94: 34420002 ori v0,v0,0x2
-80032e98: afc20010 sw v0,16(s8)
- }
-
- return status;
-80032e9c: 8fc20010 lw v0,16(s8)
-}
-80032ea0: 03c0e821 move sp,s8
-80032ea4: 8fbf001c lw ra,28(sp)
-80032ea8: 8fbe0018 lw s8,24(sp)
-80032eac: 27bd0020 addiu sp,sp,32
-80032eb0: 03e00008 jr ra
-80032eb4: 00000000 nop
-
-80032eb8 <SsVoiceVol>:
-#define DPCR *((unsigned int*)0x1f8010f0)
-
-static unsigned int ss_vag_addr;
-
-void SsVoiceVol(int voice, unsigned short left, unsigned short right)
-{
-80032eb8: 27bdfff0 addiu sp,sp,-16
-80032ebc: afbe000c sw s8,12(sp)
-80032ec0: 03a0f021 move s8,sp
-80032ec4: afc40010 sw a0,16(s8)
-80032ec8: 00a01821 move v1,a1
-80032ecc: 00c01021 move v0,a2
-80032ed0: a7c30014 sh v1,20(s8)
-80032ed4: a7c20018 sh v0,24(s8)
- unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice);
-80032ed8: 8fc20010 lw v0,16(s8)
-80032edc: 00000000 nop
-80032ee0: 00021900 sll v1,v0,0x4
-80032ee4: 3c021f80 lui v0,0x1f80
-80032ee8: 34421c00 ori v0,v0,0x1c00
-80032eec: 00621021 addu v0,v1,v0
-80032ef0: afc20000 sw v0,0(s8)
-
- a[0] = left;
-80032ef4: 8fc20000 lw v0,0(s8)
-80032ef8: 97c30014 lhu v1,20(s8)
-80032efc: 00000000 nop
-80032f00: a4430000 sh v1,0(v0)
- a[1] = right;
-80032f04: 8fc20000 lw v0,0(s8)
-80032f08: 00000000 nop
-80032f0c: 24420002 addiu v0,v0,2
-80032f10: 97c30018 lhu v1,24(s8)
-80032f14: 00000000 nop
-80032f18: a4430000 sh v1,0(v0)
-}
-80032f1c: 00000000 nop
-80032f20: 03c0e821 move sp,s8
-80032f24: 8fbe000c lw s8,12(sp)
-80032f28: 27bd0010 addiu sp,sp,16
-80032f2c: 03e00008 jr ra
-80032f30: 00000000 nop
-
-80032f34 <SsVoicePitch>:
-
-void SsVoicePitch(int voice, unsigned short pitch)
-{
-80032f34: 27bdfff0 addiu sp,sp,-16
-80032f38: afbe000c sw s8,12(sp)
-80032f3c: 03a0f021 move s8,sp
-80032f40: afc40010 sw a0,16(s8)
-80032f44: 00a01021 move v0,a1
-80032f48: a7c20014 sh v0,20(s8)
- unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice);
-80032f4c: 8fc20010 lw v0,16(s8)
-80032f50: 00000000 nop
-80032f54: 00021900 sll v1,v0,0x4
-80032f58: 3c021f80 lui v0,0x1f80
-80032f5c: 34421c00 ori v0,v0,0x1c00
-80032f60: 00621021 addu v0,v1,v0
-80032f64: afc20000 sw v0,0(s8)
-
- a[2] = pitch;
-80032f68: 8fc20000 lw v0,0(s8)
-80032f6c: 00000000 nop
-80032f70: 24420004 addiu v0,v0,4
-80032f74: 97c30014 lhu v1,20(s8)
-80032f78: 00000000 nop
-80032f7c: a4430000 sh v1,0(v0)
-}
-80032f80: 00000000 nop
-80032f84: 03c0e821 move sp,s8
-80032f88: 8fbe000c lw s8,12(sp)
-80032f8c: 27bd0010 addiu sp,sp,16
-80032f90: 03e00008 jr ra
-80032f94: 00000000 nop
-
-80032f98 <SsVoiceStartAddr>:
-
-void SsVoiceStartAddr(int voice, unsigned int addr)
-{
-80032f98: 27bdfff0 addiu sp,sp,-16
-80032f9c: afbe000c sw s8,12(sp)
-80032fa0: 03a0f021 move s8,sp
-80032fa4: afc40010 sw a0,16(s8)
-80032fa8: afc50014 sw a1,20(s8)
-// address given is real address, then it is divided by eight when written to the register
-// example: SSVoiceStartAddr(0, 0x1008) , writes 0x201 on the register which means 0x1008
-
- unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice);
-80032fac: 8fc20010 lw v0,16(s8)
-80032fb0: 00000000 nop
-80032fb4: 00021900 sll v1,v0,0x4
-80032fb8: 3c021f80 lui v0,0x1f80
-80032fbc: 34421c00 ori v0,v0,0x1c00
-80032fc0: 00621021 addu v0,v1,v0
-80032fc4: afc20000 sw v0,0(s8)
-
- a[3] = (addr >> 3);
-80032fc8: 8fc20000 lw v0,0(s8)
-80032fcc: 00000000 nop
-80032fd0: 24420006 addiu v0,v0,6
-80032fd4: 8fc30014 lw v1,20(s8)
-80032fd8: 00000000 nop
-80032fdc: 000318c2 srl v1,v1,0x3
-80032fe0: 3063ffff andi v1,v1,0xffff
-80032fe4: a4430000 sh v1,0(v0)
-}
-80032fe8: 00000000 nop
-80032fec: 03c0e821 move sp,s8
-80032ff0: 8fbe000c lw s8,12(sp)
-80032ff4: 27bd0010 addiu sp,sp,16
-80032ff8: 03e00008 jr ra
-80032ffc: 00000000 nop
-
-80033000 <SsVoiceADSRRaw>:
-
-void SsVoiceADSRRaw(int voice, unsigned short level, unsigned short rate)
-{
-80033000: 27bdfff0 addiu sp,sp,-16
-80033004: afbe000c sw s8,12(sp)
-80033008: 03a0f021 move s8,sp
-8003300c: afc40010 sw a0,16(s8)
-80033010: 00a01821 move v1,a1
-80033014: 00c01021 move v0,a2
-80033018: a7c30014 sh v1,20(s8)
-8003301c: a7c20018 sh v0,24(s8)
- unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice);
-80033020: 8fc20010 lw v0,16(s8)
-80033024: 00000000 nop
-80033028: 00021900 sll v1,v0,0x4
-8003302c: 3c021f80 lui v0,0x1f80
-80033030: 34421c00 ori v0,v0,0x1c00
-80033034: 00621021 addu v0,v1,v0
-80033038: afc20000 sw v0,0(s8)
-
- a[4] = level;
-8003303c: 8fc20000 lw v0,0(s8)
-80033040: 00000000 nop
-80033044: 24420008 addiu v0,v0,8
-80033048: 97c30014 lhu v1,20(s8)
-8003304c: 00000000 nop
-80033050: a4430000 sh v1,0(v0)
- a[5] = rate;
-80033054: 8fc20000 lw v0,0(s8)
-80033058: 00000000 nop
-8003305c: 2442000a addiu v0,v0,10
-80033060: 97c30018 lhu v1,24(s8)
-80033064: 00000000 nop
-80033068: a4430000 sh v1,0(v0)
-}
-8003306c: 00000000 nop
-80033070: 03c0e821 move sp,s8
-80033074: 8fbe000c lw s8,12(sp)
-80033078: 27bd0010 addiu sp,sp,16
-8003307c: 03e00008 jr ra
-80033080: 00000000 nop
-
-80033084 <SsVoiceRepeatAddr>:
-
-void SsVoiceRepeatAddr(int voice, unsigned int addr)
-{
-80033084: 27bdfff0 addiu sp,sp,-16
-80033088: afbe000c sw s8,12(sp)
-8003308c: 03a0f021 move s8,sp
-80033090: afc40010 sw a0,16(s8)
-80033094: afc50014 sw a1,20(s8)
-// only valid after KeyOn
-// the explanation for SSVoiceStartAddr() is valid for this function as well
-
- unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice);
-80033098: 8fc20010 lw v0,16(s8)
-8003309c: 00000000 nop
-800330a0: 00021900 sll v1,v0,0x4
-800330a4: 3c021f80 lui v0,0x1f80
-800330a8: 34421c00 ori v0,v0,0x1c00
-800330ac: 00621021 addu v0,v1,v0
-800330b0: afc20000 sw v0,0(s8)
-
- a[7] = (addr >> 3);
-800330b4: 8fc20000 lw v0,0(s8)
-800330b8: 00000000 nop
-800330bc: 2442000e addiu v0,v0,14
-800330c0: 8fc30014 lw v1,20(s8)
-800330c4: 00000000 nop
-800330c8: 000318c2 srl v1,v1,0x3
-800330cc: 3063ffff andi v1,v1,0xffff
-800330d0: a4430000 sh v1,0(v0)
-}
-800330d4: 00000000 nop
-800330d8: 03c0e821 move sp,s8
-800330dc: 8fbe000c lw s8,12(sp)
-800330e0: 27bd0010 addiu sp,sp,16
-800330e4: 03e00008 jr ra
-800330e8: 00000000 nop
-
-800330ec <SsKeyOn>:
-
-void SsKeyOn(int voice)
-{
-800330ec: 27bdfff0 addiu sp,sp,-16
-800330f0: afbe000c sw s8,12(sp)
-800330f4: 03a0f021 move s8,sp
-800330f8: afc40010 sw a0,16(s8)
- unsigned int i = 1 << voice;
-800330fc: 24030001 li v1,1
-80033100: 8fc20010 lw v0,16(s8)
-80033104: 00000000 nop
-80033108: 00431004 sllv v0,v1,v0
-8003310c: afc20000 sw v0,0(s8)
-
- SPU_KEY_ON1 = i & 0xffff;
-80033110: 3c021f80 lui v0,0x1f80
-80033114: 34421d88 ori v0,v0,0x1d88
-80033118: 8fc30000 lw v1,0(s8)
-8003311c: 00000000 nop
-80033120: 3063ffff andi v1,v1,0xffff
-80033124: a4430000 sh v1,0(v0)
- SPU_KEY_ON2 = i >> 16;
-80033128: 3c021f80 lui v0,0x1f80
-8003312c: 34421d8a ori v0,v0,0x1d8a
-80033130: 8fc30000 lw v1,0(s8)
-80033134: 00000000 nop
-80033138: 00031c02 srl v1,v1,0x10
-8003313c: 3063ffff andi v1,v1,0xffff
-80033140: a4430000 sh v1,0(v0)
-
-/* while(SPU_KEY_ON1 != (i & 0xffff));
- while(SPU_KEY_ON2 != (i >> 16));
-*/
-}
-80033144: 00000000 nop
-80033148: 03c0e821 move sp,s8
-8003314c: 8fbe000c lw s8,12(sp)
-80033150: 27bd0010 addiu sp,sp,16
-80033154: 03e00008 jr ra
-80033158: 00000000 nop
-
-8003315c <SsKeyOff>:
-
-void SsKeyOff(int voice)
-{
-8003315c: 27bdfff0 addiu sp,sp,-16
-80033160: afbe000c sw s8,12(sp)
-80033164: 03a0f021 move s8,sp
-80033168: afc40010 sw a0,16(s8)
- unsigned int i = 1 << voice;
-8003316c: 24030001 li v1,1
-80033170: 8fc20010 lw v0,16(s8)
-80033174: 00000000 nop
-80033178: 00431004 sllv v0,v1,v0
-8003317c: afc20000 sw v0,0(s8)
-
- SPU_KEY_OFF1 = i & 0xffff;
-80033180: 3c021f80 lui v0,0x1f80
-80033184: 34421d8c ori v0,v0,0x1d8c
-80033188: 8fc30000 lw v1,0(s8)
-8003318c: 00000000 nop
-80033190: 3063ffff andi v1,v1,0xffff
-80033194: a4430000 sh v1,0(v0)
- SPU_KEY_OFF2 = i >> 16;
-80033198: 3c021f80 lui v0,0x1f80
-8003319c: 34421d8e ori v0,v0,0x1d8e
-800331a0: 8fc30000 lw v1,0(s8)
-800331a4: 00000000 nop
-800331a8: 00031c02 srl v1,v1,0x10
-800331ac: 3063ffff andi v1,v1,0xffff
-800331b0: a4430000 sh v1,0(v0)
-}
-800331b4: 00000000 nop
-800331b8: 03c0e821 move sp,s8
-800331bc: 8fbe000c lw s8,12(sp)
-800331c0: 27bd0010 addiu sp,sp,16
-800331c4: 03e00008 jr ra
-800331c8: 00000000 nop
-
-800331cc <SsKeyOnMask>:
-
-
-
-void SsKeyOnMask(int mask)
-{
-800331cc: 27bdfff8 addiu sp,sp,-8
-800331d0: afbe0004 sw s8,4(sp)
-800331d4: 03a0f021 move s8,sp
-800331d8: afc40008 sw a0,8(s8)
- SPU_KEY_ON1 = mask & 0xffff;
-800331dc: 3c021f80 lui v0,0x1f80
-800331e0: 34421d88 ori v0,v0,0x1d88
-800331e4: 8fc30008 lw v1,8(s8)
-800331e8: 00000000 nop
-800331ec: 3063ffff andi v1,v1,0xffff
-800331f0: a4430000 sh v1,0(v0)
- SPU_KEY_ON2 = mask >> 16;
-800331f4: 3c021f80 lui v0,0x1f80
-800331f8: 34421d8a ori v0,v0,0x1d8a
-800331fc: 8fc30008 lw v1,8(s8)
-80033200: 00000000 nop
-80033204: 00031c03 sra v1,v1,0x10
-80033208: 3063ffff andi v1,v1,0xffff
-8003320c: a4430000 sh v1,0(v0)
-}
-80033210: 00000000 nop
-80033214: 03c0e821 move sp,s8
-80033218: 8fbe0004 lw s8,4(sp)
-8003321c: 27bd0008 addiu sp,sp,8
-80033220: 03e00008 jr ra
-80033224: 00000000 nop
-
-80033228 <SsKeyOffMask>:
-
-void SsKeyOffMask(int mask)
-{
-80033228: 27bdfff8 addiu sp,sp,-8
-8003322c: afbe0004 sw s8,4(sp)
-80033230: 03a0f021 move s8,sp
-80033234: afc40008 sw a0,8(s8)
- SPU_KEY_OFF1 = mask & 0xffff;
-80033238: 3c021f80 lui v0,0x1f80
-8003323c: 34421d8c ori v0,v0,0x1d8c
-80033240: 8fc30008 lw v1,8(s8)
-80033244: 00000000 nop
-80033248: 3063ffff andi v1,v1,0xffff
-8003324c: a4430000 sh v1,0(v0)
- SPU_KEY_OFF2 = mask >> 16;
-80033250: 3c021f80 lui v0,0x1f80
-80033254: 34421d8e ori v0,v0,0x1d8e
-80033258: 8fc30008 lw v1,8(s8)
-8003325c: 00000000 nop
-80033260: 00031c03 sra v1,v1,0x10
-80033264: 3063ffff andi v1,v1,0xffff
-80033268: a4430000 sh v1,0(v0)
-}
-8003326c: 00000000 nop
-80033270: 03c0e821 move sp,s8
-80033274: 8fbe0004 lw s8,4(sp)
-80033278: 27bd0008 addiu sp,sp,8
-8003327c: 03e00008 jr ra
-80033280: 00000000 nop
-
-80033284 <SsWait>:
-
-void SsWait()
-{
-80033284: 27bdfff8 addiu sp,sp,-8
-80033288: afbe0004 sw s8,4(sp)
-8003328c: 03a0f021 move s8,sp
- while(SPU_STATUS2 & 0x7ff);
-80033290: 00000000 nop
-80033294: 3c021f80 lui v0,0x1f80
-80033298: 34421dae ori v0,v0,0x1dae
-8003329c: 94420000 lhu v0,0(v0)
-800332a0: 00000000 nop
-800332a4: 304207ff andi v0,v0,0x7ff
-800332a8: 1440fffa bnez v0,80033294 <SsWait+0x10>
-800332ac: 00000000 nop
-}
-800332b0: 00000000 nop
-800332b4: 03c0e821 move sp,s8
-800332b8: 8fbe0004 lw s8,4(sp)
-800332bc: 27bd0008 addiu sp,sp,8
-800332c0: 03e00008 jr ra
-800332c4: 00000000 nop
-
-800332c8 <SsInit>:
-
-void SsInit()
-{
-800332c8: 27bdffe0 addiu sp,sp,-32
-800332cc: afbf001c sw ra,28(sp)
-800332d0: afbe0018 sw s8,24(sp)
-800332d4: 03a0f021 move s8,sp
- int x;
-
- printf("Initializing SPU (Sound Synthesizer)...\n");
-800332d8: 3c028004 lui v0,0x8004
-800332dc: 2444fdac addiu a0,v0,-596
-800332e0: 0c00ed8f jal 8003b63c <printf>
-800332e4: 00000000 nop
-
- DPCR |= 0xB0000;
-800332e8: 3c021f80 lui v0,0x1f80
-800332ec: 344210f0 ori v0,v0,0x10f0
-800332f0: 3c031f80 lui v1,0x1f80
-800332f4: 346310f0 ori v1,v1,0x10f0
-800332f8: 8c640000 lw a0,0(v1)
-800332fc: 3c03000b lui v1,0xb
-80033300: 00831825 or v1,a0,v1
-80033304: ac430000 sw v1,0(v0)
-
- SPU_MVOL_L = 0x3fff;
-80033308: 3c021f80 lui v0,0x1f80
-8003330c: 34421d80 ori v0,v0,0x1d80
-80033310: 24033fff li v1,16383
-80033314: a4430000 sh v1,0(v0)
- SPU_MVOL_R = 0x3fff;
-80033318: 3c021f80 lui v0,0x1f80
-8003331c: 34421d82 ori v0,v0,0x1d82
-80033320: 24033fff li v1,16383
-80033324: a4430000 sh v1,0(v0)
-
- SPU_CONTROL = 0x0;
-80033328: 3c021f80 lui v0,0x1f80
-8003332c: 34421daa ori v0,v0,0x1daa
-80033330: a4400000 sh zero,0(v0)
- SsWait();
-80033334: 0c00cca1 jal 80033284 <SsWait>
-80033338: 00000000 nop
-
- SPU_STATUS = 0x4; // Must be done, but not totally understood
-8003333c: 3c021f80 lui v0,0x1f80
-80033340: 34421dac ori v0,v0,0x1dac
-80033344: 24030004 li v1,4
-80033348: a4430000 sh v1,0(v0)
-
- while(SPU_STATUS2 & 0x7ff);
-8003334c: 00000000 nop
-80033350: 3c021f80 lui v0,0x1f80
-80033354: 34421dae ori v0,v0,0x1dae
-80033358: 94420000 lhu v0,0(v0)
-8003335c: 00000000 nop
-80033360: 304207ff andi v0,v0,0x7ff
-80033364: 1440fffa bnez v0,80033350 <SsInit+0x88>
-80033368: 00000000 nop
-
- SPU_REVERB_L = 0x0;
-8003336c: 3c021f80 lui v0,0x1f80
-80033370: 34421d84 ori v0,v0,0x1d84
-80033374: a4400000 sh zero,0(v0)
- SPU_REVERB_R = 0x0;
-80033378: 3c021f80 lui v0,0x1f80
-8003337c: 34421d86 ori v0,v0,0x1d86
-80033380: a4400000 sh zero,0(v0)
-
- // All keys off
-
- SPU_KEY_OFF1 = 0xFFFF;
-80033384: 3c021f80 lui v0,0x1f80
-80033388: 34421d8c ori v0,v0,0x1d8c
-8003338c: 2403ffff li v1,-1
-80033390: a4430000 sh v1,0(v0)
- SPU_KEY_OFF2 = 0xFFFF;
-80033394: 3c021f80 lui v0,0x1f80
-80033398: 34421d8e ori v0,v0,0x1d8e
-8003339c: 2403ffff li v1,-1
-800333a0: a4430000 sh v1,0(v0)
-
- // Switch FM, reverb and noise off
- SPU_KEY_FM_MODE1 = 0x0;
-800333a4: 3c021f80 lui v0,0x1f80
-800333a8: 34421d90 ori v0,v0,0x1d90
-800333ac: a4400000 sh zero,0(v0)
- SPU_KEY_FM_MODE2 = 0x0;
-800333b0: 3c021f80 lui v0,0x1f80
-800333b4: 34421d92 ori v0,v0,0x1d92
-800333b8: a4400000 sh zero,0(v0)
- SPU_KEY_NOISE_MODE1 = 0x0;
-800333bc: 3c021f80 lui v0,0x1f80
-800333c0: 34421d94 ori v0,v0,0x1d94
-800333c4: a4400000 sh zero,0(v0)
- SPU_KEY_NOISE_MODE2 = 0x0;
-800333c8: 3c021f80 lui v0,0x1f80
-800333cc: 34421d96 ori v0,v0,0x1d96
-800333d0: a4400000 sh zero,0(v0)
- SPU_KEY_REVERB_MODE1 = 0x0;
-800333d4: 3c021f80 lui v0,0x1f80
-800333d8: 34421d98 ori v0,v0,0x1d98
-800333dc: a4400000 sh zero,0(v0)
- SPU_KEY_REVERB_MODE2 = 0x0;
-800333e0: 3c021f80 lui v0,0x1f80
-800333e4: 34421d9a ori v0,v0,0x1d9a
-800333e8: a4400000 sh zero,0(v0)
-
- // set CD master volume to 0 (mute it)
- SPU_CD_MVOL_L = 0x0;
-800333ec: 3c021f80 lui v0,0x1f80
-800333f0: 34421db0 ori v0,v0,0x1db0
-800333f4: a4400000 sh zero,0(v0)
- SPU_CD_MVOL_R = 0x0;
-800333f8: 3c021f80 lui v0,0x1f80
-800333fc: 34421db2 ori v0,v0,0x1db2
-80033400: a4400000 sh zero,0(v0)
-
- // set external input volume to 0 (mute it)
- SPU_EXT_VOL_L = 0x0;
-80033404: 3c021f80 lui v0,0x1f80
-80033408: 34421db4 ori v0,v0,0x1db4
-8003340c: a4400000 sh zero,0(v0)
- SPU_EXT_VOL_R = 0x0;
-80033410: 3c021f80 lui v0,0x1f80
-80033414: 34421db6 ori v0,v0,0x1db6
-80033418: a4400000 sh zero,0(v0)
-
- // set volume of all voices to 0 and adsr to 0,0
-
- for(x = 0; x < 24; x++)
-8003341c: afc00010 sw zero,16(s8)
-80033420: 1000000f b 80033460 <SsInit+0x198>
-80033424: 00000000 nop
- {
- SsVoiceVol(x, 0, 0);
-80033428: 00003021 move a2,zero
-8003342c: 00002821 move a1,zero
-80033430: 8fc40010 lw a0,16(s8)
-80033434: 0c00cbae jal 80032eb8 <SsVoiceVol>
-80033438: 00000000 nop
- SsVoiceADSRRaw(x, 0, 0);
-8003343c: 00003021 move a2,zero
-80033440: 00002821 move a1,zero
-80033444: 8fc40010 lw a0,16(s8)
-80033448: 0c00cc00 jal 80033000 <SsVoiceADSRRaw>
-8003344c: 00000000 nop
- SPU_EXT_VOL_L = 0x0;
- SPU_EXT_VOL_R = 0x0;
-
- // set volume of all voices to 0 and adsr to 0,0
-
- for(x = 0; x < 24; x++)
-80033450: 8fc20010 lw v0,16(s8)
-80033454: 00000000 nop
-80033458: 24420001 addiu v0,v0,1
-8003345c: afc20010 sw v0,16(s8)
-80033460: 8fc20010 lw v0,16(s8)
-80033464: 00000000 nop
-80033468: 28420018 slti v0,v0,24
-8003346c: 1440ffee bnez v0,80033428 <SsInit+0x160>
-80033470: 00000000 nop
- {
- SsVoiceVol(x, 0, 0);
- SsVoiceADSRRaw(x, 0, 0);
- }
-
- SsWait();
-80033474: 0c00cca1 jal 80033284 <SsWait>
-80033478: 00000000 nop
-
- SPU_CONTROL = 0xC000; // SPU is on
-8003347c: 3c021f80 lui v0,0x1f80
-80033480: 34421daa ori v0,v0,0x1daa
-80033484: 2403c000 li v1,-16384
-80033488: a4430000 sh v1,0(v0)
- SPU_REVERB_WORK_ADDR = 0xFFFE; // Reverb work address in SPU memory, 0x1fff * 8 = 0xFFF8
-8003348c: 3c021f80 lui v0,0x1f80
-80033490: 34421da2 ori v0,v0,0x1da2
-80033494: 2403fffe li v1,-2
-80033498: a4430000 sh v1,0(v0)
-
- ss_vag_addr = SPU_DATA_BASE_ADDR;
-8003349c: 3c028007 lui v0,0x8007
-800334a0: 24031010 li v1,4112
-800334a4: ac431cec sw v1,7404(v0)
-
- printf("SPU/SS Initialized.\n");
-800334a8: 3c028004 lui v0,0x8004
-800334ac: 2444fdd8 addiu a0,v0,-552
-800334b0: 0c00ed8f jal 8003b63c <printf>
-800334b4: 00000000 nop
-}
-800334b8: 00000000 nop
-800334bc: 03c0e821 move sp,s8
-800334c0: 8fbf001c lw ra,28(sp)
-800334c4: 8fbe0018 lw s8,24(sp)
-800334c8: 27bd0020 addiu sp,sp,32
-800334cc: 03e00008 jr ra
-800334d0: 00000000 nop
-
-800334d4 <SsUpload>:
-// This implementation of SsUpload() was contributed by Shendo
-// It waits either for a period of time or for the status flags to be raised, whichever comes first.
-// This makes it work also on ePSXe, which never raises the status flags.
-
-void SsUpload(void *addr, int size, int spu_addr)
-{
-800334d4: 27bdfff0 addiu sp,sp,-16
-800334d8: afbe000c sw s8,12(sp)
-800334dc: 03a0f021 move s8,sp
-800334e0: afc40010 sw a0,16(s8)
-800334e4: afc50014 sw a1,20(s8)
-800334e8: afc60018 sw a2,24(s8)
- unsigned short *ptr = addr;
-800334ec: 8fc20010 lw v0,16(s8)
-800334f0: 00000000 nop
-800334f4: afc20000 sw v0,0(s8)
- int i;
-
- while(size > 0)
-800334f8: 10000082 b 80033704 <SsUpload+0x230>
-800334fc: 00000000 nop
- {
- SPU_STATUS = 4; // Sound RAM Data Transfer Control
-80033500: 3c021f80 lui v0,0x1f80
-80033504: 34421dac ori v0,v0,0x1dac
-80033508: 24030004 li v1,4
-8003350c: a4430000 sh v1,0(v0)
- SPU_CONTROL = SPU_CONTROL & ~0x30; // SPUCNT.transfer_mode = 0 (STOP)
-80033510: 3c021f80 lui v0,0x1f80
-80033514: 34421daa ori v0,v0,0x1daa
-80033518: 3c031f80 lui v1,0x1f80
-8003351c: 34631daa ori v1,v1,0x1daa
-80033520: 94640000 lhu a0,0(v1)
-80033524: 2403ffcf li v1,-49
-80033528: 00831824 and v1,a0,v1
-8003352c: 3063ffff andi v1,v1,0xffff
-80033530: a4430000 sh v1,0(v0)
-
-
- for(i = 0; i < 100; i++)
-80033534: afc00004 sw zero,4(s8)
-80033538: 1000000e b 80033574 <SsUpload+0xa0>
-8003353c: 00000000 nop
- if(((SPU_STATUS2 >> 4) & 3) == 0)break; // wait until SPUSTAT.transfer is 0 (STOP)
-80033540: 3c021f80 lui v0,0x1f80
-80033544: 34421dae ori v0,v0,0x1dae
-80033548: 94420000 lhu v0,0(v0)
-8003354c: 00000000 nop
-80033550: 00021102 srl v0,v0,0x4
-80033554: 3042ffff andi v0,v0,0xffff
-80033558: 30420003 andi v0,v0,0x3
-8003355c: 1040000c beqz v0,80033590 <SsUpload+0xbc>
-80033560: 00000000 nop
- {
- SPU_STATUS = 4; // Sound RAM Data Transfer Control
- SPU_CONTROL = SPU_CONTROL & ~0x30; // SPUCNT.transfer_mode = 0 (STOP)
-
-
- for(i = 0; i < 100; i++)
-80033564: 8fc20004 lw v0,4(s8)
-80033568: 00000000 nop
-8003356c: 24420001 addiu v0,v0,1
-80033570: afc20004 sw v0,4(s8)
-80033574: 8fc20004 lw v0,4(s8)
-80033578: 00000000 nop
-8003357c: 28420064 slti v0,v0,100
-80033580: 1440ffef bnez v0,80033540 <SsUpload+0x6c>
-80033584: 00000000 nop
-80033588: 10000002 b 80033594 <SsUpload+0xc0>
-8003358c: 00000000 nop
- if(((SPU_STATUS2 >> 4) & 3) == 0)break; // wait until SPUSTAT.transfer is 0 (STOP)
-80033590: 00000000 nop
-
- SPU_ADDR = spu_addr >> 3;
-80033594: 3c021f80 lui v0,0x1f80
-80033598: 34421da6 ori v0,v0,0x1da6
-8003359c: 8fc30018 lw v1,24(s8)
-800335a0: 00000000 nop
-800335a4: 000318c3 sra v1,v1,0x3
-800335a8: 3063ffff andi v1,v1,0xffff
-800335ac: a4430000 sh v1,0(v0)
-
- for(i = 0; i < 32; i++)
-800335b0: afc00004 sw zero,4(s8)
-800335b4: 10000010 b 800335f8 <SsUpload+0x124>
-800335b8: 00000000 nop
- SPU_DATA = ptr[i];
-800335bc: 3c021f80 lui v0,0x1f80
-800335c0: 34421da8 ori v0,v0,0x1da8
-800335c4: 8fc30004 lw v1,4(s8)
-800335c8: 00000000 nop
-800335cc: 00031840 sll v1,v1,0x1
-800335d0: 8fc40000 lw a0,0(s8)
-800335d4: 00000000 nop
-800335d8: 00831821 addu v1,a0,v1
-800335dc: 94630000 lhu v1,0(v1)
-800335e0: 00000000 nop
-800335e4: a4430000 sh v1,0(v0)
- for(i = 0; i < 100; i++)
- if(((SPU_STATUS2 >> 4) & 3) == 0)break; // wait until SPUSTAT.transfer is 0 (STOP)
-
- SPU_ADDR = spu_addr >> 3;
-
- for(i = 0; i < 32; i++)
-800335e8: 8fc20004 lw v0,4(s8)
-800335ec: 00000000 nop
-800335f0: 24420001 addiu v0,v0,1
-800335f4: afc20004 sw v0,4(s8)
-800335f8: 8fc20004 lw v0,4(s8)
-800335fc: 00000000 nop
-80033600: 28420020 slti v0,v0,32
-80033604: 1440ffed bnez v0,800335bc <SsUpload+0xe8>
-80033608: 00000000 nop
- SPU_DATA = ptr[i];
-
- SPU_CONTROL = (SPU_CONTROL & ~0x30) | 16; // SPUCNT.transfer_mode = 1 (MANUAL)
-8003360c: 3c021f80 lui v0,0x1f80
-80033610: 34421daa ori v0,v0,0x1daa
-80033614: 3c031f80 lui v1,0x1f80
-80033618: 34631daa ori v1,v1,0x1daa
-8003361c: 94630000 lhu v1,0(v1)
-80033620: 00000000 nop
-80033624: 00032400 sll a0,v1,0x10
-80033628: 00042403 sra a0,a0,0x10
-8003362c: 2403ffcf li v1,-49
-80033630: 00831824 and v1,a0,v1
-80033634: 00031c00 sll v1,v1,0x10
-80033638: 00031c03 sra v1,v1,0x10
-8003363c: 34630010 ori v1,v1,0x10
-80033640: 00031c00 sll v1,v1,0x10
-80033644: 00031c03 sra v1,v1,0x10
-80033648: 3063ffff andi v1,v1,0xffff
-8003364c: a4430000 sh v1,0(v0)
-
- for(i = 0; i < 100; i++)
-80033650: afc00004 sw zero,4(s8)
-80033654: 1000000f b 80033694 <SsUpload+0x1c0>
-80033658: 00000000 nop
- if(((SPU_STATUS2 >> 4) & 3) == 1)break; // wait until SPUSTAT.transfer is 1 (MANUAL)
-8003365c: 3c021f80 lui v0,0x1f80
-80033660: 34421dae ori v0,v0,0x1dae
-80033664: 94420000 lhu v0,0(v0)
-80033668: 00000000 nop
-8003366c: 00021102 srl v0,v0,0x4
-80033670: 3042ffff andi v0,v0,0xffff
-80033674: 30430003 andi v1,v0,0x3
-80033678: 24020001 li v0,1
-8003367c: 1062000c beq v1,v0,800336b0 <SsUpload+0x1dc>
-80033680: 00000000 nop
- for(i = 0; i < 32; i++)
- SPU_DATA = ptr[i];
-
- SPU_CONTROL = (SPU_CONTROL & ~0x30) | 16; // SPUCNT.transfer_mode = 1 (MANUAL)
-
- for(i = 0; i < 100; i++)
-80033684: 8fc20004 lw v0,4(s8)
-80033688: 00000000 nop
-8003368c: 24420001 addiu v0,v0,1
-80033690: afc20004 sw v0,4(s8)
-80033694: 8fc20004 lw v0,4(s8)
-80033698: 00000000 nop
-8003369c: 28420064 slti v0,v0,100
-800336a0: 1440ffee bnez v0,8003365c <SsUpload+0x188>
-800336a4: 00000000 nop
-800336a8: 10000002 b 800336b4 <SsUpload+0x1e0>
-800336ac: 00000000 nop
- ...
- if(((SPU_STATUS2 >> 4) & 3) == 1)break; // wait until SPUSTAT.transfer is 1 (MANUAL)
-
- while(SPU_STATUS2 & 0x400); // wait for transfer busy bit to be cleared
-800336b8: 3c021f80 lui v0,0x1f80
-800336bc: 34421dae ori v0,v0,0x1dae
-800336c0: 94420000 lhu v0,0(v0)
-800336c4: 00000000 nop
-800336c8: 30420400 andi v0,v0,0x400
-800336cc: 1440fffa bnez v0,800336b8 <SsUpload+0x1e4>
-800336d0: 00000000 nop
-
- spu_addr += 64;
-800336d4: 8fc20018 lw v0,24(s8)
-800336d8: 00000000 nop
-800336dc: 24420040 addiu v0,v0,64
-800336e0: afc20018 sw v0,24(s8)
- ptr += 32;
-800336e4: 8fc20000 lw v0,0(s8)
-800336e8: 00000000 nop
-800336ec: 24420040 addiu v0,v0,64
-800336f0: afc20000 sw v0,0(s8)
- size-=64;
-800336f4: 8fc20014 lw v0,20(s8)
-800336f8: 00000000 nop
-800336fc: 2442ffc0 addiu v0,v0,-64
-80033700: afc20014 sw v0,20(s8)
-void SsUpload(void *addr, int size, int spu_addr)
-{
- unsigned short *ptr = addr;
- int i;
-
- while(size > 0)
-80033704: 8fc20014 lw v0,20(s8)
-80033708: 00000000 nop
-8003370c: 1c40ff7c bgtz v0,80033500 <SsUpload+0x2c>
-80033710: 00000000 nop
-
- spu_addr += 64;
- ptr += 32;
- size-=64;
- }
-}
-80033714: 00000000 nop
-80033718: 03c0e821 move sp,s8
-8003371c: 8fbe000c lw s8,12(sp)
-80033720: 27bd0010 addiu sp,sp,16
-80033724: 03e00008 jr ra
-80033728: 00000000 nop
-
-8003372c <SsFreqToPitch>:
-
-unsigned short SsFreqToPitch(int hz)
-{
-8003372c: 27bdfff8 addiu sp,sp,-8
-80033730: afbe0004 sw s8,4(sp)
-80033734: 03a0f021 move s8,sp
-80033738: afc40008 sw a0,8(s8)
-// Converts a normal samples per second frequency value in Hz
-// in a pitch value
-
-// i.e. 44100 -> 0x1000, 22050 -> 0x800
-
- return (hz << 12) / 44100;
-8003373c: 8fc20008 lw v0,8(s8)
-80033740: 00000000 nop
-80033744: 00021b00 sll v1,v0,0xc
-80033748: 3402ac44 li v0,0xac44
-8003374c: 14400002 bnez v0,80033758 <SsFreqToPitch+0x2c>
-80033750: 0062001a div zero,v1,v0
-80033754: 0007000d break 0x7
-80033758: 00001010 mfhi v0
-8003375c: 00001012 mflo v0
-80033760: 3042ffff andi v0,v0,0xffff
-}
-80033764: 03c0e821 move sp,s8
-80033768: 8fbe0004 lw s8,4(sp)
-8003376c: 27bd0008 addiu sp,sp,8
-80033770: 03e00008 jr ra
-80033774: 00000000 nop
-
-80033778 <SsReadVag>:
-
-int SsReadVag(SsVag *vag, void *data)
-{
-80033778: 27bdffe0 addiu sp,sp,-32
-8003377c: afbf001c sw ra,28(sp)
-80033780: afbe0018 sw s8,24(sp)
-80033784: 03a0f021 move s8,sp
-80033788: afc40020 sw a0,32(s8)
-8003378c: afc50024 sw a1,36(s8)
- unsigned char *i = data;
-80033790: 8fc20024 lw v0,36(s8)
-80033794: 00000000 nop
-80033798: afc20010 sw v0,16(s8)
-
- if(strncmp(data, "VAGp", 4) != 0)
-8003379c: 24060004 li a2,4
-800337a0: 3c028004 lui v0,0x8004
-800337a4: 2445fdf0 addiu a1,v0,-528
-800337a8: 8fc40024 lw a0,36(s8)
-800337ac: 0c00d9dd jal 80036774 <strncmp>
-800337b0: 00000000 nop
-800337b4: 10400004 beqz v0,800337c8 <SsReadVag+0x50>
-800337b8: 00000000 nop
- return 0;
-800337bc: 00001021 move v0,zero
-800337c0: 1000006d b 80033978 <SsReadVag+0x200>
-800337c4: 00000000 nop
-
- vag->version = (i[4]<<24)|(i[5]<<16)|(i[6]<<8)|i[7];
-800337c8: 8fc20010 lw v0,16(s8)
-800337cc: 00000000 nop
-800337d0: 24420004 addiu v0,v0,4
-800337d4: 90420000 lbu v0,0(v0)
-800337d8: 00000000 nop
-800337dc: 00021e00 sll v1,v0,0x18
-800337e0: 8fc20010 lw v0,16(s8)
-800337e4: 00000000 nop
-800337e8: 24420005 addiu v0,v0,5
-800337ec: 90420000 lbu v0,0(v0)
-800337f0: 00000000 nop
-800337f4: 00021400 sll v0,v0,0x10
-800337f8: 00621825 or v1,v1,v0
-800337fc: 8fc20010 lw v0,16(s8)
-80033800: 00000000 nop
-80033804: 24420006 addiu v0,v0,6
-80033808: 90420000 lbu v0,0(v0)
-8003380c: 00000000 nop
-80033810: 00021200 sll v0,v0,0x8
-80033814: 00621025 or v0,v1,v0
-80033818: 8fc30010 lw v1,16(s8)
-8003381c: 00000000 nop
-80033820: 24630007 addiu v1,v1,7
-80033824: 90630000 lbu v1,0(v1)
-80033828: 00000000 nop
-8003382c: 00431025 or v0,v0,v1
-80033830: 00401821 move v1,v0
-80033834: 8fc20020 lw v0,32(s8)
-80033838: 00000000 nop
-8003383c: ac430000 sw v1,0(v0)
- vag->data_size = (i[12]<<24)|(i[13]<<16)|(i[14]<<8)|i[15];
-80033840: 8fc20010 lw v0,16(s8)
-80033844: 00000000 nop
-80033848: 2442000c addiu v0,v0,12
-8003384c: 90420000 lbu v0,0(v0)
-80033850: 00000000 nop
-80033854: 00021e00 sll v1,v0,0x18
-80033858: 8fc20010 lw v0,16(s8)
-8003385c: 00000000 nop
-80033860: 2442000d addiu v0,v0,13
-80033864: 90420000 lbu v0,0(v0)
-80033868: 00000000 nop
-8003386c: 00021400 sll v0,v0,0x10
-80033870: 00621825 or v1,v1,v0
-80033874: 8fc20010 lw v0,16(s8)
-80033878: 00000000 nop
-8003387c: 2442000e addiu v0,v0,14
-80033880: 90420000 lbu v0,0(v0)
-80033884: 00000000 nop
-80033888: 00021200 sll v0,v0,0x8
-8003388c: 00621025 or v0,v1,v0
-80033890: 8fc30010 lw v1,16(s8)
-80033894: 00000000 nop
-80033898: 2463000f addiu v1,v1,15
-8003389c: 90630000 lbu v1,0(v1)
-800338a0: 00000000 nop
-800338a4: 00431025 or v0,v0,v1
-800338a8: 00401821 move v1,v0
-800338ac: 8fc20020 lw v0,32(s8)
-800338b0: 00000000 nop
-800338b4: ac430004 sw v1,4(v0)
- vag->sample_rate = (i[16]<<24)|(i[17]<<16)|(i[18]<<8)|i[19];
-800338b8: 8fc20010 lw v0,16(s8)
-800338bc: 00000000 nop
-800338c0: 24420010 addiu v0,v0,16
-800338c4: 90420000 lbu v0,0(v0)
-800338c8: 00000000 nop
-800338cc: 00021e00 sll v1,v0,0x18
-800338d0: 8fc20010 lw v0,16(s8)
-800338d4: 00000000 nop
-800338d8: 24420011 addiu v0,v0,17
-800338dc: 90420000 lbu v0,0(v0)
-800338e0: 00000000 nop
-800338e4: 00021400 sll v0,v0,0x10
-800338e8: 00621825 or v1,v1,v0
-800338ec: 8fc20010 lw v0,16(s8)
-800338f0: 00000000 nop
-800338f4: 24420012 addiu v0,v0,18
-800338f8: 90420000 lbu v0,0(v0)
-800338fc: 00000000 nop
-80033900: 00021200 sll v0,v0,0x8
-80033904: 00621025 or v0,v1,v0
-80033908: 8fc30010 lw v1,16(s8)
-8003390c: 00000000 nop
-80033910: 24630013 addiu v1,v1,19
-80033914: 90630000 lbu v1,0(v1)
-80033918: 00000000 nop
-8003391c: 00431025 or v0,v0,v1
-80033920: 00401821 move v1,v0
-80033924: 8fc20020 lw v0,32(s8)
-80033928: 00000000 nop
-8003392c: ac430008 sw v1,8(v0)
- memcpy(vag->name, &i[32], 16);
-80033930: 8fc20020 lw v0,32(s8)
-80033934: 00000000 nop
-80033938: 2443000c addiu v1,v0,12
-8003393c: 8fc20010 lw v0,16(s8)
-80033940: 00000000 nop
-80033944: 24420020 addiu v0,v0,32
-80033948: 24060010 li a2,16
-8003394c: 00402821 move a1,v0
-80033950: 00602021 move a0,v1
-80033954: 0c00d75e jal 80035d78 <memcpy>
-80033958: 00000000 nop
- vag->data = &i[48];
-8003395c: 8fc20010 lw v0,16(s8)
-80033960: 00000000 nop
-80033964: 24430030 addiu v1,v0,48
-80033968: 8fc20020 lw v0,32(s8)
-8003396c: 00000000 nop
-80033970: ac43001c sw v1,28(v0)
-
- return 1;
-80033974: 24020001 li v0,1
-}
-80033978: 03c0e821 move sp,s8
-8003397c: 8fbf001c lw ra,28(sp)
-80033980: 8fbe0018 lw s8,24(sp)
-80033984: 27bd0020 addiu sp,sp,32
-80033988: 03e00008 jr ra
-8003398c: 00000000 nop
-
-80033990 <SsUploadVagEx>:
-
-void SsUploadVagEx(SsVag *vag, int spu_addr)
-{
-80033990: 27bdffe8 addiu sp,sp,-24
-80033994: afbf0014 sw ra,20(sp)
-80033998: afbe0010 sw s8,16(sp)
-8003399c: 03a0f021 move s8,sp
-800339a0: afc40018 sw a0,24(s8)
-800339a4: afc5001c sw a1,28(s8)
- vag->spu_addr = spu_addr;
-800339a8: 8fc3001c lw v1,28(s8)
-800339ac: 8fc20018 lw v0,24(s8)
-800339b0: 00000000 nop
-800339b4: ac430020 sw v1,32(v0)
- SsUpload(vag->data, vag->data_size, vag->spu_addr);
-800339b8: 8fc20018 lw v0,24(s8)
-800339bc: 00000000 nop
-800339c0: 8c43001c lw v1,28(v0)
-800339c4: 8fc20018 lw v0,24(s8)
-800339c8: 00000000 nop
-800339cc: 8c420004 lw v0,4(v0)
-800339d0: 00000000 nop
-800339d4: 00402021 move a0,v0
-800339d8: 8fc20018 lw v0,24(s8)
-800339dc: 00000000 nop
-800339e0: 8c420020 lw v0,32(v0)
-800339e4: 00000000 nop
-800339e8: 00403021 move a2,v0
-800339ec: 00802821 move a1,a0
-800339f0: 00602021 move a0,v1
-800339f4: 0c00cd35 jal 800334d4 <SsUpload>
-800339f8: 00000000 nop
- //spu_addr += vag->data_size;
-}
-800339fc: 00000000 nop
-80033a00: 03c0e821 move sp,s8
-80033a04: 8fbf0014 lw ra,20(sp)
-80033a08: 8fbe0010 lw s8,16(sp)
-80033a0c: 27bd0018 addiu sp,sp,24
-80033a10: 03e00008 jr ra
-80033a14: 00000000 nop
-
-80033a18 <SsUploadVag>:
-
-void SsUploadVag(SsVag *vag)
-{
-80033a18: 27bdffe8 addiu sp,sp,-24
-80033a1c: afbf0014 sw ra,20(sp)
-80033a20: afbe0010 sw s8,16(sp)
-80033a24: 03a0f021 move s8,sp
-80033a28: afc40018 sw a0,24(s8)
- vag->spu_addr = ss_vag_addr;
-80033a2c: 3c028007 lui v0,0x8007
-80033a30: 8c431cec lw v1,7404(v0)
-80033a34: 8fc20018 lw v0,24(s8)
-80033a38: 00000000 nop
-80033a3c: ac430020 sw v1,32(v0)
- SsUploadVagEx(vag, ss_vag_addr);
-80033a40: 3c028007 lui v0,0x8007
-80033a44: 8c421cec lw v0,7404(v0)
-80033a48: 00000000 nop
-80033a4c: 00402821 move a1,v0
-80033a50: 8fc40018 lw a0,24(s8)
-80033a54: 0c00ce64 jal 80033990 <SsUploadVagEx>
-80033a58: 00000000 nop
- ss_vag_addr += vag->data_size;
-80033a5c: 8fc20018 lw v0,24(s8)
-80033a60: 00000000 nop
-80033a64: 8c430004 lw v1,4(v0)
-80033a68: 3c028007 lui v0,0x8007
-80033a6c: 8c421cec lw v0,7404(v0)
-80033a70: 00000000 nop
-80033a74: 00621821 addu v1,v1,v0
-80033a78: 3c028007 lui v0,0x8007
-80033a7c: ac431cec sw v1,7404(v0)
-}
-80033a80: 00000000 nop
-80033a84: 03c0e821 move sp,s8
-80033a88: 8fbf0014 lw ra,20(sp)
-80033a8c: 8fbe0010 lw s8,16(sp)
-80033a90: 27bd0018 addiu sp,sp,24
-80033a94: 03e00008 jr ra
-80033a98: 00000000 nop
-
-80033a9c <SsPlayVag>:
-
-void SsPlayVag(SsVag *vag, unsigned char voice, unsigned short vl,
- unsigned short vr)
-{
-80033a9c: 27bdffe0 addiu sp,sp,-32
-80033aa0: afbf001c sw ra,28(sp)
-80033aa4: afbe0018 sw s8,24(sp)
-80033aa8: afb00014 sw s0,20(sp)
-80033aac: 03a0f021 move s8,sp
-80033ab0: afc40020 sw a0,32(s8)
-80033ab4: 00a02021 move a0,a1
-80033ab8: 00c01821 move v1,a2
-80033abc: 00e01021 move v0,a3
-80033ac0: a3c40024 sb a0,36(s8)
-80033ac4: a7c30028 sh v1,40(s8)
-80033ac8: a7c2002c sh v0,44(s8)
- SsVoicePitch(voice, SsFreqToPitch(vag->sample_rate));
-80033acc: 93d00024 lbu s0,36(s8)
-80033ad0: 8fc20020 lw v0,32(s8)
-80033ad4: 00000000 nop
-80033ad8: 8c420008 lw v0,8(v0)
-80033adc: 00000000 nop
-80033ae0: 00402021 move a0,v0
-80033ae4: 0c00cdcb jal 8003372c <SsFreqToPitch>
-80033ae8: 00000000 nop
-80033aec: 00402821 move a1,v0
-80033af0: 02002021 move a0,s0
-80033af4: 0c00cbcd jal 80032f34 <SsVoicePitch>
-80033af8: 00000000 nop
- SsVoiceStartAddr(voice, vag->spu_addr);
-80033afc: 93c30024 lbu v1,36(s8)
-80033b00: 8fc20020 lw v0,32(s8)
-80033b04: 00000000 nop
-80033b08: 8c420020 lw v0,32(v0)
-80033b0c: 00000000 nop
-80033b10: 00402821 move a1,v0
-80033b14: 00602021 move a0,v1
-80033b18: 0c00cbe6 jal 80032f98 <SsVoiceStartAddr>
-80033b1c: 00000000 nop
- SsVoiceVol(voice, vl, vr);
-80033b20: 93c20024 lbu v0,36(s8)
-80033b24: 97c30028 lhu v1,40(s8)
-80033b28: 97c4002c lhu a0,44(s8)
-80033b2c: 00000000 nop
-80033b30: 00803021 move a2,a0
-80033b34: 00602821 move a1,v1
-80033b38: 00402021 move a0,v0
-80033b3c: 0c00cbae jal 80032eb8 <SsVoiceVol>
-80033b40: 00000000 nop
- SsKeyOn(voice);
-80033b44: 93c20024 lbu v0,36(s8)
-80033b48: 00000000 nop
-80033b4c: 00402021 move a0,v0
-80033b50: 0c00cc3b jal 800330ec <SsKeyOn>
-80033b54: 00000000 nop
-
- vag->cur_voice = voice;
-80033b58: 83c30024 lb v1,36(s8)
-80033b5c: 8fc20020 lw v0,32(s8)
-80033b60: 00000000 nop
-80033b64: a0430024 sb v1,36(v0)
-}
-80033b68: 00000000 nop
-80033b6c: 03c0e821 move sp,s8
-80033b70: 8fbf001c lw ra,28(sp)
-80033b74: 8fbe0018 lw s8,24(sp)
-80033b78: 8fb00014 lw s0,20(sp)
-80033b7c: 27bd0020 addiu sp,sp,32
-80033b80: 03e00008 jr ra
-80033b84: 00000000 nop
-
-80033b88 <SsStopVag>:
-
-void SsStopVag(SsVag *vag)
-{
-80033b88: 27bdffe8 addiu sp,sp,-24
-80033b8c: afbf0014 sw ra,20(sp)
-80033b90: afbe0010 sw s8,16(sp)
-80033b94: 03a0f021 move s8,sp
-80033b98: afc40018 sw a0,24(s8)
- SsKeyOff(vag->cur_voice);
-80033b9c: 8fc20018 lw v0,24(s8)
-80033ba0: 00000000 nop
-80033ba4: 80420024 lb v0,36(v0)
-80033ba8: 00000000 nop
-80033bac: 00402021 move a0,v0
-80033bb0: 0c00cc57 jal 8003315c <SsKeyOff>
-80033bb4: 00000000 nop
- vag->cur_voice = -1;
-80033bb8: 8fc20018 lw v0,24(s8)
-80033bbc: 2403ffff li v1,-1
-80033bc0: a0430024 sb v1,36(v0)
-}
-80033bc4: 00000000 nop
-80033bc8: 03c0e821 move sp,s8
-80033bcc: 8fbf0014 lw ra,20(sp)
-80033bd0: 8fbe0010 lw s8,16(sp)
-80033bd4: 27bd0018 addiu sp,sp,24
-80033bd8: 03e00008 jr ra
-80033bdc: 00000000 nop
-
-80033be0 <SsResetVagAddr>:
-
-void SsResetVagAddr()
-{
-80033be0: 27bdfff8 addiu sp,sp,-8
-80033be4: afbe0004 sw s8,4(sp)
-80033be8: 03a0f021 move s8,sp
- ss_vag_addr = SPU_DATA_BASE_ADDR;
-80033bec: 3c028007 lui v0,0x8007
-80033bf0: 24031010 li v1,4112
-80033bf4: ac431cec sw v1,7404(v0)
-}
-80033bf8: 00000000 nop
-80033bfc: 03c0e821 move sp,s8
-80033c00: 8fbe0004 lw s8,4(sp)
-80033c04: 27bd0008 addiu sp,sp,8
-80033c08: 03e00008 jr ra
-80033c0c: 00000000 nop
-
-80033c10 <SsEnableCd>:
-
-void SsEnableCd()
-{
-80033c10: 27bdffe8 addiu sp,sp,-24
-80033c14: afbf0014 sw ra,20(sp)
-80033c18: afbe0010 sw s8,16(sp)
-80033c1c: 03a0f021 move s8,sp
- SPU_CONTROL |= 1;
-80033c20: 3c021f80 lui v0,0x1f80
-80033c24: 34421daa ori v0,v0,0x1daa
-80033c28: 3c031f80 lui v1,0x1f80
-80033c2c: 34631daa ori v1,v1,0x1daa
-80033c30: 94630000 lhu v1,0(v1)
-80033c34: 00000000 nop
-80033c38: 34630001 ori v1,v1,0x1
-80033c3c: 3063ffff andi v1,v1,0xffff
-80033c40: a4430000 sh v1,0(v0)
- CdSendCommand(CdlDemute, 0);
-80033c44: 00002821 move a1,zero
-80033c48: 2404000c li a0,12
-80033c4c: 0c00aa46 jal 8002a918 <CdSendCommand>
-80033c50: 00000000 nop
-}
-80033c54: 00000000 nop
-80033c58: 03c0e821 move sp,s8
-80033c5c: 8fbf0014 lw ra,20(sp)
-80033c60: 8fbe0010 lw s8,16(sp)
-80033c64: 27bd0018 addiu sp,sp,24
-80033c68: 03e00008 jr ra
-80033c6c: 00000000 nop
-
-80033c70 <SsEnableExt>:
-
-void SsEnableExt()
-{
-80033c70: 27bdfff8 addiu sp,sp,-8
-80033c74: afbe0004 sw s8,4(sp)
-80033c78: 03a0f021 move s8,sp
- SPU_CONTROL |= 2;
-80033c7c: 3c021f80 lui v0,0x1f80
-80033c80: 34421daa ori v0,v0,0x1daa
-80033c84: 3c031f80 lui v1,0x1f80
-80033c88: 34631daa ori v1,v1,0x1daa
-80033c8c: 94630000 lhu v1,0(v1)
-80033c90: 00000000 nop
-80033c94: 34630002 ori v1,v1,0x2
-80033c98: 3063ffff andi v1,v1,0xffff
-80033c9c: a4430000 sh v1,0(v0)
-}
-80033ca0: 00000000 nop
-80033ca4: 03c0e821 move sp,s8
-80033ca8: 8fbe0004 lw s8,4(sp)
-80033cac: 27bd0008 addiu sp,sp,8
-80033cb0: 03e00008 jr ra
-80033cb4: 00000000 nop
-
-80033cb8 <SsCdVol>:
-
-void SsCdVol(unsigned short left, unsigned short right)
-{
-80033cb8: 27bdfff8 addiu sp,sp,-8
-80033cbc: afbe0004 sw s8,4(sp)
-80033cc0: 03a0f021 move s8,sp
-80033cc4: 00801821 move v1,a0
-80033cc8: 00a01021 move v0,a1
-80033ccc: a7c30008 sh v1,8(s8)
-80033cd0: a7c2000c sh v0,12(s8)
- SPU_CD_MVOL_L = left;
-80033cd4: 3c021f80 lui v0,0x1f80
-80033cd8: 34421db0 ori v0,v0,0x1db0
-80033cdc: 97c30008 lhu v1,8(s8)
-80033ce0: 00000000 nop
-80033ce4: a4430000 sh v1,0(v0)
- SPU_CD_MVOL_R = right;
-80033ce8: 3c021f80 lui v0,0x1f80
-80033cec: 34421db2 ori v0,v0,0x1db2
-80033cf0: 97c3000c lhu v1,12(s8)
-80033cf4: 00000000 nop
-80033cf8: a4430000 sh v1,0(v0)
-}
-80033cfc: 00000000 nop
-80033d00: 03c0e821 move sp,s8
-80033d04: 8fbe0004 lw s8,4(sp)
-80033d08: 27bd0008 addiu sp,sp,8
-80033d0c: 03e00008 jr ra
-80033d10: 00000000 nop
-
-80033d14 <SIOStart>:
-#include <psx.h>
-#include <psxsio.h>
-#include <stdio.h>
-
-void SIOStart(int bitrate)
-{
-80033d14: 27bdffe8 addiu sp,sp,-24
-80033d18: afbf0014 sw ra,20(sp)
-80033d1c: afbe0010 sw s8,16(sp)
-80033d20: 03a0f021 move s8,sp
-80033d24: afc40018 sw a0,24(s8)
- /*Set to 8N1 mode with desired bitrate*/
- SIOStartEx(bitrate, SIO_DATA_LEN_8, SIO_PARITY_NONE, SIO_STOP_BIT_1);
-80033d28: 24070001 li a3,1
-80033d2c: 00003021 move a2,zero
-80033d30: 24050003 li a1,3
-80033d34: 8fc40018 lw a0,24(s8)
-80033d38: 0c00cf57 jal 80033d5c <SIOStartEx>
-80033d3c: 00000000 nop
-}
-80033d40: 00000000 nop
-80033d44: 03c0e821 move sp,s8
-80033d48: 8fbf0014 lw ra,20(sp)
-80033d4c: 8fbe0010 lw s8,16(sp)
-80033d50: 27bd0018 addiu sp,sp,24
-80033d54: 03e00008 jr ra
-80033d58: 00000000 nop
-
-80033d5c <SIOStartEx>:
-
-void SIOStartEx(int bitrate, int datalength, int parity, int stopbit)
-{
-80033d5c: 27bdfff8 addiu sp,sp,-8
-80033d60: afbe0004 sw s8,4(sp)
-80033d64: 03a0f021 move s8,sp
-80033d68: afc40008 sw a0,8(s8)
-80033d6c: afc5000c sw a1,12(s8)
-80033d70: afc60010 sw a2,16(s8)
-80033d74: afc70014 sw a3,20(s8)
- /*Set SIO_MODE register, bitrate reload factor set to MUL16 by default*/
- SIO_MODE = SIO_REL_MUL16 | (datalength << 2) | (parity << 4) | (stopbit << 6);
-80033d78: 3c021f80 lui v0,0x1f80
-80033d7c: 34421058 ori v0,v0,0x1058
-80033d80: 8fc3000c lw v1,12(s8)
-80033d84: 00000000 nop
-80033d88: 00031880 sll v1,v1,0x2
-80033d8c: 00031c00 sll v1,v1,0x10
-80033d90: 00031c03 sra v1,v1,0x10
-80033d94: 34630002 ori v1,v1,0x2
-80033d98: 00032400 sll a0,v1,0x10
-80033d9c: 00042403 sra a0,a0,0x10
-80033da0: 8fc30010 lw v1,16(s8)
-80033da4: 00000000 nop
-80033da8: 00031900 sll v1,v1,0x4
-80033dac: 00031c00 sll v1,v1,0x10
-80033db0: 00031c03 sra v1,v1,0x10
-80033db4: 00831825 or v1,a0,v1
-80033db8: 00032400 sll a0,v1,0x10
-80033dbc: 00042403 sra a0,a0,0x10
-80033dc0: 8fc30014 lw v1,20(s8)
-80033dc4: 00000000 nop
-80033dc8: 00031980 sll v1,v1,0x6
-80033dcc: 00031c00 sll v1,v1,0x10
-80033dd0: 00031c03 sra v1,v1,0x10
-80033dd4: 00831825 or v1,a0,v1
-80033dd8: 00031c00 sll v1,v1,0x10
-80033ddc: 00031c03 sra v1,v1,0x10
-80033de0: 3063ffff andi v1,v1,0xffff
-80033de4: a4430000 sh v1,0(v0)
-
- /*Reset SIO_CTRL register.*/
- SIO_CTRL = 0;
-80033de8: 3c021f80 lui v0,0x1f80
-80033dec: 3442105a ori v0,v0,0x105a
-80033df0: a4400000 sh zero,0(v0)
-
- /*Set TX and RT to enabled, no handshaking signals.*/
- SIO_CTRL = 1 | (1 << 2);
-80033df4: 3c021f80 lui v0,0x1f80
-80033df8: 3442105a ori v0,v0,0x105a
-80033dfc: 24030005 li v1,5
-80033e00: a4430000 sh v1,0(v0)
-
- /*Calculate bitrate reload value based on the given bitrate
- * Reload = SystemClock (33 Mhz) / (Factor (MULI16) * bitrate)*/
- SIO_BPSV = 0x204CC00 / (16 * bitrate);
-80033e04: 3c021f80 lui v0,0x1f80
-80033e08: 3442105e ori v0,v0,0x105e
-80033e0c: 8fc30008 lw v1,8(s8)
-80033e10: 00000000 nop
-80033e14: 00031900 sll v1,v1,0x4
-80033e18: 3c040204 lui a0,0x204
-80033e1c: 3484cc00 ori a0,a0,0xcc00
-80033e20: 14600002 bnez v1,80033e2c <SIOStartEx+0xd0>
-80033e24: 0083001a div zero,a0,v1
-80033e28: 0007000d break 0x7
-80033e2c: 00001810 mfhi v1
-80033e30: 00001812 mflo v1
-80033e34: 3063ffff andi v1,v1,0xffff
-80033e38: a4430000 sh v1,0(v0)
-}
-80033e3c: 00000000 nop
-80033e40: 03c0e821 move sp,s8
-80033e44: 8fbe0004 lw s8,4(sp)
-80033e48: 27bd0008 addiu sp,sp,8
-80033e4c: 03e00008 jr ra
-80033e50: 00000000 nop
-
-80033e54 <SIOStop>:
-
-void SIOStop()
-{
-80033e54: 27bdfff8 addiu sp,sp,-8
-80033e58: afbe0004 sw s8,4(sp)
-80033e5c: 03a0f021 move s8,sp
- /*Set all SIO related registers to zero*/
- SIO_MODE = 0;
-80033e60: 3c021f80 lui v0,0x1f80
-80033e64: 34421058 ori v0,v0,0x1058
-80033e68: a4400000 sh zero,0(v0)
- SIO_CTRL = 0;
-80033e6c: 3c021f80 lui v0,0x1f80
-80033e70: 3442105a ori v0,v0,0x105a
-80033e74: a4400000 sh zero,0(v0)
- SIO_BPSV = 0;
-80033e78: 3c021f80 lui v0,0x1f80
-80033e7c: 3442105e ori v0,v0,0x105e
-80033e80: a4400000 sh zero,0(v0)
-}
-80033e84: 00000000 nop
-80033e88: 03c0e821 move sp,s8
-80033e8c: 8fbe0004 lw s8,4(sp)
-80033e90: 27bd0008 addiu sp,sp,8
-80033e94: 03e00008 jr ra
-80033e98: 00000000 nop
-
-80033e9c <SIOReadByte>:
-
-unsigned char SIOReadByte()
-{
-80033e9c: 27bdfff8 addiu sp,sp,-8
-80033ea0: afbe0004 sw s8,4(sp)
-80033ea4: 03a0f021 move s8,sp
- return (unsigned char)SIO_TX_RX;
-80033ea8: 3c021f80 lui v0,0x1f80
-80033eac: 34421050 ori v0,v0,0x1050
-80033eb0: 90420000 lbu v0,0(v0)
-80033eb4: 00000000 nop
-80033eb8: 304200ff andi v0,v0,0xff
-}
-80033ebc: 03c0e821 move sp,s8
-80033ec0: 8fbe0004 lw s8,4(sp)
-80033ec4: 27bd0008 addiu sp,sp,8
-80033ec8: 03e00008 jr ra
-80033ecc: 00000000 nop
-
-80033ed0 <SIOSendByte>:
-
-void SIOSendByte(unsigned char data)
-{
-80033ed0: 27bdfff8 addiu sp,sp,-8
-80033ed4: afbe0004 sw s8,4(sp)
-80033ed8: 03a0f021 move s8,sp
-80033edc: 00801021 move v0,a0
-80033ee0: a3c20008 sb v0,8(s8)
- SIO_TX_RX = data;
-80033ee4: 3c021f80 lui v0,0x1f80
-80033ee8: 34421050 ori v0,v0,0x1050
-80033eec: 93c30008 lbu v1,8(s8)
-80033ef0: 00000000 nop
-80033ef4: a0430000 sb v1,0(v0)
-}
-80033ef8: 00000000 nop
-80033efc: 03c0e821 move sp,s8
-80033f00: 8fbe0004 lw s8,4(sp)
-80033f04: 27bd0008 addiu sp,sp,8
-80033f08: 03e00008 jr ra
-80033f0c: 00000000 nop
-
-80033f10 <SIOCheckInBuffer>:
-
-int SIOCheckInBuffer()
-{
-80033f10: 27bdfff8 addiu sp,sp,-8
-80033f14: afbe0004 sw s8,4(sp)
-80033f18: 03a0f021 move s8,sp
- /*Return status of RX FIFO*/
- return (SIO_STAT & 0x2)>0;
-80033f1c: 3c021f80 lui v0,0x1f80
-80033f20: 34421054 ori v0,v0,0x1054
-80033f24: 94420000 lhu v0,0(v0)
-80033f28: 00000000 nop
-80033f2c: 3042ffff andi v0,v0,0xffff
-80033f30: 30420002 andi v0,v0,0x2
-80033f34: 0002102a slt v0,zero,v0
-80033f38: 304200ff andi v0,v0,0xff
-}
-80033f3c: 03c0e821 move sp,s8
-80033f40: 8fbe0004 lw s8,4(sp)
-80033f44: 27bd0008 addiu sp,sp,8
-80033f48: 03e00008 jr ra
-80033f4c: 00000000 nop
-
-80033f50 <SIOCheckOutBuffer>:
-
-int SIOCheckOutBuffer()
-{
-80033f50: 27bdfff8 addiu sp,sp,-8
-80033f54: afbe0004 sw s8,4(sp)
-80033f58: 03a0f021 move s8,sp
- /*Return status of TX Ready flag*/
- return (SIO_STAT & 0x4)>0;
-80033f5c: 3c021f80 lui v0,0x1f80
-80033f60: 34421054 ori v0,v0,0x1054
-80033f64: 94420000 lhu v0,0(v0)
-80033f68: 00000000 nop
-80033f6c: 3042ffff andi v0,v0,0xffff
-80033f70: 30420004 andi v0,v0,0x4
-80033f74: 0002102a slt v0,zero,v0
-80033f78: 304200ff andi v0,v0,0xff
-}
-80033f7c: 03c0e821 move sp,s8
-80033f80: 8fbe0004 lw s8,4(sp)
-80033f84: 27bd0008 addiu sp,sp,8
-80033f88: 03e00008 jr ra
-80033f8c: 00000000 nop
-
-80033f90 <PSX_InitEx>:
-
-
-extern void SetCDROMHandler(void);
-
-void PSX_InitEx(unsigned int flags)
-{
-80033f90: 27bdffe8 addiu sp,sp,-24
-80033f94: afbf0014 sw ra,20(sp)
-80033f98: afbe0010 sw s8,16(sp)
-80033f9c: 03a0f021 move s8,sp
-80033fa0: afc40018 sw a0,24(s8)
- if(flags & PSX_INIT_NOBIOS)
-80033fa4: 8fc20018 lw v0,24(s8)
-80033fa8: 00000000 nop
-80033fac: 30420004 andi v0,v0,0x4
-80033fb0: 10400009 beqz v0,80033fd8 <PSX_InitEx+0x48>
-80033fb4: 00000000 nop
- {
- printf("Entering No BIOS mode...\n");
-80033fb8: 3c028004 lui v0,0x8004
-80033fbc: 2444fe18 addiu a0,v0,-488
-80033fc0: 0c00ed8f jal 8003b63c <printf>
-80033fc4: 00000000 nop
-
- __PSX_Init_NoBios();
-80033fc8: 0c00ef30 jal 8003bcc0 <__PSX_Init_NoBios>
-80033fcc: 00000000 nop
- goto _initex_end;
-80033fd0: 10000033 b 800340a0 <PSX_InitEx+0x110>
-80033fd4: 00000000 nop
- }
-
- if(flags & PSX_INIT_SAVESTATE)
-80033fd8: 8fc20018 lw v0,24(s8)
-80033fdc: 00000000 nop
-80033fe0: 30420002 andi v0,v0,0x2
-80033fe4: 10400012 beqz v0,80034030 <PSX_InitEx+0xa0>
-80033fe8: 00000000 nop
- {
-// Save BIOS state
-// This simply copies the entire section of RAM used by the BIOS
-// in a buffer.
- EnterCriticalSection();
-80033fec: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80033ff0: 00000000 nop
- psxBiosState = malloc(0x10000);
-80033ff4: 3c040001 lui a0,0x1
-80033ff8: 0c00ac10 jal 8002b040 <malloc>
-80033ffc: 00000000 nop
-80034000: 00401821 move v1,v0
-80034004: 3c028007 lui v0,0x8007
-80034008: ac431d04 sw v1,7428(v0)
- memcpy(psxBiosState, (void*)0x80000000, 0x10000);
-8003400c: 3c028007 lui v0,0x8007
-80034010: 8c421d04 lw v0,7428(v0)
-80034014: 3c060001 lui a2,0x1
-80034018: 3c058000 lui a1,0x8000
-8003401c: 00402021 move a0,v0
-80034020: 0c00d75e jal 80035d78 <memcpy>
-80034024: 00000000 nop
- ExitCriticalSection();
-80034028: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-8003402c: 00000000 nop
- }
-
- /* Reinitialize ISO 9660 filesystem driver */
-
- if(flags & PSX_INIT_CD)
-80034030: 8fc20018 lw v0,24(s8)
-80034034: 00000000 nop
-80034038: 30420001 andi v0,v0,0x1
-8003403c: 1040000b beqz v0,8003406c <PSX_InitEx+0xdc>
-80034040: 00000000 nop
- {
- EnterCriticalSection();
-80034044: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80034048: 00000000 nop
- _96_remove();
-8003404c: 0c00ee1c jal 8003b870 <_96_remove>
-80034050: 00000000 nop
- ExitCriticalSection();
-80034054: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-80034058: 00000000 nop
-
- _96_init();
-8003405c: 0c00ee18 jal 8003b860 <_96_init>
-80034060: 00000000 nop
-
- SetCDROMHandler();
-80034064: 0c00ee58 jal 8003b960 <SetCDROMHandler>
-80034068: 00000000 nop
- /*This is needed, otherwise PSX will crash when VBlank handler is set*/
- /*InitCARD(1);
- StartCARD();
- StopCARD();*/
-
- if(flags & PSX_INIT_CD)
-8003406c: 8fc20018 lw v0,24(s8)
-80034070: 00000000 nop
-80034074: 30420001 andi v0,v0,0x1
-80034078: 10400003 beqz v0,80034088 <PSX_InitEx+0xf8>
-8003407c: 00000000 nop
- _internal_cdromlib_init();
-80034080: 0c00ab31 jal 8002acc4 <_internal_cdromlib_init>
-80034084: 00000000 nop
-
- printf("PSXSDK testing version !!!\n");
-80034088: 3c028004 lui v0,0x8004
-8003408c: 2444fe34 addiu a0,v0,-460
-80034090: 0c00ed8f jal 8003b63c <printf>
-80034094: 00000000 nop
-
- vblank_handler_set = 0;
-80034098: 3c028007 lui v0,0x8007
-8003409c: ac401cf0 sw zero,7408(v0)
-_initex_end:
- psxSdkFlags = flags;
-800340a0: 3c028007 lui v0,0x8007
-800340a4: 8fc30018 lw v1,24(s8)
-800340a8: 00000000 nop
-800340ac: ac431d00 sw v1,7424(v0)
-}
-800340b0: 00000000 nop
-800340b4: 03c0e821 move sp,s8
-800340b8: 8fbf0014 lw ra,20(sp)
-800340bc: 8fbe0010 lw s8,16(sp)
-800340c0: 27bd0018 addiu sp,sp,24
-800340c4: 03e00008 jr ra
-800340c8: 00000000 nop
-
-800340cc <PSX_Init>:
-
-void PSX_Init(void)
-{
-800340cc: 27bdffe8 addiu sp,sp,-24
-800340d0: afbf0014 sw ra,20(sp)
-800340d4: afbe0010 sw s8,16(sp)
-800340d8: 03a0f021 move s8,sp
- PSX_InitEx(PSX_INIT_CD);
-800340dc: 24040001 li a0,1
-800340e0: 0c00cfe4 jal 80033f90 <PSX_InitEx>
-800340e4: 00000000 nop
-}
-800340e8: 00000000 nop
-800340ec: 03c0e821 move sp,s8
-800340f0: 8fbf0014 lw ra,20(sp)
-800340f4: 8fbe0010 lw s8,16(sp)
-800340f8: 27bd0018 addiu sp,sp,24
-800340fc: 03e00008 jr ra
-80034100: 00000000 nop
-
-80034104 <PSX_DeInit>:
-
-void PSX_DeInit(void)
-{
-80034104: 27bdffe8 addiu sp,sp,-24
-80034108: afbf0014 sw ra,20(sp)
-8003410c: afbe0010 sw s8,16(sp)
-80034110: 03a0f021 move s8,sp
- if(psxSdkFlags & PSX_INIT_CD)
-80034114: 3c028007 lui v0,0x8007
-80034118: 8c421d00 lw v0,7424(v0)
-8003411c: 00000000 nop
-80034120: 30420001 andi v0,v0,0x1
-80034124: 10400007 beqz v0,80034144 <PSX_DeInit+0x40>
-80034128: 00000000 nop
- {
- EnterCriticalSection();
-8003412c: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80034130: 00000000 nop
- _96_remove();
-80034134: 0c00ee1c jal 8003b870 <_96_remove>
-80034138: 00000000 nop
- ExitCriticalSection();
-8003413c: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-80034140: 00000000 nop
- }
-
- RemoveVBlankHandler();
-80034144: 0c00d3ad jal 80034eb4 <RemoveVBlankHandler>
-80034148: 00000000 nop
-
- if(psxSdkFlags & PSX_INIT_SAVESTATE)// This must always be the last to be called!
-8003414c: 3c028007 lui v0,0x8007
-80034150: 8c421d00 lw v0,7424(v0)
-80034154: 00000000 nop
-80034158: 30420002 andi v0,v0,0x2
-8003415c: 10400003 beqz v0,8003416c <PSX_DeInit+0x68>
-80034160: 00000000 nop
- PSX_RestoreBiosState();
-80034164: 0c00d4a5 jal 80035294 <PSX_RestoreBiosState>
-80034168: 00000000 nop
-}
-8003416c: 00000000 nop
-80034170: 03c0e821 move sp,s8
-80034174: 8fbf0014 lw ra,20(sp)
-80034178: 8fbe0010 lw s8,16(sp)
-8003417c: 27bd0018 addiu sp,sp,24
-80034180: 03e00008 jr ra
-80034184: 00000000 nop
-
-80034188 <PSX_ReadPad>:
-
-void PSX_ReadPad(unsigned short *padbuf, unsigned short *padbuf2)
-{
-80034188: 27bdffc0 addiu sp,sp,-64
-8003418c: afbf003c sw ra,60(sp)
-80034190: afbe0038 sw s8,56(sp)
-80034194: 03a0f021 move s8,sp
-80034198: afc40040 sw a0,64(s8)
-8003419c: afc50044 sw a1,68(s8)
- int x;
- unsigned char arr[PAD_READ_RAW_SIZE];
- unsigned short *padbuf_a[2];
-
-// Now uses low level pad routines...
- padbuf_a[0] = padbuf;
-800341a0: 8fc20040 lw v0,64(s8)
-800341a4: 00000000 nop
-800341a8: afc2002c sw v0,44(s8)
- padbuf_a[1] = padbuf2;
-800341ac: 8fc20044 lw v0,68(s8)
-800341b0: 00000000 nop
-800341b4: afc20030 sw v0,48(s8)
-
- for(x = 0; x < 2; x++)
-800341b8: afc00010 sw zero,16(s8)
-800341bc: 1000003e b 800342b8 <PSX_ReadPad+0x130>
-800341c0: 00000000 nop
- {
- pad_read_raw(x, arr);
-800341c4: 27c20014 addiu v0,s8,20
-800341c8: 00402821 move a1,v0
-800341cc: 8fc40010 lw a0,16(s8)
-800341d0: 0c00c9e9 jal 800327a4 <pad_read_raw>
-800341d4: 00000000 nop
-
- if(arr[2] == 0x5a)
-800341d8: 93c30016 lbu v1,22(s8)
-800341dc: 2402005a li v0,90
-800341e0: 14620029 bne v1,v0,80034288 <PSX_ReadPad+0x100>
-800341e4: 00000000 nop
- {
- *padbuf_a[x] = (arr[3]<<8)|arr[4];
-800341e8: 8fc20010 lw v0,16(s8)
-800341ec: 00000000 nop
-800341f0: 00021080 sll v0,v0,0x2
-800341f4: 27c30010 addiu v1,s8,16
-800341f8: 00621021 addu v0,v1,v0
-800341fc: 8c42001c lw v0,28(v0)
-80034200: 93c30017 lbu v1,23(s8)
-80034204: 00000000 nop
-80034208: 00031a00 sll v1,v1,0x8
-8003420c: 00032400 sll a0,v1,0x10
-80034210: 00042403 sra a0,a0,0x10
-80034214: 93c30018 lbu v1,24(s8)
-80034218: 00000000 nop
-8003421c: 00031c00 sll v1,v1,0x10
-80034220: 00031c03 sra v1,v1,0x10
-80034224: 00831825 or v1,a0,v1
-80034228: 00031c00 sll v1,v1,0x10
-8003422c: 00031c03 sra v1,v1,0x10
-80034230: 3063ffff andi v1,v1,0xffff
-80034234: a4430000 sh v1,0(v0)
- *padbuf_a[x] = ~*padbuf_a[x];
-80034238: 8fc20010 lw v0,16(s8)
-8003423c: 00000000 nop
-80034240: 00021080 sll v0,v0,0x2
-80034244: 27c30010 addiu v1,s8,16
-80034248: 00621021 addu v0,v1,v0
-8003424c: 8c43001c lw v1,28(v0)
-80034250: 8fc20010 lw v0,16(s8)
-80034254: 00000000 nop
-80034258: 00021080 sll v0,v0,0x2
-8003425c: 27c40010 addiu a0,s8,16
-80034260: 00821021 addu v0,a0,v0
-80034264: 8c42001c lw v0,28(v0)
-80034268: 00000000 nop
-8003426c: 94420000 lhu v0,0(v0)
-80034270: 00000000 nop
-80034274: 00021027 nor v0,zero,v0
-80034278: 3042ffff andi v0,v0,0xffff
-8003427c: a4620000 sh v0,0(v1)
-80034280: 10000009 b 800342a8 <PSX_ReadPad+0x120>
-80034284: 00000000 nop
- }
- else
- *padbuf_a[x] = 0;
-80034288: 8fc20010 lw v0,16(s8)
-8003428c: 00000000 nop
-80034290: 00021080 sll v0,v0,0x2
-80034294: 27c30010 addiu v1,s8,16
-80034298: 00621021 addu v0,v1,v0
-8003429c: 8c42001c lw v0,28(v0)
-800342a0: 00000000 nop
-800342a4: a4400000 sh zero,0(v0)
-
-// Now uses low level pad routines...
- padbuf_a[0] = padbuf;
- padbuf_a[1] = padbuf2;
-
- for(x = 0; x < 2; x++)
-800342a8: 8fc20010 lw v0,16(s8)
-800342ac: 00000000 nop
-800342b0: 24420001 addiu v0,v0,1
-800342b4: afc20010 sw v0,16(s8)
-800342b8: 8fc20010 lw v0,16(s8)
-800342bc: 00000000 nop
-800342c0: 28420002 slti v0,v0,2
-800342c4: 1440ffbf bnez v0,800341c4 <PSX_ReadPad+0x3c>
-800342c8: 00000000 nop
- *padbuf_a[x] = ~*padbuf_a[x];
- }
- else
- *padbuf_a[x] = 0;
- }
-}
-800342cc: 00000000 nop
-800342d0: 03c0e821 move sp,s8
-800342d4: 8fbf003c lw ra,60(sp)
-800342d8: 8fbe0038 lw s8,56(sp)
-800342dc: 27bd0040 addiu sp,sp,64
-800342e0: 03e00008 jr ra
-800342e4: 00000000 nop
-
-800342e8 <PSX_PollPad_Fast>:
-
-unsigned char psxsdkPadArr[PAD_READ_RAW_SIZE];
-
-void PSX_PollPad_Fast(int pad_num, psx_pad_state *pad_state)
-{
-800342e8: 27bdfff0 addiu sp,sp,-16
-800342ec: afbe000c sw s8,12(sp)
-800342f0: 03a0f021 move s8,sp
-800342f4: afc40010 sw a0,16(s8)
-800342f8: afc50014 sw a1,20(s8)
- pad_read_raw(pad_num, arr);*/
-
- //Rely on pad_read_raw being called AFTER PSX_ReadPad(),
- //so that pad_read_raw is only called once.
-
- unsigned char *arr = psxsdkPadArr;
-800342fc: 3c028007 lui v0,0x8007
-80034300: 24421bd0 addiu v0,v0,7120
-80034304: afc20000 sw v0,0(s8)
-
- pad_state->status = arr[0];
-80034308: 8fc20000 lw v0,0(s8)
-8003430c: 00000000 nop
-80034310: 90430000 lbu v1,0(v0)
-80034314: 8fc20014 lw v0,20(s8)
-80034318: 00000000 nop
-8003431c: a0430000 sb v1,0(v0)
- pad_state->id = arr[1];
-80034320: 8fc20000 lw v0,0(s8)
-80034324: 00000000 nop
-80034328: 90430001 lbu v1,1(v0)
-8003432c: 8fc20014 lw v0,20(s8)
-80034330: 00000000 nop
-80034334: a0430001 sb v1,1(v0)
-
- pad_state->buttons = (arr[3]<<8)|arr[4];
-80034338: 8fc20000 lw v0,0(s8)
-8003433c: 00000000 nop
-80034340: 24420003 addiu v0,v0,3
-80034344: 90420000 lbu v0,0(v0)
-80034348: 00000000 nop
-8003434c: 00021200 sll v0,v0,0x8
-80034350: 00021c00 sll v1,v0,0x10
-80034354: 00031c03 sra v1,v1,0x10
-80034358: 8fc20000 lw v0,0(s8)
-8003435c: 00000000 nop
-80034360: 24420004 addiu v0,v0,4
-80034364: 90420000 lbu v0,0(v0)
-80034368: 00000000 nop
-8003436c: 00021400 sll v0,v0,0x10
-80034370: 00021403 sra v0,v0,0x10
-80034374: 00621025 or v0,v1,v0
-80034378: 00021400 sll v0,v0,0x10
-8003437c: 00021403 sra v0,v0,0x10
-80034380: 3043ffff andi v1,v0,0xffff
-80034384: 8fc20014 lw v0,20(s8)
-80034388: 00000000 nop
-8003438c: a4430004 sh v1,4(v0)
- pad_state->buttons = ~pad_state->buttons;
-80034390: 8fc20014 lw v0,20(s8)
-80034394: 00000000 nop
-80034398: 94420004 lhu v0,4(v0)
-8003439c: 00000000 nop
-800343a0: 00021027 nor v0,zero,v0
-800343a4: 3043ffff andi v1,v0,0xffff
-800343a8: 8fc20014 lw v0,20(s8)
-800343ac: 00000000 nop
-800343b0: a4430004 sh v1,4(v0)
-
- //dprintf("Pad Status: 0x%.2X\n",pad_state->status);
-
- switch(pad_state->id)
-800343b4: 8fc20014 lw v0,20(s8)
-800343b8: 00000000 nop
-800343bc: 90420001 lbu v0,1(v0)
-800343c0: 24030041 li v1,65
-800343c4: 1043001f beq v0,v1,80034444 <PSX_PollPad_Fast+0x15c>
-800343c8: 00000000 nop
-800343cc: 28430042 slti v1,v0,66
-800343d0: 1060000c beqz v1,80034404 <PSX_PollPad_Fast+0x11c>
-800343d4: 00000000 nop
-800343d8: 24030023 li v1,35
-800343dc: 10430088 beq v0,v1,80034600 <PSX_PollPad_Fast+0x318>
-800343e0: 00000000 nop
-800343e4: 24030031 li v1,49
-800343e8: 104300a8 beq v0,v1,8003468c <PSX_PollPad_Fast+0x3a4>
-800343ec: 00000000 nop
-800343f0: 24030012 li v1,18
-800343f4: 104300aa beq v0,v1,800346a0 <PSX_PollPad_Fast+0x3b8>
-800343f8: 00000000 nop
-800343fc: 100000ad b 800346b4 <PSX_PollPad_Fast+0x3cc>
-80034400: 00000000 nop
-80034404: 24030073 li v1,115
-80034408: 10430048 beq v0,v1,8003452c <PSX_PollPad_Fast+0x244>
-8003440c: 00000000 nop
-80034410: 240300ff li v1,255
-80034414: 10430006 beq v0,v1,80034430 <PSX_PollPad_Fast+0x148>
-80034418: 00000000 nop
-8003441c: 24030053 li v1,83
-80034420: 1043000d beq v0,v1,80034458 <PSX_PollPad_Fast+0x170>
-80034424: 00000000 nop
-80034428: 100000a2 b 800346b4 <PSX_PollPad_Fast+0x3cc>
-8003442c: 00000000 nop
- {
- case 0xFF:
- pad_state->type = PADTYPE_NONE;
-80034430: 8fc20014 lw v0,20(s8)
-80034434: 00000000 nop
-80034438: a0400002 sb zero,2(v0)
- break;
-8003443c: 100000a0 b 800346c0 <PSX_PollPad_Fast+0x3d8>
-80034440: 00000000 nop
- case 0x41:
- pad_state->type = PADTYPE_NORMALPAD;
-80034444: 8fc20014 lw v0,20(s8)
-80034448: 24030001 li v1,1
-8003444c: a0430002 sb v1,2(v0)
- break;
-80034450: 1000009b b 800346c0 <PSX_PollPad_Fast+0x3d8>
-80034454: 00000000 nop
- case 0x53:
- pad_state->type = PADTYPE_ANALOGJOY;
-80034458: 8fc20014 lw v0,20(s8)
-8003445c: 24030002 li v1,2
-80034460: a0430002 sb v1,2(v0)
- pad_state->extra.analogJoy.x[0] = arr[5]-128;
-80034464: 8fc20000 lw v0,0(s8)
-80034468: 00000000 nop
-8003446c: 24420005 addiu v0,v0,5
-80034470: 90420000 lbu v0,0(v0)
-80034474: 00000000 nop
-80034478: 2442ff80 addiu v0,v0,-128
-8003447c: 304200ff andi v0,v0,0xff
-80034480: 00021e00 sll v1,v0,0x18
-80034484: 00031e03 sra v1,v1,0x18
-80034488: 8fc20014 lw v0,20(s8)
-8003448c: 00000000 nop
-80034490: a0430006 sb v1,6(v0)
- pad_state->extra.analogJoy.y[0] = arr[6]-128;
-80034494: 8fc20000 lw v0,0(s8)
-80034498: 00000000 nop
-8003449c: 24420006 addiu v0,v0,6
-800344a0: 90420000 lbu v0,0(v0)
-800344a4: 00000000 nop
-800344a8: 2442ff80 addiu v0,v0,-128
-800344ac: 304200ff andi v0,v0,0xff
-800344b0: 00021e00 sll v1,v0,0x18
-800344b4: 00031e03 sra v1,v1,0x18
-800344b8: 8fc20014 lw v0,20(s8)
-800344bc: 00000000 nop
-800344c0: a0430008 sb v1,8(v0)
- pad_state->extra.analogJoy.x[1] = arr[7]-128;
-800344c4: 8fc20000 lw v0,0(s8)
-800344c8: 00000000 nop
-800344cc: 24420007 addiu v0,v0,7
-800344d0: 90420000 lbu v0,0(v0)
-800344d4: 00000000 nop
-800344d8: 2442ff80 addiu v0,v0,-128
-800344dc: 304200ff andi v0,v0,0xff
-800344e0: 00021e00 sll v1,v0,0x18
-800344e4: 00031e03 sra v1,v1,0x18
-800344e8: 8fc20014 lw v0,20(s8)
-800344ec: 00000000 nop
-800344f0: a0430007 sb v1,7(v0)
- pad_state->extra.analogJoy.y[1] = arr[8]-128;
-800344f4: 8fc20000 lw v0,0(s8)
-800344f8: 00000000 nop
-800344fc: 24420008 addiu v0,v0,8
-80034500: 90420000 lbu v0,0(v0)
-80034504: 00000000 nop
-80034508: 2442ff80 addiu v0,v0,-128
-8003450c: 304200ff andi v0,v0,0xff
-80034510: 00021e00 sll v1,v0,0x18
-80034514: 00031e03 sra v1,v1,0x18
-80034518: 8fc20014 lw v0,20(s8)
-8003451c: 00000000 nop
-80034520: a0430009 sb v1,9(v0)
- break;
-80034524: 10000066 b 800346c0 <PSX_PollPad_Fast+0x3d8>
-80034528: 00000000 nop
- case 0x73:
- pad_state->type = PADTYPE_ANALOGPAD;
-8003452c: 8fc20014 lw v0,20(s8)
-80034530: 24030003 li v1,3
-80034534: a0430002 sb v1,2(v0)
- pad_state->extra.analogPad.x[0] = arr[5]-128;
-80034538: 8fc20000 lw v0,0(s8)
-8003453c: 00000000 nop
-80034540: 24420005 addiu v0,v0,5
-80034544: 90420000 lbu v0,0(v0)
-80034548: 00000000 nop
-8003454c: 2442ff80 addiu v0,v0,-128
-80034550: 304200ff andi v0,v0,0xff
-80034554: 00021e00 sll v1,v0,0x18
-80034558: 00031e03 sra v1,v1,0x18
-8003455c: 8fc20014 lw v0,20(s8)
-80034560: 00000000 nop
-80034564: a0430006 sb v1,6(v0)
- pad_state->extra.analogPad.y[0] = arr[6]-128;
-80034568: 8fc20000 lw v0,0(s8)
-8003456c: 00000000 nop
-80034570: 24420006 addiu v0,v0,6
-80034574: 90420000 lbu v0,0(v0)
-80034578: 00000000 nop
-8003457c: 2442ff80 addiu v0,v0,-128
-80034580: 304200ff andi v0,v0,0xff
-80034584: 00021e00 sll v1,v0,0x18
-80034588: 00031e03 sra v1,v1,0x18
-8003458c: 8fc20014 lw v0,20(s8)
-80034590: 00000000 nop
-80034594: a0430008 sb v1,8(v0)
- pad_state->extra.analogPad.x[1] = arr[7]-128;
-80034598: 8fc20000 lw v0,0(s8)
-8003459c: 00000000 nop
-800345a0: 24420007 addiu v0,v0,7
-800345a4: 90420000 lbu v0,0(v0)
-800345a8: 00000000 nop
-800345ac: 2442ff80 addiu v0,v0,-128
-800345b0: 304200ff andi v0,v0,0xff
-800345b4: 00021e00 sll v1,v0,0x18
-800345b8: 00031e03 sra v1,v1,0x18
-800345bc: 8fc20014 lw v0,20(s8)
-800345c0: 00000000 nop
-800345c4: a0430007 sb v1,7(v0)
- pad_state->extra.analogPad.y[1] = arr[8]-128;
-800345c8: 8fc20000 lw v0,0(s8)
-800345cc: 00000000 nop
-800345d0: 24420008 addiu v0,v0,8
-800345d4: 90420000 lbu v0,0(v0)
-800345d8: 00000000 nop
-800345dc: 2442ff80 addiu v0,v0,-128
-800345e0: 304200ff andi v0,v0,0xff
-800345e4: 00021e00 sll v1,v0,0x18
-800345e8: 00031e03 sra v1,v1,0x18
-800345ec: 8fc20014 lw v0,20(s8)
-800345f0: 00000000 nop
-800345f4: a0430009 sb v1,9(v0)
- break;
-800345f8: 10000031 b 800346c0 <PSX_PollPad_Fast+0x3d8>
-800345fc: 00000000 nop
- case 0x23:
- pad_state->type = PADTYPE_NEGCON;
-80034600: 8fc20014 lw v0,20(s8)
-80034604: 24030004 li v1,4
-80034608: a0430002 sb v1,2(v0)
- pad_state->extra.negCon.steering = arr[5]-128;
-8003460c: 8fc20000 lw v0,0(s8)
-80034610: 00000000 nop
-80034614: 24420005 addiu v0,v0,5
-80034618: 90420000 lbu v0,0(v0)
-8003461c: 00000000 nop
-80034620: 2442ff80 addiu v0,v0,-128
-80034624: 304200ff andi v0,v0,0xff
-80034628: 00021e00 sll v1,v0,0x18
-8003462c: 00031e03 sra v1,v1,0x18
-80034630: 8fc20014 lw v0,20(s8)
-80034634: 00000000 nop
-80034638: a0430006 sb v1,6(v0)
- pad_state->extra.negCon.one = arr[6];
-8003463c: 8fc20000 lw v0,0(s8)
-80034640: 00000000 nop
-80034644: 90430006 lbu v1,6(v0)
-80034648: 8fc20014 lw v0,20(s8)
-8003464c: 00000000 nop
-80034650: a0430007 sb v1,7(v0)
- pad_state->extra.negCon.two = arr[7];
-80034654: 8fc20000 lw v0,0(s8)
-80034658: 00000000 nop
-8003465c: 90430007 lbu v1,7(v0)
-80034660: 8fc20014 lw v0,20(s8)
-80034664: 00000000 nop
-80034668: a0430008 sb v1,8(v0)
- pad_state->extra.negCon.shoulder = arr[8];
-8003466c: 8fc20000 lw v0,0(s8)
-80034670: 00000000 nop
-80034674: 90430008 lbu v1,8(v0)
-80034678: 8fc20014 lw v0,20(s8)
-8003467c: 00000000 nop
-80034680: a0430009 sb v1,9(v0)
- break;
-80034684: 1000000e b 800346c0 <PSX_PollPad_Fast+0x3d8>
-80034688: 00000000 nop
- case 0x31:
- pad_state->type = PADTYPE_KONAMIGUN;
-8003468c: 8fc20014 lw v0,20(s8)
-80034690: 24030005 li v1,5
-80034694: a0430002 sb v1,2(v0)
- break;
-80034698: 10000009 b 800346c0 <PSX_PollPad_Fast+0x3d8>
-8003469c: 00000000 nop
- case 0x12:
- pad_state->type = PADTYPE_MOUSE;
-800346a0: 8fc20014 lw v0,20(s8)
-800346a4: 24030006 li v1,6
-800346a8: a0430002 sb v1,2(v0)
- break;
-800346ac: 10000004 b 800346c0 <PSX_PollPad_Fast+0x3d8>
-800346b0: 00000000 nop
- default:
- pad_state->type = PADTYPE_UNKNOWN;
-800346b4: 8fc20014 lw v0,20(s8)
-800346b8: 24030007 li v1,7
-800346bc: a0430002 sb v1,2(v0)
- }
-}
-800346c0: 00000000 nop
-800346c4: 03c0e821 move sp,s8
-800346c8: 8fbe000c lw s8,12(sp)
-800346cc: 27bd0010 addiu sp,sp,16
-800346d0: 03e00008 jr ra
-800346d4: 00000000 nop
-
-800346d8 <PSX_PollPad>:
-
-void PSX_PollPad(int pad_num, psx_pad_state *pad_state)
-{
-800346d8: 27bdffe0 addiu sp,sp,-32
-800346dc: afbf001c sw ra,28(sp)
-800346e0: afbe0018 sw s8,24(sp)
-800346e4: 03a0f021 move s8,sp
-800346e8: afc40020 sw a0,32(s8)
-800346ec: afc50024 sw a1,36(s8)
- }
- else
- *padbuf_a[x] = 0;
- }*/
-
- unsigned char *arr = psxsdkPadArr;
-800346f0: 3c028007 lui v0,0x8007
-800346f4: 24421bd0 addiu v0,v0,7120
-800346f8: afc20010 sw v0,16(s8)
-
- pad_read_raw(pad_num, arr);
-800346fc: 8fc50010 lw a1,16(s8)
-80034700: 8fc40020 lw a0,32(s8)
-80034704: 0c00c9e9 jal 800327a4 <pad_read_raw>
-80034708: 00000000 nop
-
- PSX_PollPad_Fast(pad_num,pad_state);
-8003470c: 8fc50024 lw a1,36(s8)
-80034710: 8fc40020 lw a0,32(s8)
-80034714: 0c00d0ba jal 800342e8 <PSX_PollPad_Fast>
-80034718: 00000000 nop
-}
-8003471c: 00000000 nop
-80034720: 03c0e821 move sp,s8
-80034724: 8fbf001c lw ra,28(sp)
-80034728: 8fbe0018 lw s8,24(sp)
-8003472c: 27bd0020 addiu sp,sp,32
-80034730: 03e00008 jr ra
-80034734: 00000000 nop
-
-80034738 <PSX_GetSysInfo>:
- return PADTYPE_UNKNOWN;
-}*/
-
-
-void PSX_GetSysInfo(struct psx_info *info)
-{
-80034738: 27bdffe0 addiu sp,sp,-32
-8003473c: afbf001c sw ra,28(sp)
-80034740: afbe0018 sw s8,24(sp)
-80034744: 03a0f021 move s8,sp
-80034748: afc40020 sw a0,32(s8)
- unsigned long i,i2;
-
- info->kernel.version = GetKernelRomVersion();
-8003474c: 0c00edb6 jal 8003b6d8 <GetKernelRomVersion>
-80034750: 00000000 nop
-80034754: 00401821 move v1,v0
-80034758: 8fc20020 lw v0,32(s8)
-8003475c: 00000000 nop
-80034760: ac430000 sw v1,0(v0)
-
- i = GetKernelDate();
-80034764: 0c00edb1 jal 8003b6c4 <GetKernelDate>
-80034768: 00000000 nop
-8003476c: afc20010 sw v0,16(s8)
-
-/*
- * Convert year from BCD to decimal
- */
-
- i2 = i >> 16;
-80034770: 8fc20010 lw v0,16(s8)
-80034774: 00000000 nop
-80034778: 00021402 srl v0,v0,0x10
-8003477c: afc20014 sw v0,20(s8)
-
- info->kernel.year = i2 & 0xf;
-80034780: 8fc20014 lw v0,20(s8)
-80034784: 00000000 nop
-80034788: 3043000f andi v1,v0,0xf
-8003478c: 8fc20020 lw v0,32(s8)
-80034790: 00000000 nop
-80034794: ac430004 sw v1,4(v0)
- info->kernel.year+= ((i2>>4)&0xf)*10;
-80034798: 8fc20020 lw v0,32(s8)
-8003479c: 00000000 nop
-800347a0: 8c420004 lw v0,4(v0)
-800347a4: 00000000 nop
-800347a8: 00402021 move a0,v0
-800347ac: 8fc20014 lw v0,20(s8)
-800347b0: 00000000 nop
-800347b4: 00021102 srl v0,v0,0x4
-800347b8: 3042000f andi v0,v0,0xf
-800347bc: 00021040 sll v0,v0,0x1
-800347c0: 00021880 sll v1,v0,0x2
-800347c4: 00431021 addu v0,v0,v1
-800347c8: 00821021 addu v0,a0,v0
-800347cc: 00401821 move v1,v0
-800347d0: 8fc20020 lw v0,32(s8)
-800347d4: 00000000 nop
-800347d8: ac430004 sw v1,4(v0)
- info->kernel.year+= ((i2>>8)&0xf)*100;
-800347dc: 8fc20020 lw v0,32(s8)
-800347e0: 00000000 nop
-800347e4: 8c420004 lw v0,4(v0)
-800347e8: 00000000 nop
-800347ec: 00402021 move a0,v0
-800347f0: 8fc20014 lw v0,20(s8)
-800347f4: 00000000 nop
-800347f8: 00021202 srl v0,v0,0x8
-800347fc: 3042000f andi v0,v0,0xf
-80034800: 00021080 sll v0,v0,0x2
-80034804: 00021880 sll v1,v0,0x2
-80034808: 00431021 addu v0,v0,v1
-8003480c: 00021880 sll v1,v0,0x2
-80034810: 00431021 addu v0,v0,v1
-80034814: 00821021 addu v0,a0,v0
-80034818: 00401821 move v1,v0
-8003481c: 8fc20020 lw v0,32(s8)
-80034820: 00000000 nop
-80034824: ac430004 sw v1,4(v0)
- info->kernel.year+= ((i2>>12)&0xf)*1000;
-80034828: 8fc20020 lw v0,32(s8)
-8003482c: 00000000 nop
-80034830: 8c420004 lw v0,4(v0)
-80034834: 00000000 nop
-80034838: 00402821 move a1,v0
-8003483c: 8fc20014 lw v0,20(s8)
-80034840: 00000000 nop
-80034844: 00021302 srl v0,v0,0xc
-80034848: 3044000f andi a0,v0,0xf
-8003484c: 00801821 move v1,a0
-80034850: 00031080 sll v0,v1,0x2
-80034854: 00401821 move v1,v0
-80034858: 00031140 sll v0,v1,0x5
-8003485c: 00431023 subu v0,v0,v1
-80034860: 00441021 addu v0,v0,a0
-80034864: 000210c0 sll v0,v0,0x3
-80034868: 00a21021 addu v0,a1,v0
-8003486c: 00401821 move v1,v0
-80034870: 8fc20020 lw v0,32(s8)
-80034874: 00000000 nop
-80034878: ac430004 sw v1,4(v0)
-
-/*
- * Convert month from BCD to decimal
- */
- i2 = (i >> 8) & 0xff;
-8003487c: 8fc20010 lw v0,16(s8)
-80034880: 00000000 nop
-80034884: 00021202 srl v0,v0,0x8
-80034888: 304200ff andi v0,v0,0xff
-8003488c: afc20014 sw v0,20(s8)
-
- info->kernel.month = i2 & 0xf;
-80034890: 8fc20014 lw v0,20(s8)
-80034894: 00000000 nop
-80034898: 3043000f andi v1,v0,0xf
-8003489c: 8fc20020 lw v0,32(s8)
-800348a0: 00000000 nop
-800348a4: ac430008 sw v1,8(v0)
- info->kernel.month+= (i2>>4) * 10;
-800348a8: 8fc20020 lw v0,32(s8)
-800348ac: 00000000 nop
-800348b0: 8c420008 lw v0,8(v0)
-800348b4: 00000000 nop
-800348b8: 00402021 move a0,v0
-800348bc: 8fc20014 lw v0,20(s8)
-800348c0: 00000000 nop
-800348c4: 00021102 srl v0,v0,0x4
-800348c8: 00021040 sll v0,v0,0x1
-800348cc: 00021880 sll v1,v0,0x2
-800348d0: 00431021 addu v0,v0,v1
-800348d4: 00821021 addu v0,a0,v0
-800348d8: 00401821 move v1,v0
-800348dc: 8fc20020 lw v0,32(s8)
-800348e0: 00000000 nop
-800348e4: ac430008 sw v1,8(v0)
-
-/*
- * Convert day from BCD to decimal
- */
- i2 = i & 0xff;
-800348e8: 8fc20010 lw v0,16(s8)
-800348ec: 00000000 nop
-800348f0: 304200ff andi v0,v0,0xff
-800348f4: afc20014 sw v0,20(s8)
-
- info->kernel.day = i2 & 0xf;
-800348f8: 8fc20014 lw v0,20(s8)
-800348fc: 00000000 nop
-80034900: 3043000f andi v1,v0,0xf
-80034904: 8fc20020 lw v0,32(s8)
-80034908: 00000000 nop
-8003490c: ac43000c sw v1,12(v0)
- info->kernel.day+= (i2>>4) * 10;
-80034910: 8fc20020 lw v0,32(s8)
-80034914: 00000000 nop
-80034918: 8c42000c lw v0,12(v0)
-8003491c: 00000000 nop
-80034920: 00402021 move a0,v0
-80034924: 8fc20014 lw v0,20(s8)
-80034928: 00000000 nop
-8003492c: 00021102 srl v0,v0,0x4
-80034930: 00021040 sll v0,v0,0x1
-80034934: 00021880 sll v1,v0,0x2
-80034938: 00431021 addu v0,v0,v1
-8003493c: 00821021 addu v0,a0,v0
-80034940: 00401821 move v1,v0
-80034944: 8fc20020 lw v0,32(s8)
-80034948: 00000000 nop
-8003494c: ac43000c sw v1,12(v0)
-/*
- * Unless we receive something in the range >= 1 && <= 16,
- * RAM size will be reported as 2 Megabytes
- */
-
- i = GetRamSize();
-80034950: 0c00edbb jal 8003b6ec <GetRamSize>
-80034954: 00000000 nop
-80034958: afc20010 sw v0,16(s8)
-
- if(i == 0 || i > 16)
-8003495c: 8fc20010 lw v0,16(s8)
-80034960: 00000000 nop
-80034964: 10400006 beqz v0,80034980 <PSX_GetSysInfo+0x248>
-80034968: 00000000 nop
-8003496c: 8fc20010 lw v0,16(s8)
-80034970: 00000000 nop
-80034974: 2c420011 sltiu v0,v0,17
-80034978: 14400006 bnez v0,80034994 <PSX_GetSysInfo+0x25c>
-8003497c: 00000000 nop
- info->system.memory = 2<<20; /* 2 Megabytes */
-80034980: 8fc20020 lw v0,32(s8)
-80034984: 3c030020 lui v1,0x20
-80034988: ac430010 sw v1,16(v0)
-8003498c: 10000009 b 800349b4 <PSX_GetSysInfo+0x27c>
-80034990: 00000000 nop
- else
- info->system.memory <<= 20;
-80034994: 8fc20020 lw v0,32(s8)
-80034998: 00000000 nop
-8003499c: 8c420010 lw v0,16(v0)
-800349a0: 00000000 nop
-800349a4: 00021d00 sll v1,v0,0x14
-800349a8: 8fc20020 lw v0,32(s8)
-800349ac: 00000000 nop
-800349b0: ac430010 sw v1,16(v0)
-}
-800349b4: 00000000 nop
-800349b8: 03c0e821 move sp,s8
-800349bc: 8fbf001c lw ra,28(sp)
-800349c0: 8fbe0018 lw s8,24(sp)
-800349c4: 27bd0020 addiu sp,sp,32
-800349c8: 03e00008 jr ra
-800349cc: 00000000 nop
-
-800349d0 <get_real_file_size>:
-
-
-
-int get_real_file_size(char *name)
-{
-800349d0: 27bdffc0 addiu sp,sp,-64
-800349d4: afbf003c sw ra,60(sp)
-800349d8: afbe0038 sw s8,56(sp)
-800349dc: 03a0f021 move s8,sp
-800349e0: afc40040 sw a0,64(s8)
- struct DIRENTRY dirent_buf;
-
- if(firstfile(name, &dirent_buf) == &dirent_buf)
-800349e4: 27c20010 addiu v0,s8,16
-800349e8: 00402821 move a1,v0
-800349ec: 8fc40040 lw a0,64(s8)
-800349f0: 0c00edf4 jal 8003b7d0 <firstfile>
-800349f4: 00000000 nop
-800349f8: 00401821 move v1,v0
-800349fc: 27c20010 addiu v0,s8,16
-80034a00: 14620004 bne v1,v0,80034a14 <get_real_file_size+0x44>
-80034a04: 00000000 nop
- return dirent_buf.size;
-80034a08: 8fc20028 lw v0,40(s8)
-80034a0c: 10000002 b 80034a18 <get_real_file_size+0x48>
-80034a10: 00000000 nop
- else
- return 0;
-80034a14: 00001021 move v0,zero
-}
-80034a18: 03c0e821 move sp,s8
-80034a1c: 8fbf003c lw ra,60(sp)
-80034a20: 8fbe0038 lw s8,56(sp)
-80034a24: 27bd0040 addiu sp,sp,64
-80034a28: 03e00008 jr ra
-80034a2c: 00000000 nop
-
-80034a30 <get_file_size>:
-
-int get_file_size(char *name)
-{
-80034a30: 27bdffe0 addiu sp,sp,-32
-80034a34: afbf001c sw ra,28(sp)
-80034a38: afbe0018 sw s8,24(sp)
-80034a3c: 03a0f021 move s8,sp
-80034a40: afc40020 sw a0,32(s8)
- int i = get_real_file_size(name);
-80034a44: 8fc40020 lw a0,32(s8)
-80034a48: 0c00d274 jal 800349d0 <get_real_file_size>
-80034a4c: 00000000 nop
-80034a50: afc20010 sw v0,16(s8)
-
- if(strncmp(name, "cdrom:", 6) == 0)
-80034a54: 24060006 li a2,6
-80034a58: 3c028004 lui v0,0x8004
-80034a5c: 2445fe50 addiu a1,v0,-432
-80034a60: 8fc40020 lw a0,32(s8)
-80034a64: 0c00d9dd jal 80036774 <strncmp>
-80034a68: 00000000 nop
-80034a6c: 14400010 bnez v0,80034ab0 <get_file_size+0x80>
-80034a70: 00000000 nop
- {
- if(i & 0x7ff)
-80034a74: 8fc20010 lw v0,16(s8)
-80034a78: 00000000 nop
-80034a7c: 304207ff andi v0,v0,0x7ff
-80034a80: 10400020 beqz v0,80034b04 <get_file_size+0xd4>
-80034a84: 00000000 nop
- {
- i += 0x800;
-80034a88: 8fc20010 lw v0,16(s8)
-80034a8c: 00000000 nop
-80034a90: 24420800 addiu v0,v0,2048
-80034a94: afc20010 sw v0,16(s8)
- i &= ~0x7ff;
-80034a98: 8fc30010 lw v1,16(s8)
-80034a9c: 2402f800 li v0,-2048
-80034aa0: 00621024 and v0,v1,v0
-80034aa4: afc20010 sw v0,16(s8)
-80034aa8: 10000016 b 80034b04 <get_file_size+0xd4>
-80034aac: 00000000 nop
- }
- }else if(strncmp(name, "bu", 2) == 0)
-80034ab0: 24060002 li a2,2
-80034ab4: 3c028004 lui v0,0x8004
-80034ab8: 2445fe58 addiu a1,v0,-424
-80034abc: 8fc40020 lw a0,32(s8)
-80034ac0: 0c00d9dd jal 80036774 <strncmp>
-80034ac4: 00000000 nop
-80034ac8: 1440000e bnez v0,80034b04 <get_file_size+0xd4>
-80034acc: 00000000 nop
- {
- if(i & 0x7f)
-80034ad0: 8fc20010 lw v0,16(s8)
-80034ad4: 00000000 nop
-80034ad8: 3042007f andi v0,v0,0x7f
-80034adc: 10400009 beqz v0,80034b04 <get_file_size+0xd4>
-80034ae0: 00000000 nop
- {
- i += 0x80;
-80034ae4: 8fc20010 lw v0,16(s8)
-80034ae8: 00000000 nop
-80034aec: 24420080 addiu v0,v0,128
-80034af0: afc20010 sw v0,16(s8)
- i &= ~0x7f;
-80034af4: 8fc30010 lw v1,16(s8)
-80034af8: 2402ff80 li v0,-128
-80034afc: 00621024 and v0,v1,v0
-80034b00: afc20010 sw v0,16(s8)
- }
- }
-
- return i;
-80034b04: 8fc20010 lw v0,16(s8)
-}
-80034b08: 03c0e821 move sp,s8
-80034b0c: 8fbf001c lw ra,28(sp)
-80034b10: 8fbe0018 lw s8,24(sp)
-80034b14: 27bd0020 addiu sp,sp,32
-80034b18: 03e00008 jr ra
-80034b1c: 00000000 nop
-
-80034b20 <SetRCnt>:
-
-int SetRCnt(int spec, unsigned short target, unsigned int mode)
-{
-80034b20: 27bdfff8 addiu sp,sp,-8
-80034b24: afbe0004 sw s8,4(sp)
-80034b28: 03a0f021 move s8,sp
-80034b2c: afc40008 sw a0,8(s8)
-80034b30: 00a01021 move v0,a1
-80034b34: afc60010 sw a2,16(s8)
-80034b38: a7c2000c sh v0,12(s8)
- spec &= 0xf;
-80034b3c: 8fc20008 lw v0,8(s8)
-80034b40: 00000000 nop
-80034b44: 3042000f andi v0,v0,0xf
-80034b48: afc20008 sw v0,8(s8)
-
- if(spec >= 3)
-80034b4c: 8fc20008 lw v0,8(s8)
-80034b50: 00000000 nop
-80034b54: 28420003 slti v0,v0,3
-80034b58: 14400004 bnez v0,80034b6c <SetRCnt+0x4c>
-80034b5c: 00000000 nop
- return 0;
-80034b60: 00001021 move v0,zero
-80034b64: 1000001d b 80034bdc <SetRCnt+0xbc>
-80034b68: 00000000 nop
-
- RCNT_MODE(spec)=0;
-80034b6c: 8fc20008 lw v0,8(s8)
-80034b70: 00000000 nop
-80034b74: 00021900 sll v1,v0,0x4
-80034b78: 3c021f80 lui v0,0x1f80
-80034b7c: 34421104 ori v0,v0,0x1104
-80034b80: 00621021 addu v0,v1,v0
-80034b84: ac400000 sw zero,0(v0)
- RCNT_TARGET(spec)=target;
-80034b88: 8fc20008 lw v0,8(s8)
-80034b8c: 00000000 nop
-80034b90: 00021900 sll v1,v0,0x4
-80034b94: 3c021f80 lui v0,0x1f80
-80034b98: 34421108 ori v0,v0,0x1108
-80034b9c: 00621021 addu v0,v1,v0
-80034ba0: 00401821 move v1,v0
-80034ba4: 97c2000c lhu v0,12(s8)
-80034ba8: 00000000 nop
-80034bac: ac620000 sw v0,0(v1)
- RCNT_MODE(spec)=mode;
-80034bb0: 8fc20008 lw v0,8(s8)
-80034bb4: 00000000 nop
-80034bb8: 00021900 sll v1,v0,0x4
-80034bbc: 3c021f80 lui v0,0x1f80
-80034bc0: 34421104 ori v0,v0,0x1104
-80034bc4: 00621021 addu v0,v1,v0
-80034bc8: 00401821 move v1,v0
-80034bcc: 8fc20010 lw v0,16(s8)
-80034bd0: 00000000 nop
-80034bd4: ac620000 sw v0,0(v1)
-
- return 1;
-80034bd8: 24020001 li v0,1
-}
-80034bdc: 03c0e821 move sp,s8
-80034be0: 8fbe0004 lw s8,4(sp)
-80034be4: 27bd0008 addiu sp,sp,8
-80034be8: 03e00008 jr ra
-80034bec: 00000000 nop
-
-80034bf0 <GetRCnt>:
-
-int GetRCnt(int spec)
-{
-80034bf0: 27bdfff8 addiu sp,sp,-8
-80034bf4: afbe0004 sw s8,4(sp)
-80034bf8: 03a0f021 move s8,sp
-80034bfc: afc40008 sw a0,8(s8)
- spec &= 0xf;
-80034c00: 8fc20008 lw v0,8(s8)
-80034c04: 00000000 nop
-80034c08: 3042000f andi v0,v0,0xf
-80034c0c: afc20008 sw v0,8(s8)
-
- if(spec >= 4)
-80034c10: 8fc20008 lw v0,8(s8)
-80034c14: 00000000 nop
-80034c18: 28420004 slti v0,v0,4
-80034c1c: 14400004 bnez v0,80034c30 <GetRCnt+0x40>
-80034c20: 00000000 nop
- return -1;
-80034c24: 2402ffff li v0,-1
-80034c28: 1000000a b 80034c54 <GetRCnt+0x64>
-80034c2c: 00000000 nop
-
- return (RCNT_COUNT(spec) & 0xffff);
-80034c30: 8fc20008 lw v0,8(s8)
-80034c34: 00000000 nop
-80034c38: 00021900 sll v1,v0,0x4
-80034c3c: 3c021f80 lui v0,0x1f80
-80034c40: 34421100 ori v0,v0,0x1100
-80034c44: 00621021 addu v0,v1,v0
-80034c48: 8c420000 lw v0,0(v0)
-80034c4c: 00000000 nop
-80034c50: 3042ffff andi v0,v0,0xffff
-}
-80034c54: 03c0e821 move sp,s8
-80034c58: 8fbe0004 lw s8,4(sp)
-80034c5c: 27bd0008 addiu sp,sp,8
-80034c60: 03e00008 jr ra
-80034c64: 00000000 nop
-
-80034c68 <StartRCnt>:
-
-int StartRCnt(int spec)
-{
-80034c68: 27bdfff8 addiu sp,sp,-8
-80034c6c: afbe0004 sw s8,4(sp)
-80034c70: 03a0f021 move s8,sp
-80034c74: afc40008 sw a0,8(s8)
- spec &= 0xf;
-80034c78: 8fc20008 lw v0,8(s8)
-80034c7c: 00000000 nop
-80034c80: 3042000f andi v0,v0,0xf
-80034c84: afc20008 sw v0,8(s8)
-
- if(spec >= 3)
-80034c88: 8fc20008 lw v0,8(s8)
-80034c8c: 00000000 nop
-80034c90: 28420003 slti v0,v0,3
-80034c94: 14400004 bnez v0,80034ca8 <StartRCnt+0x40>
-80034c98: 00000000 nop
- return 0;
-80034c9c: 00001021 move v0,zero
-80034ca0: 1000000e b 80034cdc <StartRCnt+0x74>
-80034ca4: 00000000 nop
-
- IMASK |= 1 << (spec + 4);
-80034ca8: 3c021f80 lui v0,0x1f80
-80034cac: 34421074 ori v0,v0,0x1074
-80034cb0: 3c031f80 lui v1,0x1f80
-80034cb4: 34631074 ori v1,v1,0x1074
-80034cb8: 8c630000 lw v1,0(v1)
-80034cbc: 8fc40008 lw a0,8(s8)
-80034cc0: 00000000 nop
-80034cc4: 24840004 addiu a0,a0,4
-80034cc8: 24050001 li a1,1
-80034ccc: 00852004 sllv a0,a1,a0
-80034cd0: 00641825 or v1,v1,a0
-80034cd4: ac430000 sw v1,0(v0)
-
- return 1;
-80034cd8: 24020001 li v0,1
-}
-80034cdc: 03c0e821 move sp,s8
-80034ce0: 8fbe0004 lw s8,4(sp)
-80034ce4: 27bd0008 addiu sp,sp,8
-80034ce8: 03e00008 jr ra
-80034cec: 00000000 nop
-
-80034cf0 <StopRCnt>:
-
-int StopRCnt(int spec)
-{
-80034cf0: 27bdfff8 addiu sp,sp,-8
-80034cf4: afbe0004 sw s8,4(sp)
-80034cf8: 03a0f021 move s8,sp
-80034cfc: afc40008 sw a0,8(s8)
- spec &= 0xf;
-80034d00: 8fc20008 lw v0,8(s8)
-80034d04: 00000000 nop
-80034d08: 3042000f andi v0,v0,0xf
-80034d0c: afc20008 sw v0,8(s8)
-
- if(spec >= 3)
-80034d10: 8fc20008 lw v0,8(s8)
-80034d14: 00000000 nop
-80034d18: 28420003 slti v0,v0,3
-80034d1c: 14400004 bnez v0,80034d30 <StopRCnt+0x40>
-80034d20: 00000000 nop
- return 0;
-80034d24: 00001021 move v0,zero
-80034d28: 1000000e b 80034d64 <StopRCnt+0x74>
-80034d2c: 00000000 nop
-
- IMASK ^= 1 << (spec + 4);
-80034d30: 3c021f80 lui v0,0x1f80
-80034d34: 34421074 ori v0,v0,0x1074
-80034d38: 3c031f80 lui v1,0x1f80
-80034d3c: 34631074 ori v1,v1,0x1074
-80034d40: 8c630000 lw v1,0(v1)
-80034d44: 8fc40008 lw a0,8(s8)
-80034d48: 00000000 nop
-80034d4c: 24840004 addiu a0,a0,4
-80034d50: 24050001 li a1,1
-80034d54: 00852004 sllv a0,a1,a0
-80034d58: 00641826 xor v1,v1,a0
-80034d5c: ac430000 sw v1,0(v0)
-
- return 1;
-80034d60: 24020001 li v0,1
-}
-80034d64: 03c0e821 move sp,s8
-80034d68: 8fbe0004 lw s8,4(sp)
-80034d6c: 27bd0008 addiu sp,sp,8
-80034d70: 03e00008 jr ra
-80034d74: 00000000 nop
-
-80034d78 <SetVBlankHandler>:
-
-void SetVBlankHandler(void (*callback)())
-{
-80034d78: 27bdffe8 addiu sp,sp,-24
-80034d7c: afbf0014 sw ra,20(sp)
-80034d80: afbe0010 sw s8,16(sp)
-80034d84: 03a0f021 move s8,sp
-80034d88: afc40018 sw a0,24(s8)
- if(psxSdkFlags & PSX_INIT_NOBIOS)
-80034d8c: 3c028007 lui v0,0x8007
-80034d90: 8c421d00 lw v0,7424(v0)
-80034d94: 00000000 nop
-80034d98: 30420004 andi v0,v0,0x4
-80034d9c: 1040000c beqz v0,80034dd0 <SetVBlankHandler+0x58>
-80034da0: 00000000 nop
- {
- _EXC_vblank_handler_set = 0;
-80034da4: 3c028007 lui v0,0x8007
-80034da8: ac401d74 sw zero,7540(v0)
- _EXC_vblank_handler = callback;
-80034dac: 3c028007 lui v0,0x8007
-80034db0: 8fc30018 lw v1,24(s8)
-80034db4: 00000000 nop
-80034db8: ac431d8c sw v1,7564(v0)
- _EXC_vblank_handler_set = 1;
-80034dbc: 3c028007 lui v0,0x8007
-80034dc0: 24030001 li v1,1
-80034dc4: ac431d74 sw v1,7540(v0)
- return;
-80034dc8: 10000034 b 80034e9c <SetVBlankHandler+0x124>
-80034dcc: 00000000 nop
- }
-
- if(vblank_handler_set == 1)
-80034dd0: 3c028007 lui v0,0x8007
-80034dd4: 8c431cf0 lw v1,7408(v0)
-80034dd8: 24020001 li v0,1
-80034ddc: 1462000b bne v1,v0,80034e0c <SetVBlankHandler+0x94>
-80034de0: 00000000 nop
- {
- EnterCriticalSection();
-80034de4: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80034de8: 00000000 nop
-
- vblank_handler_callback = callback;
-80034dec: 3c028007 lui v0,0x8007
-80034df0: 8fc30018 lw v1,24(s8)
-80034df4: 00000000 nop
-80034df8: ac431d70 sw v1,7536(v0)
-
- ExitCriticalSection();
-80034dfc: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-80034e00: 00000000 nop
-
- return;
-80034e04: 10000025 b 80034e9c <SetVBlankHandler+0x124>
-80034e08: 00000000 nop
- }
-
-// Enter critical section
-
- EnterCriticalSection();
-80034e0c: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80034e10: 00000000 nop
-
- IMASK|=1;
-80034e14: 3c021f80 lui v0,0x1f80
-80034e18: 34421074 ori v0,v0,0x1074
-80034e1c: 3c031f80 lui v1,0x1f80
-80034e20: 34631074 ori v1,v1,0x1074
-80034e24: 8c630000 lw v1,0(v1)
-80034e28: 00000000 nop
-80034e2c: 34630001 ori v1,v1,0x1
-80034e30: ac430000 sw v1,0(v0)
-
- vblank_handler_event_id = OpenEvent(RCntCNT3, 2, 0x1000, vblank_handler);
-80034e34: 3c028001 lui v0,0x8001
-80034e38: 24470064 addiu a3,v0,100
-80034e3c: 24061000 li a2,4096
-80034e40: 24050002 li a1,2
-80034e44: 3c02f200 lui v0,0xf200
-80034e48: 34440003 ori a0,v0,0x3
-80034e4c: 0c00edc0 jal 8003b700 <OpenEvent>
-80034e50: 00000000 nop
-80034e54: 00401821 move v1,v0
-80034e58: 3c028007 lui v0,0x8007
-80034e5c: ac431cf4 sw v1,7412(v0)
- EnableEvent(vblank_handler_event_id);
-80034e60: 3c028007 lui v0,0x8007
-80034e64: 8c421cf4 lw v0,7412(v0)
-80034e68: 00000000 nop
-80034e6c: 00402021 move a0,v0
-80034e70: 0c00edc4 jal 8003b710 <EnableEvent>
-80034e74: 00000000 nop
-
- vblank_handler_callback = callback;
-80034e78: 3c028007 lui v0,0x8007
-80034e7c: 8fc30018 lw v1,24(s8)
-80034e80: 00000000 nop
-80034e84: ac431d70 sw v1,7536(v0)
- vblank_handler_set = 1;
-80034e88: 3c028007 lui v0,0x8007
-80034e8c: 24030001 li v1,1
-80034e90: ac431cf0 sw v1,7408(v0)
-
-// Exit critical section
-
- ExitCriticalSection();
-80034e94: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-80034e98: 00000000 nop
-}
-80034e9c: 03c0e821 move sp,s8
-80034ea0: 8fbf0014 lw ra,20(sp)
-80034ea4: 8fbe0010 lw s8,16(sp)
-80034ea8: 27bd0018 addiu sp,sp,24
-80034eac: 03e00008 jr ra
-80034eb0: 00000000 nop
-
-80034eb4 <RemoveVBlankHandler>:
-
-void RemoveVBlankHandler(void)
-{
-80034eb4: 27bdffe8 addiu sp,sp,-24
-80034eb8: afbf0014 sw ra,20(sp)
-80034ebc: afbe0010 sw s8,16(sp)
-80034ec0: 03a0f021 move s8,sp
- if(psxSdkFlags & PSX_INIT_NOBIOS)
-80034ec4: 3c028007 lui v0,0x8007
-80034ec8: 8c421d00 lw v0,7424(v0)
-80034ecc: 00000000 nop
-80034ed0: 30420004 andi v0,v0,0x4
-80034ed4: 10400007 beqz v0,80034ef4 <RemoveVBlankHandler+0x40>
-80034ed8: 00000000 nop
- {
- _EXC_vblank_handler_set = 0;
-80034edc: 3c028007 lui v0,0x8007
-80034ee0: ac401d74 sw zero,7540(v0)
- _EXC_vblank_handler = NULL;
-80034ee4: 3c028007 lui v0,0x8007
-80034ee8: ac401d8c sw zero,7564(v0)
- return;
-80034eec: 10000018 b 80034f50 <RemoveVBlankHandler+0x9c>
-80034ef0: 00000000 nop
- }
-
- if(vblank_handler_set)
-80034ef4: 3c028007 lui v0,0x8007
-80034ef8: 8c421cf0 lw v0,7408(v0)
-80034efc: 00000000 nop
-80034f00: 10400013 beqz v0,80034f50 <RemoveVBlankHandler+0x9c>
-80034f04: 00000000 nop
- {
- EnterCriticalSection();
-80034f08: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80034f0c: 00000000 nop
-
- DisableEvent(vblank_handler_event_id);
-80034f10: 3c028007 lui v0,0x8007
-80034f14: 8c421cf4 lw v0,7412(v0)
-80034f18: 00000000 nop
-80034f1c: 00402021 move a0,v0
-80034f20: 0c00edcc jal 8003b730 <DisableEvent>
-80034f24: 00000000 nop
- CloseEvent(vblank_handler_event_id);
-80034f28: 3c028007 lui v0,0x8007
-80034f2c: 8c421cf4 lw v0,7412(v0)
-80034f30: 00000000 nop
-80034f34: 00402021 move a0,v0
-80034f38: 0c00edc8 jal 8003b720 <CloseEvent>
-80034f3c: 00000000 nop
-
- //IMASK^=1;
- // ^ commented because masking out vblank could give problems to other bios functions
-
- vblank_handler_set = 0;
-80034f40: 3c028007 lui v0,0x8007
-80034f44: ac401cf0 sw zero,7408(v0)
-
- ExitCriticalSection();
-80034f48: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-80034f4c: 00000000 nop
- }
-}
-80034f50: 03c0e821 move sp,s8
-80034f54: 8fbf0014 lw ra,20(sp)
-80034f58: 8fbe0010 lw s8,16(sp)
-80034f5c: 27bd0018 addiu sp,sp,24
-80034f60: 03e00008 jr ra
-80034f64: 00000000 nop
-
-80034f68 <SetRCntHandler>:
-
-void SetRCntHandler(void (*callback)(), int spec, unsigned short target)
-{
-80034f68: 27bdffe8 addiu sp,sp,-24
-80034f6c: afbf0014 sw ra,20(sp)
-80034f70: afbe0010 sw s8,16(sp)
-80034f74: 03a0f021 move s8,sp
-80034f78: afc40018 sw a0,24(s8)
-80034f7c: afc5001c sw a1,28(s8)
-80034f80: 00c01021 move v0,a2
-80034f84: a7c20020 sh v0,32(s8)
- if(psxSdkFlags & PSX_INIT_NOBIOS)
-80034f88: 3c028007 lui v0,0x8007
-80034f8c: 8c421d00 lw v0,7424(v0)
-80034f90: 00000000 nop
-80034f94: 30420004 andi v0,v0,0x4
-80034f98: 14400063 bnez v0,80035128 <SetRCntHandler+0x1c0>
-80034f9c: 00000000 nop
- return; // Not yet supported in No-Bios Mode
-
- if(rcnt_handler_set)
-80034fa0: 3c028007 lui v0,0x8007
-80034fa4: 8c421cf8 lw v0,7416(v0)
-80034fa8: 00000000 nop
-80034fac: 1040000b beqz v0,80034fdc <SetRCntHandler+0x74>
-80034fb0: 00000000 nop
- {
- EnterCriticalSection();
-80034fb4: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80034fb8: 00000000 nop
-
- rcnt_handler_callback = callback;
-80034fbc: 3c028007 lui v0,0x8007
-80034fc0: 8fc30018 lw v1,24(s8)
-80034fc4: 00000000 nop
-80034fc8: ac431d6c sw v1,7532(v0)
-
- ExitCriticalSection();
-80034fcc: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-80034fd0: 00000000 nop
-
- return;
-80034fd4: 10000055 b 8003512c <SetRCntHandler+0x1c4>
-80034fd8: 00000000 nop
- }
-
-// Enter critical section
-
- SetRCnt(spec, target, RCntIntr | 0x08 | 0x10 | 0x40);
-80034fdc: 97c20020 lhu v0,32(s8)
-80034fe0: 24061058 li a2,4184
-80034fe4: 00402821 move a1,v0
-80034fe8: 8fc4001c lw a0,28(s8)
-80034fec: 0c00d2c8 jal 80034b20 <SetRCnt>
-80034ff0: 00000000 nop
- StartRCnt(spec);
-80034ff4: 8fc4001c lw a0,28(s8)
-80034ff8: 0c00d31a jal 80034c68 <StartRCnt>
-80034ffc: 00000000 nop
-
- EnterCriticalSection();
-80035000: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80035004: 00000000 nop
- rcnt_handler_event_id = OpenEvent(spec, 2, 0x1000, rcnt_handler);
-80035008: 3c028001 lui v0,0x8001
-8003500c: 244701bc addiu a3,v0,444
-80035010: 24061000 li a2,4096
-80035014: 24050002 li a1,2
-80035018: 8fc4001c lw a0,28(s8)
-8003501c: 0c00edc0 jal 8003b700 <OpenEvent>
-80035020: 00000000 nop
-80035024: 00401821 move v1,v0
-80035028: 3c028007 lui v0,0x8007
-8003502c: ac431cfc sw v1,7420(v0)
- EnableEvent(rcnt_handler_event_id);
-80035030: 3c028007 lui v0,0x8007
-80035034: 8c421cfc lw v0,7420(v0)
-80035038: 00000000 nop
-8003503c: 00402021 move a0,v0
-80035040: 0c00edc4 jal 8003b710 <EnableEvent>
-80035044: 00000000 nop
-
- rcnt_handler_callback = callback;
-80035048: 3c028007 lui v0,0x8007
-8003504c: 8fc30018 lw v1,24(s8)
-80035050: 00000000 nop
-80035054: ac431d6c sw v1,7532(v0)
- rcnt_handler_set = spec;
-80035058: 3c028007 lui v0,0x8007
-8003505c: 8fc3001c lw v1,28(s8)
-80035060: 00000000 nop
-80035064: ac431cf8 sw v1,7416(v0)
-
- switch(spec)
-80035068: 8fc2001c lw v0,28(s8)
-8003506c: 3c03f200 lui v1,0xf200
-80035070: 34630001 ori v1,v1,0x1
-80035074: 1043001a beq v0,v1,800350e0 <SetRCntHandler+0x178>
-80035078: 00000000 nop
-8003507c: 3c03f200 lui v1,0xf200
-80035080: 34630002 ori v1,v1,0x2
-80035084: 0043182a slt v1,v0,v1
-80035088: 10600006 beqz v1,800350a4 <SetRCntHandler+0x13c>
-8003508c: 00000000 nop
-80035090: 3c03f200 lui v1,0xf200
-80035094: 1043000d beq v0,v1,800350cc <SetRCntHandler+0x164>
-80035098: 00000000 nop
-8003509c: 1000001e b 80035118 <SetRCntHandler+0x1b0>
-800350a0: 00000000 nop
-800350a4: 3c03f200 lui v1,0xf200
-800350a8: 34630002 ori v1,v1,0x2
-800350ac: 10430011 beq v0,v1,800350f4 <SetRCntHandler+0x18c>
-800350b0: 00000000 nop
-800350b4: 3c03f200 lui v1,0xf200
-800350b8: 34630003 ori v1,v1,0x3
-800350bc: 10430012 beq v0,v1,80035108 <SetRCntHandler+0x1a0>
-800350c0: 00000000 nop
-800350c4: 10000014 b 80035118 <SetRCntHandler+0x1b0>
-800350c8: 00000000 nop
- {
- case RCntCNT0: rcnt_handler_evfield = 1 << 4; break;
-800350cc: 3c028007 lui v0,0x8007
-800350d0: 24030010 li v1,16
-800350d4: ac431d68 sw v1,7528(v0)
-800350d8: 1000000f b 80035118 <SetRCntHandler+0x1b0>
-800350dc: 00000000 nop
- case RCntCNT1: rcnt_handler_evfield = 1 << 5; break;
-800350e0: 3c028007 lui v0,0x8007
-800350e4: 24030020 li v1,32
-800350e8: ac431d68 sw v1,7528(v0)
-800350ec: 1000000a b 80035118 <SetRCntHandler+0x1b0>
-800350f0: 00000000 nop
- case RCntCNT2: rcnt_handler_evfield = 1 << 6; break;
-800350f4: 3c028007 lui v0,0x8007
-800350f8: 24030040 li v1,64
-800350fc: ac431d68 sw v1,7528(v0)
-80035100: 10000005 b 80035118 <SetRCntHandler+0x1b0>
-80035104: 00000000 nop
- case RCntCNT3: rcnt_handler_evfield = 1; break;
-80035108: 3c028007 lui v0,0x8007
-8003510c: 24030001 li v1,1
-80035110: ac431d68 sw v1,7528(v0)
-80035114: 00000000 nop
- }
-
-// Exit critical section
-
- ExitCriticalSection();
-80035118: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-8003511c: 00000000 nop
-80035120: 10000002 b 8003512c <SetRCntHandler+0x1c4>
-80035124: 00000000 nop
-}
-
-void SetRCntHandler(void (*callback)(), int spec, unsigned short target)
-{
- if(psxSdkFlags & PSX_INIT_NOBIOS)
- return; // Not yet supported in No-Bios Mode
-80035128: 00000000 nop
- }
-
-// Exit critical section
-
- ExitCriticalSection();
-}
-8003512c: 03c0e821 move sp,s8
-80035130: 8fbf0014 lw ra,20(sp)
-80035134: 8fbe0010 lw s8,16(sp)
-80035138: 27bd0018 addiu sp,sp,24
-8003513c: 03e00008 jr ra
-80035140: 00000000 nop
-
-80035144 <RemoveRCntHandler>:
-
-void RemoveRCntHandler(int spec)
-{
-80035144: 27bdffe8 addiu sp,sp,-24
-80035148: afbf0014 sw ra,20(sp)
-8003514c: afbe0010 sw s8,16(sp)
-80035150: 03a0f021 move s8,sp
-80035154: afc40018 sw a0,24(s8)
- if(psxSdkFlags & PSX_INIT_NOBIOS)
-80035158: 3c028007 lui v0,0x8007
-8003515c: 8c421d00 lw v0,7424(v0)
-80035160: 00000000 nop
-80035164: 30420004 andi v0,v0,0x4
-80035168: 1440001a bnez v0,800351d4 <RemoveRCntHandler+0x90>
-8003516c: 00000000 nop
- return; // Not yet supported in No-Bios Mode
-
- if(rcnt_handler_set)
-80035170: 3c028007 lui v0,0x8007
-80035174: 8c421cf8 lw v0,7416(v0)
-80035178: 00000000 nop
-8003517c: 10400016 beqz v0,800351d8 <RemoveRCntHandler+0x94>
-80035180: 00000000 nop
- {
- EnterCriticalSection();
-80035184: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-80035188: 00000000 nop
-
- DisableEvent(rcnt_handler_event_id);
-8003518c: 3c028007 lui v0,0x8007
-80035190: 8c421cfc lw v0,7420(v0)
-80035194: 00000000 nop
-80035198: 00402021 move a0,v0
-8003519c: 0c00edcc jal 8003b730 <DisableEvent>
-800351a0: 00000000 nop
- CloseEvent(rcnt_handler_event_id);
-800351a4: 3c028007 lui v0,0x8007
-800351a8: 8c421cfc lw v0,7420(v0)
-800351ac: 00000000 nop
-800351b0: 00402021 move a0,v0
-800351b4: 0c00edc8 jal 8003b720 <CloseEvent>
-800351b8: 00000000 nop
-
- rcnt_handler_set = 0;
-800351bc: 3c028007 lui v0,0x8007
-800351c0: ac401cf8 sw zero,7416(v0)
-
- ExitCriticalSection();
-800351c4: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-800351c8: 00000000 nop
-800351cc: 10000002 b 800351d8 <RemoveRCntHandler+0x94>
-800351d0: 00000000 nop
-}
-
-void RemoveRCntHandler(int spec)
-{
- if(psxSdkFlags & PSX_INIT_NOBIOS)
- return; // Not yet supported in No-Bios Mode
-800351d4: 00000000 nop
-
- rcnt_handler_set = 0;
-
- ExitCriticalSection();
- }
-}
-800351d8: 03c0e821 move sp,s8
-800351dc: 8fbf0014 lw ra,20(sp)
-800351e0: 8fbe0010 lw s8,16(sp)
-800351e4: 27bd0018 addiu sp,sp,24
-800351e8: 03e00008 jr ra
-800351ec: 00000000 nop
-
-800351f0 <GetSystemRomVersion>:
-
-const char *GetSystemRomVersion(void)
-{
-800351f0: 27bdffe0 addiu sp,sp,-32
-800351f4: afbf001c sw ra,28(sp)
-800351f8: afbe0018 sw s8,24(sp)
-800351fc: 03a0f021 move s8,sp
-
-// If getting the pointer is not possible, a pointer to a string saying "System ROM Unavailable" is returned.
-
- int x;
-
- for(x = 0x7ffee; x >= 0; x--)
-80035200: 3c020007 lui v0,0x7
-80035204: 3442ffee ori v0,v0,0xffee
-80035208: afc20010 sw v0,16(s8)
-8003520c: 10000015 b 80035264 <GetSystemRomVersion+0x74>
-80035210: 00000000 nop
- if(memcmp("System ROM Version", (void*)(0xbfc00000 + x), 18) == 0)
-80035214: 8fc30010 lw v1,16(s8)
-80035218: 3c02bfc0 lui v0,0xbfc0
-8003521c: 00621021 addu v0,v1,v0
-80035220: 24060012 li a2,18
-80035224: 00402821 move a1,v0
-80035228: 3c028004 lui v0,0x8004
-8003522c: 2444fe5c addiu a0,v0,-420
-80035230: 0c00d7cf jal 80035f3c <memcmp>
-80035234: 00000000 nop
-80035238: 14400006 bnez v0,80035254 <GetSystemRomVersion+0x64>
-8003523c: 00000000 nop
- return (char*)(0xbfc00000 + x);
-80035240: 8fc30010 lw v1,16(s8)
-80035244: 3c02bfc0 lui v0,0xbfc0
-80035248: 00621021 addu v0,v1,v0
-8003524c: 1000000b b 8003527c <GetSystemRomVersion+0x8c>
-80035250: 00000000 nop
-
-// If getting the pointer is not possible, a pointer to a string saying "System ROM Unavailable" is returned.
-
- int x;
-
- for(x = 0x7ffee; x >= 0; x--)
-80035254: 8fc20010 lw v0,16(s8)
-80035258: 00000000 nop
-8003525c: 2442ffff addiu v0,v0,-1
-80035260: afc20010 sw v0,16(s8)
-80035264: 8fc20010 lw v0,16(s8)
-80035268: 00000000 nop
-8003526c: 0441ffe9 bgez v0,80035214 <GetSystemRomVersion+0x24>
-80035270: 00000000 nop
- if(memcmp("System ROM Version", (void*)(0xbfc00000 + x), 18) == 0)
- return (char*)(0xbfc00000 + x);
-
- return sysromver_unavail;
-80035274: 3c028004 lui v0,0x8004
-80035278: 8c422570 lw v0,9584(v0)
-}
-8003527c: 03c0e821 move sp,s8
-80035280: 8fbf001c lw ra,28(sp)
-80035284: 8fbe0018 lw s8,24(sp)
-80035288: 27bd0020 addiu sp,sp,32
-8003528c: 03e00008 jr ra
-80035290: 00000000 nop
-
-80035294 <PSX_RestoreBiosState>:
-
-int PSX_RestoreBiosState(void)
-{
-80035294: 27bdffe8 addiu sp,sp,-24
-80035298: afbf0014 sw ra,20(sp)
-8003529c: afbe0010 sw s8,16(sp)
-800352a0: 03a0f021 move s8,sp
- if(!(psxSdkFlags & PSX_INIT_SAVESTATE))
-800352a4: 3c028007 lui v0,0x8007
-800352a8: 8c421d00 lw v0,7424(v0)
-800352ac: 00000000 nop
-800352b0: 30420002 andi v0,v0,0x2
-800352b4: 14400004 bnez v0,800352c8 <PSX_RestoreBiosState+0x34>
-800352b8: 00000000 nop
- return 0; // can't restore BIOS state if it was not saved previously
-800352bc: 00001021 move v0,zero
-800352c0: 1000000d b 800352f8 <PSX_RestoreBiosState+0x64>
-800352c4: 00000000 nop
-
- EnterCriticalSection();
-800352c8: 0c00ee04 jal 8003b810 <EnterCriticalSection>
-800352cc: 00000000 nop
- memcpy((void*)0x80000000, psxBiosState, 0x10000);
-800352d0: 3c028007 lui v0,0x8007
-800352d4: 8c421d04 lw v0,7428(v0)
-800352d8: 3c060001 lui a2,0x1
-800352dc: 00402821 move a1,v0
-800352e0: 3c048000 lui a0,0x8000
-800352e4: 0c00d75e jal 80035d78 <memcpy>
-800352e8: 00000000 nop
- ExitCriticalSection();
-800352ec: 0c00ee0a jal 8003b828 <ExitCriticalSection>
-800352f0: 00000000 nop
-
- return 1;
-800352f4: 24020001 li v0,1
-}
-800352f8: 03c0e821 move sp,s8
-800352fc: 8fbf0014 lw ra,20(sp)
-80035300: 8fbe0010 lw s8,16(sp)
-80035304: 27bd0018 addiu sp,sp,24
-80035308: 03e00008 jr ra
-8003530c: 00000000 nop
-
-80035310 <PSX_GetInitFlags>:
-
-unsigned int PSX_GetInitFlags(void)
-{
-80035310: 27bdfff8 addiu sp,sp,-8
-80035314: afbe0004 sw s8,4(sp)
-80035318: 03a0f021 move s8,sp
- return psxSdkFlags;
-8003531c: 3c028007 lui v0,0x8007
-80035320: 8c421d00 lw v0,7424(v0)
-}
-80035324: 03c0e821 move sp,s8
-80035328: 8fbe0004 lw s8,4(sp)
-8003532c: 27bd0008 addiu sp,sp,8
-80035330: 03e00008 jr ra
-80035334: 00000000 nop
-
-80035338 <PSX_WarmReboot>:
-
-void PSX_WarmReboot(void)
-{
-80035338: 27bdffe8 addiu sp,sp,-24
-8003533c: afbf0014 sw ra,20(sp)
-80035340: afbe0010 sw s8,16(sp)
-80035344: 03a0f021 move s8,sp
- if(psxSdkFlags & PSX_INIT_NOBIOS)
-80035348: 3c028007 lui v0,0x8007
-8003534c: 8c421d00 lw v0,7424(v0)
-80035350: 00000000 nop
-80035354: 30420004 andi v0,v0,0x4
-80035358: 1040000b beqz v0,80035388 <PSX_WarmReboot+0x50>
-8003535c: 00000000 nop
-80035360: 10000002 b 8003536c <PSX_WarmReboot+0x34>
-80035364: 00000000 nop
- __asm__("nop");
- }
- else
- {
- if(!(psxSdkFlags & PSX_INIT_CD))
- goto psx_warmreboot_nobios;
-80035368: 00000000 nop
-void PSX_WarmReboot(void)
-{
- if(psxSdkFlags & PSX_INIT_NOBIOS)
- {
-psx_warmreboot_nobios:
- PSX_DeInit();
-8003536c: 0c00d041 jal 80034104 <PSX_DeInit>
-80035370: 00000000 nop
- __asm__("j _start");
-80035374: 08004000 j 80010000 <__text_start>
-80035378: 00000000 nop
- __asm__("nop");
-8003537c: 00000000 nop
- if(!(psxSdkFlags & PSX_INIT_CD))
- goto psx_warmreboot_nobios;
-
- BIOSWarmReboot();
- }
-}
-80035380: 10000009 b 800353a8 <PSX_WarmReboot+0x70>
-80035384: 00000000 nop
- __asm__("j _start");
- __asm__("nop");
- }
- else
- {
- if(!(psxSdkFlags & PSX_INIT_CD))
-80035388: 3c028007 lui v0,0x8007
-8003538c: 8c421d00 lw v0,7424(v0)
-80035390: 00000000 nop
-80035394: 30420001 andi v0,v0,0x1
-80035398: 1040fff3 beqz v0,80035368 <PSX_WarmReboot+0x30>
-8003539c: 00000000 nop
- goto psx_warmreboot_nobios;
-
- BIOSWarmReboot();
-800353a0: 0c00ee54 jal 8003b950 <BIOSWarmReboot>
-800353a4: 00000000 nop
- }
-}
-800353a8: 00000000 nop
-800353ac: 03c0e821 move sp,s8
-800353b0: 8fbf0014 lw ra,20(sp)
-800353b4: 8fbe0010 lw s8,16(sp)
-800353b8: 27bd0018 addiu sp,sp,24
-800353bc: 03e00008 jr ra
-800353c0: 00000000 nop
-
-800353c4 <atexit>:
-
-static void *f_ptr[32];
-static int f_ptr_pos = 0;
-
-int atexit(void (*function)(void))
-{
-800353c4: 27bdfff8 addiu sp,sp,-8
-800353c8: afbe0004 sw s8,4(sp)
-800353cc: 03a0f021 move s8,sp
-800353d0: afc40008 sw a0,8(s8)
- if(f_ptr_pos >= 32)
-800353d4: 3c028007 lui v0,0x8007
-800353d8: 8c421d08 lw v0,7432(v0)
-800353dc: 00000000 nop
-800353e0: 28420020 slti v0,v0,32
-800353e4: 14400004 bnez v0,800353f8 <atexit+0x34>
-800353e8: 00000000 nop
- return -1;
-800353ec: 2402ffff li v0,-1
-800353f0: 1000000f b 80035430 <atexit+0x6c>
-800353f4: 00000000 nop
-
- f_ptr[f_ptr_pos++] = function;
-800353f8: 3c028007 lui v0,0x8007
-800353fc: 8c421d08 lw v0,7432(v0)
-80035400: 00000000 nop
-80035404: 24440001 addiu a0,v0,1
-80035408: 3c038007 lui v1,0x8007
-8003540c: ac641d08 sw a0,7432(v1)
-80035410: 3c048007 lui a0,0x8007
-80035414: 00021880 sll v1,v0,0x2
-80035418: 24828c78 addiu v0,a0,-29576
-8003541c: 00621021 addu v0,v1,v0
-80035420: 8fc30008 lw v1,8(s8)
-80035424: 00000000 nop
-80035428: ac430000 sw v1,0(v0)
-
- return 0;
-8003542c: 00001021 move v0,zero
-}
-80035430: 03c0e821 move sp,s8
-80035434: 8fbe0004 lw s8,4(sp)
-80035438: 27bd0008 addiu sp,sp,8
-8003543c: 03e00008 jr ra
-80035440: 00000000 nop
-
-80035444 <call_atexit_callbacks>:
-
-void call_atexit_callbacks(void)
-{
-80035444: 27bdffe0 addiu sp,sp,-32
-80035448: afbf001c sw ra,28(sp)
-8003544c: afbe0018 sw s8,24(sp)
-80035450: 03a0f021 move s8,sp
- int i;
- void (*f)(void);
-
- for(i = (f_ptr_pos - 1); i >= 0; i--)
-80035454: 3c028007 lui v0,0x8007
-80035458: 8c421d08 lw v0,7432(v0)
-8003545c: 00000000 nop
-80035460: 2442ffff addiu v0,v0,-1
-80035464: afc20010 sw v0,16(s8)
-80035468: 10000012 b 800354b4 <call_atexit_callbacks+0x70>
-8003546c: 00000000 nop
- (f = f_ptr[i])();
-80035470: 3c028007 lui v0,0x8007
-80035474: 8fc30010 lw v1,16(s8)
-80035478: 00000000 nop
-8003547c: 00031880 sll v1,v1,0x2
-80035480: 24428c78 addiu v0,v0,-29576
-80035484: 00621021 addu v0,v1,v0
-80035488: 8c420000 lw v0,0(v0)
-8003548c: 00000000 nop
-80035490: afc20014 sw v0,20(s8)
-80035494: 8fc20014 lw v0,20(s8)
-80035498: 00000000 nop
-8003549c: 0040f809 jalr v0
-800354a0: 00000000 nop
-void call_atexit_callbacks(void)
-{
- int i;
- void (*f)(void);
-
- for(i = (f_ptr_pos - 1); i >= 0; i--)
-800354a4: 8fc20010 lw v0,16(s8)
-800354a8: 00000000 nop
-800354ac: 2442ffff addiu v0,v0,-1
-800354b0: afc20010 sw v0,16(s8)
-800354b4: 8fc20010 lw v0,16(s8)
-800354b8: 00000000 nop
-800354bc: 0441ffec bgez v0,80035470 <call_atexit_callbacks+0x2c>
-800354c0: 00000000 nop
- (f = f_ptr[i])();
-}
-800354c4: 00000000 nop
-800354c8: 03c0e821 move sp,s8
-800354cc: 8fbf001c lw ra,28(sp)
-800354d0: 8fbe0018 lw s8,24(sp)
-800354d4: 27bd0020 addiu sp,sp,32
-800354d8: 03e00008 jr ra
-800354dc: 00000000 nop
-
-800354e0 <call_ctors>:
-extern void *__ctor_list;
-extern void *__ctor_end;
-
-// Function to call static constructors (for C++, etc.)
-static void call_ctors(void)
-{
-800354e0: 27bdffe0 addiu sp,sp,-32
-800354e4: afbf001c sw ra,28(sp)
-800354e8: afbe0018 sw s8,24(sp)
-800354ec: 03a0f021 move s8,sp
- dprintf("Calling static constructors..\n");
-
- void **p = &__ctor_list;
-800354f0: 3c028004 lui v0,0x8004
-800354f4: 24422564 addiu v0,v0,9572
-800354f8: afc20010 sw v0,16(s8)
-
- for (++p; *p != NULL && p < &__ctor_end; p++)
-800354fc: 8fc20010 lw v0,16(s8)
-80035500: 00000000 nop
-80035504: 24420004 addiu v0,v0,4
-80035508: afc20010 sw v0,16(s8)
-8003550c: 1000000b b 8003553c <call_ctors+0x5c>
-80035510: 00000000 nop
- (*(void (**)())p)();
-80035514: 8fc20010 lw v0,16(s8)
-80035518: 00000000 nop
-8003551c: 8c420000 lw v0,0(v0)
-80035520: 00000000 nop
-80035524: 0040f809 jalr v0
-80035528: 00000000 nop
-{
- dprintf("Calling static constructors..\n");
-
- void **p = &__ctor_list;
-
- for (++p; *p != NULL && p < &__ctor_end; p++)
-8003552c: 8fc20010 lw v0,16(s8)
-80035530: 00000000 nop
-80035534: 24420004 addiu v0,v0,4
-80035538: afc20010 sw v0,16(s8)
-8003553c: 8fc20010 lw v0,16(s8)
-80035540: 00000000 nop
-80035544: 8c420000 lw v0,0(v0)
-80035548: 00000000 nop
-8003554c: 10400007 beqz v0,8003556c <call_ctors+0x8c>
-80035550: 00000000 nop
-80035554: 8fc30010 lw v1,16(s8)
-80035558: 3c028004 lui v0,0x8004
-8003555c: 2442257c addiu v0,v0,9596
-80035560: 0062102b sltu v0,v1,v0
-80035564: 1440ffeb bnez v0,80035514 <call_ctors+0x34>
-80035568: 00000000 nop
- (*(void (**)())p)();
-
- dprintf("Finished calling static constructors\n");
- }
-8003556c: 00000000 nop
-80035570: 03c0e821 move sp,s8
-80035574: 8fbf001c lw ra,28(sp)
-80035578: 8fbe0018 lw s8,24(sp)
-8003557c: 27bd0020 addiu sp,sp,32
-80035580: 03e00008 jr ra
-80035584: 00000000 nop
-
-80035588 <psxsdk_setup>:
-
-void psxsdk_setup()
-{
-80035588: 27bdffe0 addiu sp,sp,-32
-8003558c: afbf001c sw ra,28(sp)
-80035590: afbe0018 sw s8,24(sp)
-80035594: 03a0f021 move s8,sp
- unsigned int x;
-
- printf("Initializing PSXSDK... \n");
-80035598: 3c028004 lui v0,0x8004
-8003559c: 2444fe70 addiu a0,v0,-400
-800355a0: 0c00ed8f jal 8003b63c <printf>
-800355a4: 00000000 nop
-
-// Clear BSS space
- for(x = (unsigned int)__bss_start; x < (unsigned int)__bss_end; x++)
-800355a8: 3c028004 lui v0,0x8004
-800355ac: 24422584 addiu v0,v0,9604
-800355b0: afc20010 sw v0,16(s8)
-800355b4: 10000008 b 800355d8 <psxsdk_setup+0x50>
-800355b8: 00000000 nop
- *((unsigned char*)x) = 0;
-800355bc: 8fc20010 lw v0,16(s8)
-800355c0: 00000000 nop
-800355c4: a0400000 sb zero,0(v0)
- unsigned int x;
-
- printf("Initializing PSXSDK... \n");
-
-// Clear BSS space
- for(x = (unsigned int)__bss_start; x < (unsigned int)__bss_end; x++)
-800355c8: 8fc20010 lw v0,16(s8)
-800355cc: 00000000 nop
-800355d0: 24420001 addiu v0,v0,1
-800355d4: afc20010 sw v0,16(s8)
-800355d8: 3c028007 lui v0,0x8007
-800355dc: 24421bf8 addiu v0,v0,7160
-800355e0: 8fc30010 lw v1,16(s8)
-800355e4: 00000000 nop
-800355e8: 0062102b sltu v0,v1,v0
-800355ec: 1440fff3 bnez v0,800355bc <psxsdk_setup+0x34>
-800355f0: 00000000 nop
- *((unsigned char*)x) = 0;
-
-// Setup memory allocation functions
- malloc_setup();
-800355f4: 0c00abb1 jal 8002aec4 <malloc_setup>
-800355f8: 00000000 nop
-
-// Call static constructors
- call_ctors();
-800355fc: 0c00d538 jal 800354e0 <call_ctors>
-80035600: 00000000 nop
-}
-80035604: 00000000 nop
-80035608: 03c0e821 move sp,s8
-8003560c: 8fbf001c lw ra,28(sp)
-80035610: 8fbe0018 lw s8,24(sp)
-80035614: 27bd0020 addiu sp,sp,32
-80035618: 03e00008 jr ra
-8003561c: 00000000 nop
-
-80035620 <abs>:
-
-static unsigned int rand_seed = 1;
-//static unsigned int rand_next = 0;
-
-int abs(int x)
-{
-80035620: 27bdfff8 addiu sp,sp,-8
-80035624: afbe0004 sw s8,4(sp)
-80035628: 03a0f021 move s8,sp
-8003562c: afc40008 sw a0,8(s8)
- if(x<0)return -x;
-80035630: 8fc20008 lw v0,8(s8)
-80035634: 00000000 nop
-80035638: 04410006 bgez v0,80035654 <abs+0x34>
-8003563c: 00000000 nop
-80035640: 8fc20008 lw v0,8(s8)
-80035644: 00000000 nop
-80035648: 00021023 negu v0,v0
-8003564c: 10000002 b 80035658 <abs+0x38>
-80035650: 00000000 nop
-
- return x;
-80035654: 8fc20008 lw v0,8(s8)
-}
-80035658: 03c0e821 move sp,s8
-8003565c: 8fbe0004 lw s8,4(sp)
-80035660: 27bd0008 addiu sp,sp,8
-80035664: 03e00008 jr ra
-80035668: 00000000 nop
-
-8003566c <srand>:
-
-void srand(unsigned int seed)
-{
-8003566c: 27bdfff8 addiu sp,sp,-8
-80035670: afbe0004 sw s8,4(sp)
-80035674: 03a0f021 move s8,sp
-80035678: afc40008 sw a0,8(s8)
- rand_seed = seed;
-8003567c: 3c028004 lui v0,0x8004
-80035680: 8fc30008 lw v1,8(s8)
-80035684: 00000000 nop
-80035688: ac432560 sw v1,9568(v0)
-}
-8003568c: 00000000 nop
-80035690: 03c0e821 move sp,s8
-80035694: 8fbe0004 lw s8,4(sp)
-80035698: 27bd0008 addiu sp,sp,8
-8003569c: 03e00008 jr ra
-800356a0: 00000000 nop
-
-800356a4 <rand>:
-
-int rand(void) /* RAND_MAX assumed to be 32767. */
-{
-800356a4: 27bdfff8 addiu sp,sp,-8
-800356a8: afbe0004 sw s8,4(sp)
-800356ac: 03a0f021 move s8,sp
- rand_seed = rand_seed * 1103515245 + 12345;
-800356b0: 3c028004 lui v0,0x8004
-800356b4: 8c432560 lw v1,9568(v0)
-800356b8: 3c0241c6 lui v0,0x41c6
-800356bc: 34424e6d ori v0,v0,0x4e6d
-800356c0: 00620018 mult v1,v0
-800356c4: 00001012 mflo v0
-800356c8: 24433039 addiu v1,v0,12345
-800356cc: 3c028004 lui v0,0x8004
-800356d0: ac432560 sw v1,9568(v0)
- return (unsigned)(rand_seed/65536) % 32768;
-800356d4: 3c028004 lui v0,0x8004
-800356d8: 8c422560 lw v0,9568(v0)
-800356dc: 00000000 nop
-800356e0: 00021402 srl v0,v0,0x10
-800356e4: 30427fff andi v0,v0,0x7fff
-}
-800356e8: 03c0e821 move sp,s8
-800356ec: 8fbe0004 lw s8,4(sp)
-800356f0: 27bd0008 addiu sp,sp,8
-800356f4: 03e00008 jr ra
-800356f8: 00000000 nop
-
-800356fc <__ulltoa_internal__>:
-
-static char *__ulltoa_internal__(unsigned long long value, char *str, int base, int minus_sign,
- unsigned long long maxp )
-{
-800356fc: 27bdffc0 addiu sp,sp,-64
-80035700: afbf003c sw ra,60(sp)
-80035704: afbe0038 sw s8,56(sp)
-80035708: afb30034 sw s3,52(sp)
-8003570c: afb20030 sw s2,48(sp)
-80035710: afb1002c sw s1,44(sp)
-80035714: afb00028 sw s0,40(sp)
-80035718: 03a0f021 move s8,sp
-8003571c: afc40040 sw a0,64(s8)
-80035720: afc50044 sw a1,68(s8)
-80035724: afc60048 sw a2,72(s8)
-80035728: afc7004c sw a3,76(s8)
- unsigned long long p;
- unsigned long long p3;
- int c;
- int a;
-
- p = 1;
-8003572c: 24020001 li v0,1
-80035730: 00001821 move v1,zero
-80035734: afc20010 sw v0,16(s8)
-80035738: afc30014 sw v1,20(s8)
-
- do
- {
- p3 = p;
-8003573c: 8fc20010 lw v0,16(s8)
-80035740: 8fc30014 lw v1,20(s8)
-80035744: afc20018 sw v0,24(s8)
-80035748: afc3001c sw v1,28(s8)
- p *= base;
-8003574c: 8fc2004c lw v0,76(s8)
-80035750: 00000000 nop
-80035754: 00408021 move s0,v0
-80035758: 000217c3 sra v0,v0,0x1f
-8003575c: 00408821 move s1,v0
-80035760: 8fc20014 lw v0,20(s8)
-80035764: 00000000 nop
-80035768: 00500018 mult v0,s0
-8003576c: 00001012 mflo v0
-80035770: 8fc30010 lw v1,16(s8)
-80035774: 00000000 nop
-80035778: 00710018 mult v1,s1
-8003577c: 00001812 mflo v1
-80035780: 00432021 addu a0,v0,v1
-80035784: 8fc20010 lw v0,16(s8)
-80035788: 00000000 nop
-8003578c: 00500019 multu v0,s0
-80035790: 00001012 mflo v0
-80035794: 00001810 mfhi v1
-80035798: 00832021 addu a0,a0,v1
-8003579c: 00801821 move v1,a0
-800357a0: afc20010 sw v0,16(s8)
-800357a4: afc30014 sw v1,20(s8)
-800357a8: afc20010 sw v0,16(s8)
-800357ac: afc30014 sw v1,20(s8)
-
- if(maxp && p > maxp)
-800357b0: 8fc20058 lw v0,88(s8)
-800357b4: 8fc3005c lw v1,92(s8)
-800357b8: 00000000 nop
-800357bc: 00431025 or v0,v0,v1
-800357c0: 10400012 beqz v0,8003580c <__ulltoa_internal__+0x110>
-800357c4: 00000000 nop
-800357c8: 8fc30014 lw v1,20(s8)
-800357cc: 8fc2005c lw v0,92(s8)
-800357d0: 00000000 nop
-800357d4: 0043102b sltu v0,v0,v1
-800357d8: 1440002d bnez v0,80035890 <__ulltoa_internal__+0x194>
-800357dc: 00000000 nop
-800357e0: 8fc30014 lw v1,20(s8)
-800357e4: 8fc2005c lw v0,92(s8)
-800357e8: 00000000 nop
-800357ec: 14620007 bne v1,v0,8003580c <__ulltoa_internal__+0x110>
-800357f0: 00000000 nop
-800357f4: 8fc30010 lw v1,16(s8)
-800357f8: 8fc20058 lw v0,88(s8)
-800357fc: 00000000 nop
-80035800: 0043102b sltu v0,v0,v1
-80035804: 14400022 bnez v0,80035890 <__ulltoa_internal__+0x194>
-80035808: 00000000 nop
- break;
- }while((p >= p3) && !(p % p3));
-8003580c: 8fc3001c lw v1,28(s8)
-80035810: 8fc20014 lw v0,20(s8)
-80035814: 00000000 nop
-80035818: 0043102b sltu v0,v0,v1
-8003581c: 1440001d bnez v0,80035894 <__ulltoa_internal__+0x198>
-80035820: 00000000 nop
-80035824: 8fc3001c lw v1,28(s8)
-80035828: 8fc20014 lw v0,20(s8)
-8003582c: 00000000 nop
-80035830: 14620007 bne v1,v0,80035850 <__ulltoa_internal__+0x154>
-80035834: 00000000 nop
-80035838: 8fc30018 lw v1,24(s8)
-8003583c: 8fc20010 lw v0,16(s8)
-80035840: 00000000 nop
-80035844: 0043102b sltu v0,v0,v1
-80035848: 14400012 bnez v0,80035894 <__ulltoa_internal__+0x198>
-8003584c: 00000000 nop
-80035850: 8fc20010 lw v0,16(s8)
-80035854: 8fc30014 lw v1,20(s8)
-80035858: 8fc60018 lw a2,24(s8)
-8003585c: 8fc7001c lw a3,28(s8)
-80035860: 00402021 move a0,v0
-80035864: 00602821 move a1,v1
-80035868: 0c00f245 jal 8003c914 <__umoddi3>
-8003586c: 00000000 nop
-80035870: 00402021 move a0,v0
-80035874: 00602821 move a1,v1
-80035878: 00801021 move v0,a0
-8003587c: 00451025 or v0,v0,a1
-80035880: 1040ffae beqz v0,8003573c <__ulltoa_internal__+0x40>
-80035884: 00000000 nop
-80035888: 10000002 b 80035894 <__ulltoa_internal__+0x198>
-8003588c: 00000000 nop
- {
- p3 = p;
- p *= base;
-
- if(maxp && p > maxp)
- break;
-80035890: 00000000 nop
- }while((p >= p3) && !(p % p3));
-
- if(minus_sign)
-80035894: 8fc20050 lw v0,80(s8)
-80035898: 00000000 nop
-8003589c: 10400007 beqz v0,800358bc <__ulltoa_internal__+0x1c0>
-800358a0: 00000000 nop
- *(str++) = '-';
-800358a4: 8fc20048 lw v0,72(s8)
-800358a8: 00000000 nop
-800358ac: 24430001 addiu v1,v0,1
-800358b0: afc30048 sw v1,72(s8)
-800358b4: 2403002d li v1,45
-800358b8: a0430000 sb v1,0(v0)
-
- for(a = 0;p3 > 0;p3/=base)
-800358bc: afc00024 sw zero,36(s8)
-800358c0: 10000041 b 800359c8 <__ulltoa_internal__+0x2cc>
-800358c4: 00000000 nop
- {
- c = value / p3;
-800358c8: 8fc60018 lw a2,24(s8)
-800358cc: 8fc7001c lw a3,28(s8)
-800358d0: 8fc40040 lw a0,64(s8)
-800358d4: 8fc50044 lw a1,68(s8)
-800358d8: 0c00f0ae jal 8003c2b8 <__udivdi3>
-800358dc: 00000000 nop
-800358e0: afc20020 sw v0,32(s8)
- value %= p3;
-800358e4: 8fc20040 lw v0,64(s8)
-800358e8: 8fc30044 lw v1,68(s8)
-800358ec: 8fc60018 lw a2,24(s8)
-800358f0: 8fc7001c lw a3,28(s8)
-800358f4: 00402021 move a0,v0
-800358f8: 00602821 move a1,v1
-800358fc: 0c00f245 jal 8003c914 <__umoddi3>
-80035900: 00000000 nop
-80035904: afc20040 sw v0,64(s8)
-80035908: afc30044 sw v1,68(s8)
-
- if(c)
-8003590c: 8fc20020 lw v0,32(s8)
-80035910: 00000000 nop
-80035914: 10400003 beqz v0,80035924 <__ulltoa_internal__+0x228>
-80035918: 00000000 nop
- a = 1;
-8003591c: 24020001 li v0,1
-80035920: afc20024 sw v0,36(s8)
-
- if(a)
-80035924: 8fc20024 lw v0,36(s8)
-80035928: 00000000 nop
-8003592c: 10400019 beqz v0,80035994 <__ulltoa_internal__+0x298>
-80035930: 00000000 nop
- {
- if(c <= 9)
-80035934: 8fc20020 lw v0,32(s8)
-80035938: 00000000 nop
-8003593c: 2842000a slti v0,v0,10
-80035940: 10400007 beqz v0,80035960 <__ulltoa_internal__+0x264>
-80035944: 00000000 nop
- c += '0';
-80035948: 8fc20020 lw v0,32(s8)
-8003594c: 00000000 nop
-80035950: 24420030 addiu v0,v0,48
-80035954: afc20020 sw v0,32(s8)
-80035958: 10000005 b 80035970 <__ulltoa_internal__+0x274>
-8003595c: 00000000 nop
- else
- c = (c - 10) + 'A';
-80035960: 8fc20020 lw v0,32(s8)
-80035964: 00000000 nop
-80035968: 24420037 addiu v0,v0,55
-8003596c: afc20020 sw v0,32(s8)
-
- *(str++) = c;
-80035970: 8fc20048 lw v0,72(s8)
-80035974: 00000000 nop
-80035978: 24430001 addiu v1,v0,1
-8003597c: afc30048 sw v1,72(s8)
-80035980: 8fc30020 lw v1,32(s8)
-80035984: 00000000 nop
-80035988: 00031e00 sll v1,v1,0x18
-8003598c: 00031e03 sra v1,v1,0x18
-80035990: a0430000 sb v1,0(v0)
- }while((p >= p3) && !(p % p3));
-
- if(minus_sign)
- *(str++) = '-';
-
- for(a = 0;p3 > 0;p3/=base)
-80035994: 8fc2004c lw v0,76(s8)
-80035998: 00000000 nop
-8003599c: 00409021 move s2,v0
-800359a0: 000217c3 sra v0,v0,0x1f
-800359a4: 00409821 move s3,v0
-800359a8: 02403021 move a2,s2
-800359ac: 02603821 move a3,s3
-800359b0: 8fc40018 lw a0,24(s8)
-800359b4: 8fc5001c lw a1,28(s8)
-800359b8: 0c00f0ae jal 8003c2b8 <__udivdi3>
-800359bc: 00000000 nop
-800359c0: afc20018 sw v0,24(s8)
-800359c4: afc3001c sw v1,28(s8)
-800359c8: 8fc20018 lw v0,24(s8)
-800359cc: 8fc3001c lw v1,28(s8)
-800359d0: 00000000 nop
-800359d4: 00431025 or v0,v0,v1
-800359d8: 1440ffbb bnez v0,800358c8 <__ulltoa_internal__+0x1cc>
-800359dc: 00000000 nop
-
- *(str++) = c;
- }
- }
-
- *str = '\0';
-800359e0: 8fc20048 lw v0,72(s8)
-800359e4: 00000000 nop
-800359e8: a0400000 sb zero,0(v0)
-
- return str;
-800359ec: 8fc20048 lw v0,72(s8)
-}
-800359f0: 03c0e821 move sp,s8
-800359f4: 8fbf003c lw ra,60(sp)
-800359f8: 8fbe0038 lw s8,56(sp)
-800359fc: 8fb30034 lw s3,52(sp)
-80035a00: 8fb20030 lw s2,48(sp)
-80035a04: 8fb1002c lw s1,44(sp)
-80035a08: 8fb00028 lw s0,40(sp)
-80035a0c: 27bd0040 addiu sp,sp,64
-80035a10: 03e00008 jr ra
-80035a14: 00000000 nop
-
-80035a18 <ulltoa>:
-
-char *ulltoa(unsigned long long value, char *str, int base)
-{
-80035a18: 27bdffd8 addiu sp,sp,-40
-80035a1c: afbf0024 sw ra,36(sp)
-80035a20: afbe0020 sw s8,32(sp)
-80035a24: 03a0f021 move s8,sp
-80035a28: afc40028 sw a0,40(s8)
-80035a2c: afc5002c sw a1,44(s8)
-80035a30: afc60030 sw a2,48(s8)
-80035a34: afc70034 sw a3,52(s8)
- return __ulltoa_internal__(value, str, base, 0, 0);
-80035a38: 00001021 move v0,zero
-80035a3c: 00001821 move v1,zero
-80035a40: afa20018 sw v0,24(sp)
-80035a44: afa3001c sw v1,28(sp)
-80035a48: afa00010 sw zero,16(sp)
-80035a4c: 8fc70034 lw a3,52(s8)
-80035a50: 8fc60030 lw a2,48(s8)
-80035a54: 8fc40028 lw a0,40(s8)
-80035a58: 8fc5002c lw a1,44(s8)
-80035a5c: 0c00d5bf jal 800356fc <__ulltoa_internal__>
-80035a60: 00000000 nop
-}
-80035a64: 03c0e821 move sp,s8
-80035a68: 8fbf0024 lw ra,36(sp)
-80035a6c: 8fbe0020 lw s8,32(sp)
-80035a70: 27bd0028 addiu sp,sp,40
-80035a74: 03e00008 jr ra
-80035a78: 00000000 nop
-
-80035a7c <ultoa>:
-
-char *ultoa(unsigned long value, char *str, int base)
-{
-80035a7c: 27bdffd8 addiu sp,sp,-40
-80035a80: afbf0024 sw ra,36(sp)
-80035a84: afbe0020 sw s8,32(sp)
-80035a88: 03a0f021 move s8,sp
-80035a8c: afc40028 sw a0,40(s8)
-80035a90: afc5002c sw a1,44(s8)
-80035a94: afc60030 sw a2,48(s8)
- return __ulltoa_internal__(value, str, base, 0, (sizeof(long)==8)?0:0xFFFFFFFF);
-80035a98: 8fc20028 lw v0,40(s8)
-80035a9c: 00000000 nop
-80035aa0: 00404021 move t0,v0
-80035aa4: 00004821 move t1,zero
-80035aa8: 2402ffff li v0,-1
-80035aac: 00001821 move v1,zero
-80035ab0: afa20018 sw v0,24(sp)
-80035ab4: afa3001c sw v1,28(sp)
-80035ab8: afa00010 sw zero,16(sp)
-80035abc: 8fc70030 lw a3,48(s8)
-80035ac0: 8fc6002c lw a2,44(s8)
-80035ac4: 01002021 move a0,t0
-80035ac8: 01202821 move a1,t1
-80035acc: 0c00d5bf jal 800356fc <__ulltoa_internal__>
-80035ad0: 00000000 nop
-}
-80035ad4: 03c0e821 move sp,s8
-80035ad8: 8fbf0024 lw ra,36(sp)
-80035adc: 8fbe0020 lw s8,32(sp)
-80035ae0: 27bd0028 addiu sp,sp,40
-80035ae4: 03e00008 jr ra
-80035ae8: 00000000 nop
-
-80035aec <utoa>:
-
-char *utoa(unsigned int value, char *str, int base)
-{
-80035aec: 27bdffd8 addiu sp,sp,-40
-80035af0: afbf0024 sw ra,36(sp)
-80035af4: afbe0020 sw s8,32(sp)
-80035af8: 03a0f021 move s8,sp
-80035afc: afc40028 sw a0,40(s8)
-80035b00: afc5002c sw a1,44(s8)
-80035b04: afc60030 sw a2,48(s8)
- return __ulltoa_internal__(value, str, base, 0, 0xFFFFFFFF);
-80035b08: 8fc20028 lw v0,40(s8)
-80035b0c: 00000000 nop
-80035b10: 00404021 move t0,v0
-80035b14: 00004821 move t1,zero
-80035b18: 2402ffff li v0,-1
-80035b1c: 00001821 move v1,zero
-80035b20: afa20018 sw v0,24(sp)
-80035b24: afa3001c sw v1,28(sp)
-80035b28: afa00010 sw zero,16(sp)
-80035b2c: 8fc70030 lw a3,48(s8)
-80035b30: 8fc6002c lw a2,44(s8)
-80035b34: 01002021 move a0,t0
-80035b38: 01202821 move a1,t1
-80035b3c: 0c00d5bf jal 800356fc <__ulltoa_internal__>
-80035b40: 00000000 nop
-}
-80035b44: 03c0e821 move sp,s8
-80035b48: 8fbf0024 lw ra,36(sp)
-80035b4c: 8fbe0020 lw s8,32(sp)
-80035b50: 27bd0028 addiu sp,sp,40
-80035b54: 03e00008 jr ra
-80035b58: 00000000 nop
-
-80035b5c <lltoa>:
-
-char *lltoa(long long value, char *str, int base)
-{
-80035b5c: 27bdffd8 addiu sp,sp,-40
-80035b60: afbf0024 sw ra,36(sp)
-80035b64: afbe0020 sw s8,32(sp)
-80035b68: 03a0f021 move s8,sp
-80035b6c: afc40028 sw a0,40(s8)
-80035b70: afc5002c sw a1,44(s8)
-80035b74: afc60030 sw a2,48(s8)
-80035b78: afc70034 sw a3,52(s8)
- return __ulltoa_internal__((value<0)?-value:value, str, base, value<0, 0);
-80035b7c: 8fc20028 lw v0,40(s8)
-80035b80: 8fc3002c lw v1,44(s8)
-80035b84: 00000000 nop
-80035b88: 0461000a bgez v1,80035bb4 <lltoa+0x58>
-80035b8c: 00000000 nop
-80035b90: 00003021 move a2,zero
-80035b94: 00003821 move a3,zero
-80035b98: 00c22023 subu a0,a2,v0
-80035b9c: 00c4402b sltu t0,a2,a0
-80035ba0: 00e32823 subu a1,a3,v1
-80035ba4: 00a81023 subu v0,a1,t0
-80035ba8: 00402821 move a1,v0
-80035bac: 00801021 move v0,a0
-80035bb0: 00a01821 move v1,a1
-80035bb4: 00402021 move a0,v0
-80035bb8: 00602821 move a1,v1
-80035bbc: 8fc2002c lw v0,44(s8)
-80035bc0: 00000000 nop
-80035bc4: 000217c2 srl v0,v0,0x1f
-80035bc8: 304200ff andi v0,v0,0xff
-80035bcc: 00003021 move a2,zero
-80035bd0: 00003821 move a3,zero
-80035bd4: afa60018 sw a2,24(sp)
-80035bd8: afa7001c sw a3,28(sp)
-80035bdc: afa20010 sw v0,16(sp)
-80035be0: 8fc70034 lw a3,52(s8)
-80035be4: 8fc60030 lw a2,48(s8)
-80035be8: 0c00d5bf jal 800356fc <__ulltoa_internal__>
-80035bec: 00000000 nop
-}
-80035bf0: 03c0e821 move sp,s8
-80035bf4: 8fbf0024 lw ra,36(sp)
-80035bf8: 8fbe0020 lw s8,32(sp)
-80035bfc: 27bd0028 addiu sp,sp,40
-80035c00: 03e00008 jr ra
-80035c04: 00000000 nop
-
-80035c08 <ltoa>:
-
-char *ltoa(long value, char *str, int base)
-{
-80035c08: 27bdffd8 addiu sp,sp,-40
-80035c0c: afbf0024 sw ra,36(sp)
-80035c10: afbe0020 sw s8,32(sp)
-80035c14: 03a0f021 move s8,sp
-80035c18: afc40028 sw a0,40(s8)
-80035c1c: afc5002c sw a1,44(s8)
-80035c20: afc60030 sw a2,48(s8)
- return __ulltoa_internal__((value<0)?-value:value, str, base, value<0, (sizeof(long)==8)?0:0xFFFFFFFF);
-80035c24: 8fc20028 lw v0,40(s8)
-80035c28: 00000000 nop
-80035c2c: 04410002 bgez v0,80035c38 <ltoa+0x30>
-80035c30: 00000000 nop
-80035c34: 00021023 negu v0,v0
-80035c38: 00404021 move t0,v0
-80035c3c: 000217c3 sra v0,v0,0x1f
-80035c40: 00404821 move t1,v0
-80035c44: 8fc20028 lw v0,40(s8)
-80035c48: 00000000 nop
-80035c4c: 000217c2 srl v0,v0,0x1f
-80035c50: 304200ff andi v0,v0,0xff
-80035c54: 00402021 move a0,v0
-80035c58: 2402ffff li v0,-1
-80035c5c: 00001821 move v1,zero
-80035c60: afa20018 sw v0,24(sp)
-80035c64: afa3001c sw v1,28(sp)
-80035c68: afa40010 sw a0,16(sp)
-80035c6c: 8fc70030 lw a3,48(s8)
-80035c70: 8fc6002c lw a2,44(s8)
-80035c74: 01002021 move a0,t0
-80035c78: 01202821 move a1,t1
-80035c7c: 0c00d5bf jal 800356fc <__ulltoa_internal__>
-80035c80: 00000000 nop
-}
-80035c84: 03c0e821 move sp,s8
-80035c88: 8fbf0024 lw ra,36(sp)
-80035c8c: 8fbe0020 lw s8,32(sp)
-80035c90: 27bd0028 addiu sp,sp,40
-80035c94: 03e00008 jr ra
-80035c98: 00000000 nop
-
-80035c9c <itoa>:
-
-char *itoa(int value, char *str, int base)
-{
-80035c9c: 27bdffd8 addiu sp,sp,-40
-80035ca0: afbf0024 sw ra,36(sp)
-80035ca4: afbe0020 sw s8,32(sp)
-80035ca8: 03a0f021 move s8,sp
-80035cac: afc40028 sw a0,40(s8)
-80035cb0: afc5002c sw a1,44(s8)
-80035cb4: afc60030 sw a2,48(s8)
- return __ulltoa_internal__((value<0)?-value:value, str, base, value<0, 0xFFFFFFFF);
-80035cb8: 8fc20028 lw v0,40(s8)
-80035cbc: 00000000 nop
-80035cc0: 04410002 bgez v0,80035ccc <itoa+0x30>
-80035cc4: 00000000 nop
-80035cc8: 00021023 negu v0,v0
-80035ccc: 00404021 move t0,v0
-80035cd0: 000217c3 sra v0,v0,0x1f
-80035cd4: 00404821 move t1,v0
-80035cd8: 8fc20028 lw v0,40(s8)
-80035cdc: 00000000 nop
-80035ce0: 000217c2 srl v0,v0,0x1f
-80035ce4: 304200ff andi v0,v0,0xff
-80035ce8: 00402021 move a0,v0
-80035cec: 2402ffff li v0,-1
-80035cf0: 00001821 move v1,zero
-80035cf4: afa20018 sw v0,24(sp)
-80035cf8: afa3001c sw v1,28(sp)
-80035cfc: afa40010 sw a0,16(sp)
-80035d00: 8fc70030 lw a3,48(s8)
-80035d04: 8fc6002c lw a2,44(s8)
-80035d08: 01002021 move a0,t0
-80035d0c: 01202821 move a1,t1
-80035d10: 0c00d5bf jal 800356fc <__ulltoa_internal__>
-80035d14: 00000000 nop
-}
-80035d18: 03c0e821 move sp,s8
-80035d1c: 8fbf0024 lw ra,36(sp)
-80035d20: 8fbe0020 lw s8,32(sp)
-80035d24: 27bd0028 addiu sp,sp,40
-80035d28: 03e00008 jr ra
-80035d2c: 00000000 nop
-
-80035d30 <abort>:
-
-void abort(void)
-{
-80035d30: 27bdffe8 addiu sp,sp,-24
-80035d34: afbf0014 sw ra,20(sp)
-80035d38: afbe0010 sw s8,16(sp)
-80035d3c: 03a0f021 move s8,sp
- printf("abort(): Abnormal program termination\n");
-80035d40: 3c028004 lui v0,0x8004
-80035d44: 2444fe8c addiu a0,v0,-372
-80035d48: 0c00ed8f jal 8003b63c <printf>
-80035d4c: 00000000 nop
- exit(1);
-80035d50: 24040001 li a0,1
-80035d54: 0c0040e7 jal 8001039c <exit>
-80035d58: 00000000 nop
-}
-80035d5c: 00000000 nop
-80035d60: 03c0e821 move sp,s8
-80035d64: 8fbf0014 lw ra,20(sp)
-80035d68: 8fbe0010 lw s8,16(sp)
-80035d6c: 27bd0018 addiu sp,sp,24
-80035d70: 03e00008 jr ra
-80035d74: 00000000 nop
-
-80035d78 <memcpy>:
-#include <stdlib.h>
-#include <unistd.h>
-#include <ctype.h>
-
-void *memcpy(void *dst, const void *src, size_t len)
-{
-80035d78: 27bdfff0 addiu sp,sp,-16
-80035d7c: afbe000c sw s8,12(sp)
-80035d80: 03a0f021 move s8,sp
-80035d84: afc40010 sw a0,16(s8)
-80035d88: afc50014 sw a1,20(s8)
-80035d8c: afc60018 sw a2,24(s8)
- void *dst2 = dst;
-80035d90: 8fc20010 lw v0,16(s8)
-80035d94: 00000000 nop
-80035d98: afc20000 sw v0,0(s8)
-
- while(len--)
-80035d9c: 1000000c b 80035dd0 <memcpy+0x58>
-80035da0: 00000000 nop
- *(((unsigned char*)dst++)) = *(((unsigned char*)src++));
-80035da4: 8fc20010 lw v0,16(s8)
-80035da8: 00000000 nop
-80035dac: 24430001 addiu v1,v0,1
-80035db0: afc30010 sw v1,16(s8)
-80035db4: 8fc30014 lw v1,20(s8)
-80035db8: 00000000 nop
-80035dbc: 24640001 addiu a0,v1,1
-80035dc0: afc40014 sw a0,20(s8)
-80035dc4: 90630000 lbu v1,0(v1)
-80035dc8: 00000000 nop
-80035dcc: a0430000 sb v1,0(v0)
-
-void *memcpy(void *dst, const void *src, size_t len)
-{
- void *dst2 = dst;
-
- while(len--)
-80035dd0: 8fc20018 lw v0,24(s8)
-80035dd4: 00000000 nop
-80035dd8: 2443ffff addiu v1,v0,-1
-80035ddc: afc30018 sw v1,24(s8)
-80035de0: 1440fff0 bnez v0,80035da4 <memcpy+0x2c>
-80035de4: 00000000 nop
- *(((unsigned char*)dst++)) = *(((unsigned char*)src++));
-
- return dst2;
-80035de8: 8fc20000 lw v0,0(s8)
-}
-80035dec: 03c0e821 move sp,s8
-80035df0: 8fbe000c lw s8,12(sp)
-80035df4: 27bd0010 addiu sp,sp,16
-80035df8: 03e00008 jr ra
-80035dfc: 00000000 nop
-
-80035e00 <memccpy>:
-
-void *memccpy(void *dst, const void *src, int c, size_t len)
-{
-80035e00: 27bdfff0 addiu sp,sp,-16
-80035e04: afbe000c sw s8,12(sp)
-80035e08: 03a0f021 move s8,sp
-80035e0c: afc40010 sw a0,16(s8)
-80035e10: afc50014 sw a1,20(s8)
-80035e14: afc60018 sw a2,24(s8)
-80035e18: afc7001c sw a3,28(s8)
- unsigned char c2;
-
- while(len--)
-80035e1c: 10000017 b 80035e7c <memccpy+0x7c>
-80035e20: 00000000 nop
- {
- *(((unsigned char*)dst++)) = ( c2 = *(((unsigned char*)src++)) );
-80035e24: 8fc20010 lw v0,16(s8)
-80035e28: 00000000 nop
-80035e2c: 24430001 addiu v1,v0,1
-80035e30: afc30010 sw v1,16(s8)
-80035e34: 8fc30014 lw v1,20(s8)
-80035e38: 00000000 nop
-80035e3c: 24640001 addiu a0,v1,1
-80035e40: afc40014 sw a0,20(s8)
-80035e44: 90630000 lbu v1,0(v1)
-80035e48: 00000000 nop
-80035e4c: a3c30000 sb v1,0(s8)
-80035e50: 93c30000 lbu v1,0(s8)
-80035e54: 00000000 nop
-80035e58: a0430000 sb v1,0(v0)
-
- if(c2 == c)
-80035e5c: 93c30000 lbu v1,0(s8)
-80035e60: 8fc20018 lw v0,24(s8)
-80035e64: 00000000 nop
-80035e68: 14620004 bne v1,v0,80035e7c <memccpy+0x7c>
-80035e6c: 00000000 nop
- return (void*)src;
-80035e70: 8fc20014 lw v0,20(s8)
-80035e74: 10000008 b 80035e98 <memccpy+0x98>
-80035e78: 00000000 nop
-
-void *memccpy(void *dst, const void *src, int c, size_t len)
-{
- unsigned char c2;
-
- while(len--)
-80035e7c: 8fc2001c lw v0,28(s8)
-80035e80: 00000000 nop
-80035e84: 2443ffff addiu v1,v0,-1
-80035e88: afc3001c sw v1,28(s8)
-80035e8c: 1440ffe5 bnez v0,80035e24 <memccpy+0x24>
-80035e90: 00000000 nop
-
- if(c2 == c)
- return (void*)src;
- }
-
- return NULL;
-80035e94: 00001021 move v0,zero
-}
-80035e98: 03c0e821 move sp,s8
-80035e9c: 8fbe000c lw s8,12(sp)
-80035ea0: 27bd0010 addiu sp,sp,16
-80035ea4: 03e00008 jr ra
-80035ea8: 00000000 nop
-
-80035eac <memset>:
-
-void *memset(void *dst , char c , size_t n)
-{
-80035eac: 27bdfff0 addiu sp,sp,-16
-80035eb0: afbe000c sw s8,12(sp)
-80035eb4: 03a0f021 move s8,sp
-80035eb8: afc40010 sw a0,16(s8)
-80035ebc: 00a01021 move v0,a1
-80035ec0: afc60018 sw a2,24(s8)
-80035ec4: a3c20014 sb v0,20(s8)
- unsigned char *dstc = (unsigned char*)dst;
-80035ec8: 8fc20010 lw v0,16(s8)
-80035ecc: 00000000 nop
-80035ed0: afc20004 sw v0,4(s8)
- int x;
-
- for(x = 0; x < n; x++)
-80035ed4: afc00000 sw zero,0(s8)
-80035ed8: 1000000c b 80035f0c <memset+0x60>
-80035edc: 00000000 nop
- dstc[x] = c;
-80035ee0: 8fc20000 lw v0,0(s8)
-80035ee4: 8fc30004 lw v1,4(s8)
-80035ee8: 00000000 nop
-80035eec: 00621021 addu v0,v1,v0
-80035ef0: 93c30014 lbu v1,20(s8)
-80035ef4: 00000000 nop
-80035ef8: a0430000 sb v1,0(v0)
-void *memset(void *dst , char c , size_t n)
-{
- unsigned char *dstc = (unsigned char*)dst;
- int x;
-
- for(x = 0; x < n; x++)
-80035efc: 8fc20000 lw v0,0(s8)
-80035f00: 00000000 nop
-80035f04: 24420001 addiu v0,v0,1
-80035f08: afc20000 sw v0,0(s8)
-80035f0c: 8fc30000 lw v1,0(s8)
-80035f10: 8fc20018 lw v0,24(s8)
-80035f14: 00000000 nop
-80035f18: 0062102b sltu v0,v1,v0
-80035f1c: 1440fff0 bnez v0,80035ee0 <memset+0x34>
-80035f20: 00000000 nop
- dstc[x] = c;
-
- return dst;
-80035f24: 8fc20010 lw v0,16(s8)
-}
-80035f28: 03c0e821 move sp,s8
-80035f2c: 8fbe000c lw s8,12(sp)
-80035f30: 27bd0010 addiu sp,sp,16
-80035f34: 03e00008 jr ra
-80035f38: 00000000 nop
-
-80035f3c <memcmp>:
-
-int memcmp(const void *b1, const void *b2, size_t n)
-{
-80035f3c: 27bdffe8 addiu sp,sp,-24
-80035f40: afbe0014 sw s8,20(sp)
-80035f44: 03a0f021 move s8,sp
-80035f48: afc40018 sw a0,24(s8)
-80035f4c: afc5001c sw a1,28(s8)
-80035f50: afc60020 sw a2,32(s8)
- int x;
- unsigned char *bp1 = (unsigned char*)b1;
-80035f54: 8fc20018 lw v0,24(s8)
-80035f58: 00000000 nop
-80035f5c: afc20004 sw v0,4(s8)
- unsigned char *bp2 = (unsigned char*)b2;
-80035f60: 8fc2001c lw v0,28(s8)
-80035f64: 00000000 nop
-80035f68: afc20008 sw v0,8(s8)
-
- for(x = 0; x < n; x++)
-80035f6c: afc00000 sw zero,0(s8)
-80035f70: 10000022 b 80035ffc <memcmp+0xc0>
-80035f74: 00000000 nop
- if(bp1[x] != bp2[x])
-80035f78: 8fc20000 lw v0,0(s8)
-80035f7c: 8fc30004 lw v1,4(s8)
-80035f80: 00000000 nop
-80035f84: 00621021 addu v0,v1,v0
-80035f88: 90430000 lbu v1,0(v0)
-80035f8c: 8fc20000 lw v0,0(s8)
-80035f90: 8fc40008 lw a0,8(s8)
-80035f94: 00000000 nop
-80035f98: 00821021 addu v0,a0,v0
-80035f9c: 90420000 lbu v0,0(v0)
-80035fa0: 00000000 nop
-80035fa4: 10620011 beq v1,v0,80035fec <memcmp+0xb0>
-80035fa8: 00000000 nop
- return (bp1[x] - bp2[x]);
-80035fac: 8fc20000 lw v0,0(s8)
-80035fb0: 8fc30004 lw v1,4(s8)
-80035fb4: 00000000 nop
-80035fb8: 00621021 addu v0,v1,v0
-80035fbc: 90420000 lbu v0,0(v0)
-80035fc0: 00000000 nop
-80035fc4: 00402021 move a0,v0
-80035fc8: 8fc20000 lw v0,0(s8)
-80035fcc: 8fc30008 lw v1,8(s8)
-80035fd0: 00000000 nop
-80035fd4: 00621021 addu v0,v1,v0
-80035fd8: 90420000 lbu v0,0(v0)
-80035fdc: 00000000 nop
-80035fe0: 00821023 subu v0,a0,v0
-80035fe4: 1000000c b 80036018 <memcmp+0xdc>
-80035fe8: 00000000 nop
-{
- int x;
- unsigned char *bp1 = (unsigned char*)b1;
- unsigned char *bp2 = (unsigned char*)b2;
-
- for(x = 0; x < n; x++)
-80035fec: 8fc20000 lw v0,0(s8)
-80035ff0: 00000000 nop
-80035ff4: 24420001 addiu v0,v0,1
-80035ff8: afc20000 sw v0,0(s8)
-80035ffc: 8fc30000 lw v1,0(s8)
-80036000: 8fc20020 lw v0,32(s8)
-80036004: 00000000 nop
-80036008: 0062102b sltu v0,v1,v0
-8003600c: 1440ffda bnez v0,80035f78 <memcmp+0x3c>
-80036010: 00000000 nop
- if(bp1[x] != bp2[x])
- return (bp1[x] - bp2[x]);
-
- return 0;
-80036014: 00001021 move v0,zero
-}
-80036018: 03c0e821 move sp,s8
-8003601c: 8fbe0014 lw s8,20(sp)
-80036020: 27bd0018 addiu sp,sp,24
-80036024: 03e00008 jr ra
-80036028: 00000000 nop
-
-8003602c <memmove>:
-
-void *memmove(void *dst, const void *src, size_t len)
-{
-8003602c: 27bdfff0 addiu sp,sp,-16
-80036030: afbe000c sw s8,12(sp)
-80036034: 03a0f021 move s8,sp
-80036038: afc40010 sw a0,16(s8)
-8003603c: afc50014 sw a1,20(s8)
-80036040: afc60018 sw a2,24(s8)
- void *dst2 = dst;
-80036044: 8fc20010 lw v0,16(s8)
-80036048: 00000000 nop
-8003604c: afc20000 sw v0,0(s8)
-
- dst+=len-1;
-80036050: 8fc20018 lw v0,24(s8)
-80036054: 00000000 nop
-80036058: 2442ffff addiu v0,v0,-1
-8003605c: 8fc30010 lw v1,16(s8)
-80036060: 00000000 nop
-80036064: 00621021 addu v0,v1,v0
-80036068: afc20010 sw v0,16(s8)
- src+=len-1;
-8003606c: 8fc20018 lw v0,24(s8)
-80036070: 00000000 nop
-80036074: 2442ffff addiu v0,v0,-1
-80036078: 8fc30014 lw v1,20(s8)
-8003607c: 00000000 nop
-80036080: 00621021 addu v0,v1,v0
-80036084: afc20014 sw v0,20(s8)
-
- while(len--)
-80036088: 1000000c b 800360bc <memmove+0x90>
-8003608c: 00000000 nop
- *(((unsigned char*)dst--)) = *(((unsigned char*)src--));
-80036090: 8fc20010 lw v0,16(s8)
-80036094: 00000000 nop
-80036098: 2443ffff addiu v1,v0,-1
-8003609c: afc30010 sw v1,16(s8)
-800360a0: 8fc30014 lw v1,20(s8)
-800360a4: 00000000 nop
-800360a8: 2464ffff addiu a0,v1,-1
-800360ac: afc40014 sw a0,20(s8)
-800360b0: 90630000 lbu v1,0(v1)
-800360b4: 00000000 nop
-800360b8: a0430000 sb v1,0(v0)
- void *dst2 = dst;
-
- dst+=len-1;
- src+=len-1;
-
- while(len--)
-800360bc: 8fc20018 lw v0,24(s8)
-800360c0: 00000000 nop
-800360c4: 2443ffff addiu v1,v0,-1
-800360c8: afc30018 sw v1,24(s8)
-800360cc: 1440fff0 bnez v0,80036090 <memmove+0x64>
-800360d0: 00000000 nop
- *(((unsigned char*)dst--)) = *(((unsigned char*)src--));
-
- return dst2;
-800360d4: 8fc20000 lw v0,0(s8)
-}
-800360d8: 03c0e821 move sp,s8
-800360dc: 8fbe000c lw s8,12(sp)
-800360e0: 27bd0010 addiu sp,sp,16
-800360e4: 03e00008 jr ra
-800360e8: 00000000 nop
-
-800360ec <memchr>:
-
-void *memchr(void *s , int c , size_t n)
-{
-800360ec: 27bdfff8 addiu sp,sp,-8
-800360f0: afbe0004 sw s8,4(sp)
-800360f4: 03a0f021 move s8,sp
-800360f8: afc40008 sw a0,8(s8)
-800360fc: afc5000c sw a1,12(s8)
-80036100: afc60010 sw a2,16(s8)
- while(n--)
-80036104: 10000012 b 80036150 <memchr+0x64>
-80036108: 00000000 nop
- {
- if(*((unsigned char*)s) == (unsigned char)c)
-8003610c: 8fc20008 lw v0,8(s8)
-80036110: 00000000 nop
-80036114: 90420000 lbu v0,0(v0)
-80036118: 00000000 nop
-8003611c: 00401821 move v1,v0
-80036120: 8fc2000c lw v0,12(s8)
-80036124: 00000000 nop
-80036128: 304200ff andi v0,v0,0xff
-8003612c: 14620004 bne v1,v0,80036140 <memchr+0x54>
-80036130: 00000000 nop
- return s;
-80036134: 8fc20008 lw v0,8(s8)
-80036138: 1000000c b 8003616c <memchr+0x80>
-8003613c: 00000000 nop
-
- s++;
-80036140: 8fc20008 lw v0,8(s8)
-80036144: 00000000 nop
-80036148: 24420001 addiu v0,v0,1
-8003614c: afc20008 sw v0,8(s8)
- return dst2;
-}
-
-void *memchr(void *s , int c , size_t n)
-{
- while(n--)
-80036150: 8fc20010 lw v0,16(s8)
-80036154: 00000000 nop
-80036158: 2443ffff addiu v1,v0,-1
-8003615c: afc30010 sw v1,16(s8)
-80036160: 1440ffea bnez v0,8003610c <memchr+0x20>
-80036164: 00000000 nop
- return s;
-
- s++;
- }
-
- return NULL;
-80036168: 00001021 move v0,zero
-}
-8003616c: 03c0e821 move sp,s8
-80036170: 8fbe0004 lw s8,4(sp)
-80036174: 27bd0008 addiu sp,sp,8
-80036178: 03e00008 jr ra
-8003617c: 00000000 nop
-
-80036180 <strncpy>:
-
-char *strncpy(char *dst, const char *src, size_t len)
-{
-80036180: 27bdfff0 addiu sp,sp,-16
-80036184: afbe000c sw s8,12(sp)
-80036188: 03a0f021 move s8,sp
-8003618c: afc40010 sw a0,16(s8)
-80036190: afc50014 sw a1,20(s8)
-80036194: afc60018 sw a2,24(s8)
- char *odst=dst;
-80036198: 8fc20010 lw v0,16(s8)
-8003619c: 00000000 nop
-800361a0: afc20000 sw v0,0(s8)
-
- while(*src && len)
-800361a4: 10000010 b 800361e8 <strncpy+0x68>
-800361a8: 00000000 nop
- {
- *(dst++) = *(src++);
-800361ac: 8fc20010 lw v0,16(s8)
-800361b0: 00000000 nop
-800361b4: 24430001 addiu v1,v0,1
-800361b8: afc30010 sw v1,16(s8)
-800361bc: 8fc30014 lw v1,20(s8)
-800361c0: 00000000 nop
-800361c4: 24640001 addiu a0,v1,1
-800361c8: afc40014 sw a0,20(s8)
-800361cc: 80630000 lb v1,0(v1)
-800361d0: 00000000 nop
-800361d4: a0430000 sb v1,0(v0)
- len--;
-800361d8: 8fc20018 lw v0,24(s8)
-800361dc: 00000000 nop
-800361e0: 2442ffff addiu v0,v0,-1
-800361e4: afc20018 sw v0,24(s8)
-
-char *strncpy(char *dst, const char *src, size_t len)
-{
- char *odst=dst;
-
- while(*src && len)
-800361e8: 8fc20014 lw v0,20(s8)
-800361ec: 00000000 nop
-800361f0: 80420000 lb v0,0(v0)
-800361f4: 00000000 nop
-800361f8: 10400005 beqz v0,80036210 <strncpy+0x90>
-800361fc: 00000000 nop
-80036200: 8fc20018 lw v0,24(s8)
-80036204: 00000000 nop
-80036208: 1440ffe8 bnez v0,800361ac <strncpy+0x2c>
-8003620c: 00000000 nop
- {
- *(dst++) = *(src++);
- len--;
- }
-
- if(len)*dst = 0;
-80036210: 8fc20018 lw v0,24(s8)
-80036214: 00000000 nop
-80036218: 10400004 beqz v0,8003622c <strncpy+0xac>
-8003621c: 00000000 nop
-80036220: 8fc20010 lw v0,16(s8)
-80036224: 00000000 nop
-80036228: a0400000 sb zero,0(v0)
-
- return odst;
-8003622c: 8fc20000 lw v0,0(s8)
-}
-80036230: 03c0e821 move sp,s8
-80036234: 8fbe000c lw s8,12(sp)
-80036238: 27bd0010 addiu sp,sp,16
-8003623c: 03e00008 jr ra
-80036240: 00000000 nop
-
-80036244 <strcpy>:
-
-char *strcpy(char *dst, const char *src)
-{
-80036244: 27bdfff0 addiu sp,sp,-16
-80036248: afbe000c sw s8,12(sp)
-8003624c: 03a0f021 move s8,sp
-80036250: afc40010 sw a0,16(s8)
-80036254: afc50014 sw a1,20(s8)
- char *odst = dst;
-80036258: 8fc20010 lw v0,16(s8)
-8003625c: 00000000 nop
-80036260: afc20000 sw v0,0(s8)
-
- while((*(dst++) = *(src++)));
-80036264: 00000000 nop
-80036268: 8fc20010 lw v0,16(s8)
-8003626c: 00000000 nop
-80036270: 24430001 addiu v1,v0,1
-80036274: afc30010 sw v1,16(s8)
-80036278: 8fc30014 lw v1,20(s8)
-8003627c: 00000000 nop
-80036280: 24640001 addiu a0,v1,1
-80036284: afc40014 sw a0,20(s8)
-80036288: 80630000 lb v1,0(v1)
-8003628c: 00000000 nop
-80036290: a0430000 sb v1,0(v0)
-80036294: 80420000 lb v0,0(v0)
-80036298: 00000000 nop
-8003629c: 1440fff2 bnez v0,80036268 <strcpy+0x24>
-800362a0: 00000000 nop
- return odst;
-800362a4: 8fc20000 lw v0,0(s8)
-}
-800362a8: 03c0e821 move sp,s8
-800362ac: 8fbe000c lw s8,12(sp)
-800362b0: 27bd0010 addiu sp,sp,16
-800362b4: 03e00008 jr ra
-800362b8: 00000000 nop
-
-800362bc <strlen>:
-
-int strlen(const char *str)
-{
-800362bc: 27bdfff0 addiu sp,sp,-16
-800362c0: afbe000c sw s8,12(sp)
-800362c4: 03a0f021 move s8,sp
-800362c8: afc40010 sw a0,16(s8)
- int i = 0;
-800362cc: afc00000 sw zero,0(s8)
- while(*(str++))i++;
-800362d0: 10000005 b 800362e8 <strlen+0x2c>
-800362d4: 00000000 nop
-800362d8: 8fc20000 lw v0,0(s8)
-800362dc: 00000000 nop
-800362e0: 24420001 addiu v0,v0,1
-800362e4: afc20000 sw v0,0(s8)
-800362e8: 8fc20010 lw v0,16(s8)
-800362ec: 00000000 nop
-800362f0: 24430001 addiu v1,v0,1
-800362f4: afc30010 sw v1,16(s8)
-800362f8: 80420000 lb v0,0(v0)
-800362fc: 00000000 nop
-80036300: 1440fff5 bnez v0,800362d8 <strlen+0x1c>
-80036304: 00000000 nop
- return i;
-80036308: 8fc20000 lw v0,0(s8)
-}
-8003630c: 03c0e821 move sp,s8
-80036310: 8fbe000c lw s8,12(sp)
-80036314: 27bd0010 addiu sp,sp,16
-80036318: 03e00008 jr ra
-8003631c: 00000000 nop
-
-80036320 <strchr>:
-
-char *strchr(const char *s, int c)
-{
-80036320: 27bdffe0 addiu sp,sp,-32
-80036324: afbf001c sw ra,28(sp)
-80036328: afbe0018 sw s8,24(sp)
-8003632c: 03a0f021 move s8,sp
-80036330: afc40020 sw a0,32(s8)
-80036334: afc50024 sw a1,36(s8)
- int x;
- int l = strlen(s);
-80036338: 8fc40020 lw a0,32(s8)
-8003633c: 0c00d8af jal 800362bc <strlen>
-80036340: 00000000 nop
-80036344: afc20014 sw v0,20(s8)
-
- for(x = 0; x <= l; x++)
-80036348: afc00010 sw zero,16(s8)
-8003634c: 10000016 b 800363a8 <strchr+0x88>
-80036350: 00000000 nop
- if(s[x] == c) return (char*)&s[x];
-80036354: 8fc20010 lw v0,16(s8)
-80036358: 8fc30020 lw v1,32(s8)
-8003635c: 00000000 nop
-80036360: 00621021 addu v0,v1,v0
-80036364: 80420000 lb v0,0(v0)
-80036368: 00000000 nop
-8003636c: 00401821 move v1,v0
-80036370: 8fc20024 lw v0,36(s8)
-80036374: 00000000 nop
-80036378: 14620007 bne v1,v0,80036398 <strchr+0x78>
-8003637c: 00000000 nop
-80036380: 8fc20010 lw v0,16(s8)
-80036384: 8fc30020 lw v1,32(s8)
-80036388: 00000000 nop
-8003638c: 00621021 addu v0,v1,v0
-80036390: 1000000c b 800363c4 <strchr+0xa4>
-80036394: 00000000 nop
-char *strchr(const char *s, int c)
-{
- int x;
- int l = strlen(s);
-
- for(x = 0; x <= l; x++)
-80036398: 8fc20010 lw v0,16(s8)
-8003639c: 00000000 nop
-800363a0: 24420001 addiu v0,v0,1
-800363a4: afc20010 sw v0,16(s8)
-800363a8: 8fc30010 lw v1,16(s8)
-800363ac: 8fc20014 lw v0,20(s8)
-800363b0: 00000000 nop
-800363b4: 0043102a slt v0,v0,v1
-800363b8: 1040ffe6 beqz v0,80036354 <strchr+0x34>
-800363bc: 00000000 nop
- if(s[x] == c) return (char*)&s[x];
-
- return NULL;
-800363c0: 00001021 move v0,zero
-}
-800363c4: 03c0e821 move sp,s8
-800363c8: 8fbf001c lw ra,28(sp)
-800363cc: 8fbe0018 lw s8,24(sp)
-800363d0: 27bd0020 addiu sp,sp,32
-800363d4: 03e00008 jr ra
-800363d8: 00000000 nop
-
-800363dc <strrchr>:
-
-char *strrchr(const char *s, int c)
-{
-800363dc: 27bdffe0 addiu sp,sp,-32
-800363e0: afbf001c sw ra,28(sp)
-800363e4: afbe0018 sw s8,24(sp)
-800363e8: 03a0f021 move s8,sp
-800363ec: afc40020 sw a0,32(s8)
-800363f0: afc50024 sw a1,36(s8)
- int x;
- int l = strlen(s);
-800363f4: 8fc40020 lw a0,32(s8)
-800363f8: 0c00d8af jal 800362bc <strlen>
-800363fc: 00000000 nop
-80036400: afc20014 sw v0,20(s8)
-
- for(x = l; x>=0; x--)
-80036404: 8fc20014 lw v0,20(s8)
-80036408: 00000000 nop
-8003640c: afc20010 sw v0,16(s8)
-80036410: 10000016 b 8003646c <strrchr+0x90>
-80036414: 00000000 nop
- if(s[x] == c) return (char*)&s[x];
-80036418: 8fc20010 lw v0,16(s8)
-8003641c: 8fc30020 lw v1,32(s8)
-80036420: 00000000 nop
-80036424: 00621021 addu v0,v1,v0
-80036428: 80420000 lb v0,0(v0)
-8003642c: 00000000 nop
-80036430: 00401821 move v1,v0
-80036434: 8fc20024 lw v0,36(s8)
-80036438: 00000000 nop
-8003643c: 14620007 bne v1,v0,8003645c <strrchr+0x80>
-80036440: 00000000 nop
-80036444: 8fc20010 lw v0,16(s8)
-80036448: 8fc30020 lw v1,32(s8)
-8003644c: 00000000 nop
-80036450: 00621021 addu v0,v1,v0
-80036454: 1000000a b 80036480 <strrchr+0xa4>
-80036458: 00000000 nop
-char *strrchr(const char *s, int c)
-{
- int x;
- int l = strlen(s);
-
- for(x = l; x>=0; x--)
-8003645c: 8fc20010 lw v0,16(s8)
-80036460: 00000000 nop
-80036464: 2442ffff addiu v0,v0,-1
-80036468: afc20010 sw v0,16(s8)
-8003646c: 8fc20010 lw v0,16(s8)
-80036470: 00000000 nop
-80036474: 0441ffe8 bgez v0,80036418 <strrchr+0x3c>
-80036478: 00000000 nop
- if(s[x] == c) return (char*)&s[x];
-
- return NULL;
-8003647c: 00001021 move v0,zero
-}
-80036480: 03c0e821 move sp,s8
-80036484: 8fbf001c lw ra,28(sp)
-80036488: 8fbe0018 lw s8,24(sp)
-8003648c: 27bd0020 addiu sp,sp,32
-80036490: 03e00008 jr ra
-80036494: 00000000 nop
-
-80036498 <strpbrk>:
-
-char *strpbrk(const char *s, const char *charset)
-{
-80036498: 27bdfff0 addiu sp,sp,-16
-8003649c: afbe000c sw s8,12(sp)
-800364a0: 03a0f021 move s8,sp
-800364a4: afc40010 sw a0,16(s8)
-800364a8: afc50014 sw a1,20(s8)
- int x,y;
-
- for(x = 0; s[x] != 0; x++)
-800364ac: afc00000 sw zero,0(s8)
-800364b0: 10000027 b 80036550 <strpbrk+0xb8>
-800364b4: 00000000 nop
- for(y = 0; charset[y] != 0; y++)
-800364b8: afc00004 sw zero,4(s8)
-800364bc: 10000018 b 80036520 <strpbrk+0x88>
-800364c0: 00000000 nop
- if(s[x] == charset[y]) return (char*)&s[x];
-800364c4: 8fc20000 lw v0,0(s8)
-800364c8: 8fc30010 lw v1,16(s8)
-800364cc: 00000000 nop
-800364d0: 00621021 addu v0,v1,v0
-800364d4: 80430000 lb v1,0(v0)
-800364d8: 8fc20004 lw v0,4(s8)
-800364dc: 8fc40014 lw a0,20(s8)
-800364e0: 00000000 nop
-800364e4: 00821021 addu v0,a0,v0
-800364e8: 80420000 lb v0,0(v0)
-800364ec: 00000000 nop
-800364f0: 14620007 bne v1,v0,80036510 <strpbrk+0x78>
-800364f4: 00000000 nop
-800364f8: 8fc20000 lw v0,0(s8)
-800364fc: 8fc30010 lw v1,16(s8)
-80036500: 00000000 nop
-80036504: 00621021 addu v0,v1,v0
-80036508: 1000001a b 80036574 <strpbrk+0xdc>
-8003650c: 00000000 nop
-char *strpbrk(const char *s, const char *charset)
-{
- int x,y;
-
- for(x = 0; s[x] != 0; x++)
- for(y = 0; charset[y] != 0; y++)
-80036510: 8fc20004 lw v0,4(s8)
-80036514: 00000000 nop
-80036518: 24420001 addiu v0,v0,1
-8003651c: afc20004 sw v0,4(s8)
-80036520: 8fc20004 lw v0,4(s8)
-80036524: 8fc30014 lw v1,20(s8)
-80036528: 00000000 nop
-8003652c: 00621021 addu v0,v1,v0
-80036530: 80420000 lb v0,0(v0)
-80036534: 00000000 nop
-80036538: 1440ffe2 bnez v0,800364c4 <strpbrk+0x2c>
-8003653c: 00000000 nop
-
-char *strpbrk(const char *s, const char *charset)
-{
- int x,y;
-
- for(x = 0; s[x] != 0; x++)
-80036540: 8fc20000 lw v0,0(s8)
-80036544: 00000000 nop
-80036548: 24420001 addiu v0,v0,1
-8003654c: afc20000 sw v0,0(s8)
-80036550: 8fc20000 lw v0,0(s8)
-80036554: 8fc30010 lw v1,16(s8)
-80036558: 00000000 nop
-8003655c: 00621021 addu v0,v1,v0
-80036560: 80420000 lb v0,0(v0)
-80036564: 00000000 nop
-80036568: 1440ffd3 bnez v0,800364b8 <strpbrk+0x20>
-8003656c: 00000000 nop
- for(y = 0; charset[y] != 0; y++)
- if(s[x] == charset[y]) return (char*)&s[x];
-
- return NULL;
-80036570: 00001021 move v0,zero
-}
-80036574: 03c0e821 move sp,s8
-80036578: 8fbe000c lw s8,12(sp)
-8003657c: 27bd0010 addiu sp,sp,16
-80036580: 03e00008 jr ra
-80036584: 00000000 nop
-
-80036588 <strstr>:
-
-char *strstr(const char *big, const char *little)
-{
-80036588: 27bdffd8 addiu sp,sp,-40
-8003658c: afbf0024 sw ra,36(sp)
-80036590: afbe0020 sw s8,32(sp)
-80036594: 03a0f021 move s8,sp
-80036598: afc40028 sw a0,40(s8)
-8003659c: afc5002c sw a1,44(s8)
- int ls = strlen(little);
-800365a0: 8fc4002c lw a0,44(s8)
-800365a4: 0c00d8af jal 800362bc <strlen>
-800365a8: 00000000 nop
-800365ac: afc20014 sw v0,20(s8)
- int bs = strlen(big);
-800365b0: 8fc40028 lw a0,40(s8)
-800365b4: 0c00d8af jal 800362bc <strlen>
-800365b8: 00000000 nop
-800365bc: afc20018 sw v0,24(s8)
- int x;
-
- if(ls == 0)
-800365c0: 8fc20014 lw v0,20(s8)
-800365c4: 00000000 nop
-800365c8: 14400004 bnez v0,800365dc <strstr+0x54>
-800365cc: 00000000 nop
- return (char*)big;
-800365d0: 8fc20028 lw v0,40(s8)
-800365d4: 1000002e b 80036690 <strstr+0x108>
-800365d8: 00000000 nop
-
- if(ls > bs)
-800365dc: 8fc30014 lw v1,20(s8)
-800365e0: 8fc20018 lw v0,24(s8)
-800365e4: 00000000 nop
-800365e8: 0043102a slt v0,v0,v1
-800365ec: 10400004 beqz v0,80036600 <strstr+0x78>
-800365f0: 00000000 nop
- return NULL;
-800365f4: 00001021 move v0,zero
-800365f8: 10000025 b 80036690 <strstr+0x108>
-800365fc: 00000000 nop
-
- for(x = 0; x <= bs-ls; x++)
-80036600: afc00010 sw zero,16(s8)
-80036604: 10000018 b 80036668 <strstr+0xe0>
-80036608: 00000000 nop
- if(memcmp(little, &big[x], ls) == 0)
-8003660c: 8fc20010 lw v0,16(s8)
-80036610: 8fc30028 lw v1,40(s8)
-80036614: 00000000 nop
-80036618: 00621021 addu v0,v1,v0
-8003661c: 8fc30014 lw v1,20(s8)
-80036620: 00000000 nop
-80036624: 00603021 move a2,v1
-80036628: 00402821 move a1,v0
-8003662c: 8fc4002c lw a0,44(s8)
-80036630: 0c00d7cf jal 80035f3c <memcmp>
-80036634: 00000000 nop
-80036638: 14400007 bnez v0,80036658 <strstr+0xd0>
-8003663c: 00000000 nop
- return (char*)&big[x];
-80036640: 8fc20010 lw v0,16(s8)
-80036644: 8fc30028 lw v1,40(s8)
-80036648: 00000000 nop
-8003664c: 00621021 addu v0,v1,v0
-80036650: 1000000f b 80036690 <strstr+0x108>
-80036654: 00000000 nop
- return (char*)big;
-
- if(ls > bs)
- return NULL;
-
- for(x = 0; x <= bs-ls; x++)
-80036658: 8fc20010 lw v0,16(s8)
-8003665c: 00000000 nop
-80036660: 24420001 addiu v0,v0,1
-80036664: afc20010 sw v0,16(s8)
-80036668: 8fc30018 lw v1,24(s8)
-8003666c: 8fc20014 lw v0,20(s8)
-80036670: 00000000 nop
-80036674: 00621823 subu v1,v1,v0
-80036678: 8fc20010 lw v0,16(s8)
-8003667c: 00000000 nop
-80036680: 0062102a slt v0,v1,v0
-80036684: 1040ffe1 beqz v0,8003660c <strstr+0x84>
-80036688: 00000000 nop
- if(memcmp(little, &big[x], ls) == 0)
- return (char*)&big[x];
-
- return NULL;
-8003668c: 00001021 move v0,zero
-}
-80036690: 03c0e821 move sp,s8
-80036694: 8fbf0024 lw ra,36(sp)
-80036698: 8fbe0020 lw s8,32(sp)
-8003669c: 27bd0028 addiu sp,sp,40
-800366a0: 03e00008 jr ra
-800366a4: 00000000 nop
-
-800366a8 <strcmp>:
-
-int strcmp(const char *s1, const char *s2)
-{
-800366a8: 27bdfff8 addiu sp,sp,-8
-800366ac: afbe0004 sw s8,4(sp)
-800366b0: 03a0f021 move s8,sp
-800366b4: afc40008 sw a0,8(s8)
-800366b8: afc5000c sw a1,12(s8)
- while(*s1 && *s2 && (*s1 == *s2))
-800366bc: 10000009 b 800366e4 <strcmp+0x3c>
-800366c0: 00000000 nop
- {
- s1++;
-800366c4: 8fc20008 lw v0,8(s8)
-800366c8: 00000000 nop
-800366cc: 24420001 addiu v0,v0,1
-800366d0: afc20008 sw v0,8(s8)
- s2++;
-800366d4: 8fc2000c lw v0,12(s8)
-800366d8: 00000000 nop
-800366dc: 24420001 addiu v0,v0,1
-800366e0: afc2000c sw v0,12(s8)
- return NULL;
-}
-
-int strcmp(const char *s1, const char *s2)
-{
- while(*s1 && *s2 && (*s1 == *s2))
-800366e4: 8fc20008 lw v0,8(s8)
-800366e8: 00000000 nop
-800366ec: 80420000 lb v0,0(v0)
-800366f0: 00000000 nop
-800366f4: 10400010 beqz v0,80036738 <strcmp+0x90>
-800366f8: 00000000 nop
-800366fc: 8fc2000c lw v0,12(s8)
-80036700: 00000000 nop
-80036704: 80420000 lb v0,0(v0)
-80036708: 00000000 nop
-8003670c: 1040000a beqz v0,80036738 <strcmp+0x90>
-80036710: 00000000 nop
-80036714: 8fc20008 lw v0,8(s8)
-80036718: 00000000 nop
-8003671c: 80430000 lb v1,0(v0)
-80036720: 8fc2000c lw v0,12(s8)
-80036724: 00000000 nop
-80036728: 80420000 lb v0,0(v0)
-8003672c: 00000000 nop
-80036730: 1062ffe4 beq v1,v0,800366c4 <strcmp+0x1c>
-80036734: 00000000 nop
- {
- s1++;
- s2++;
- }
-
- return *s1-*s2;
-80036738: 8fc20008 lw v0,8(s8)
-8003673c: 00000000 nop
-80036740: 80420000 lb v0,0(v0)
-80036744: 00000000 nop
-80036748: 00401821 move v1,v0
-8003674c: 8fc2000c lw v0,12(s8)
-80036750: 00000000 nop
-80036754: 80420000 lb v0,0(v0)
-80036758: 00000000 nop
-8003675c: 00621023 subu v0,v1,v0
-}
-80036760: 03c0e821 move sp,s8
-80036764: 8fbe0004 lw s8,4(sp)
-80036768: 27bd0008 addiu sp,sp,8
-8003676c: 03e00008 jr ra
-80036770: 00000000 nop
-
-80036774 <strncmp>:
-
-int strncmp(const char *s1, const char *s2, size_t len)
-{
-80036774: 27bdfff0 addiu sp,sp,-16
-80036778: afbe000c sw s8,12(sp)
-8003677c: 03a0f021 move s8,sp
-80036780: afc40010 sw a0,16(s8)
-80036784: afc50014 sw a1,20(s8)
-80036788: afc60018 sw a2,24(s8)
- int p = 0;
-8003678c: afc00000 sw zero,0(s8)
-
- while(*s1 && *s2 && (*s1 == *s2) && p<len)
-80036790: 10000013 b 800367e0 <strncmp+0x6c>
-80036794: 00000000 nop
- {
- p++;
-80036798: 8fc20000 lw v0,0(s8)
-8003679c: 00000000 nop
-800367a0: 24420001 addiu v0,v0,1
-800367a4: afc20000 sw v0,0(s8)
-
- if(p<len)
-800367a8: 8fc30000 lw v1,0(s8)
-800367ac: 8fc20018 lw v0,24(s8)
-800367b0: 00000000 nop
-800367b4: 0062102b sltu v0,v1,v0
-800367b8: 10400009 beqz v0,800367e0 <strncmp+0x6c>
-800367bc: 00000000 nop
- {
- s1++;
-800367c0: 8fc20010 lw v0,16(s8)
-800367c4: 00000000 nop
-800367c8: 24420001 addiu v0,v0,1
-800367cc: afc20010 sw v0,16(s8)
- s2++;
-800367d0: 8fc20014 lw v0,20(s8)
-800367d4: 00000000 nop
-800367d8: 24420001 addiu v0,v0,1
-800367dc: afc20014 sw v0,20(s8)
-
-int strncmp(const char *s1, const char *s2, size_t len)
-{
- int p = 0;
-
- while(*s1 && *s2 && (*s1 == *s2) && p<len)
-800367e0: 8fc20010 lw v0,16(s8)
-800367e4: 00000000 nop
-800367e8: 80420000 lb v0,0(v0)
-800367ec: 00000000 nop
-800367f0: 10400016 beqz v0,8003684c <strncmp+0xd8>
-800367f4: 00000000 nop
-800367f8: 8fc20014 lw v0,20(s8)
-800367fc: 00000000 nop
-80036800: 80420000 lb v0,0(v0)
-80036804: 00000000 nop
-80036808: 10400010 beqz v0,8003684c <strncmp+0xd8>
-8003680c: 00000000 nop
-80036810: 8fc20010 lw v0,16(s8)
-80036814: 00000000 nop
-80036818: 80430000 lb v1,0(v0)
-8003681c: 8fc20014 lw v0,20(s8)
-80036820: 00000000 nop
-80036824: 80420000 lb v0,0(v0)
-80036828: 00000000 nop
-8003682c: 14620007 bne v1,v0,8003684c <strncmp+0xd8>
-80036830: 00000000 nop
-80036834: 8fc30000 lw v1,0(s8)
-80036838: 8fc20018 lw v0,24(s8)
-8003683c: 00000000 nop
-80036840: 0062102b sltu v0,v1,v0
-80036844: 1440ffd4 bnez v0,80036798 <strncmp+0x24>
-80036848: 00000000 nop
- s1++;
- s2++;
- }
- }
-
- return *s1-*s2;
-8003684c: 8fc20010 lw v0,16(s8)
-80036850: 00000000 nop
-80036854: 80420000 lb v0,0(v0)
-80036858: 00000000 nop
-8003685c: 00401821 move v1,v0
-80036860: 8fc20014 lw v0,20(s8)
-80036864: 00000000 nop
-80036868: 80420000 lb v0,0(v0)
-8003686c: 00000000 nop
-80036870: 00621023 subu v0,v1,v0
-}
-80036874: 03c0e821 move sp,s8
-80036878: 8fbe000c lw s8,12(sp)
-8003687c: 27bd0010 addiu sp,sp,16
-80036880: 03e00008 jr ra
-80036884: 00000000 nop
-
-80036888 <strdup>:
-
-char *strdup(const char *str)
-{
-80036888: 27bdffe0 addiu sp,sp,-32
-8003688c: afbf001c sw ra,28(sp)
-80036890: afbe0018 sw s8,24(sp)
-80036894: 03a0f021 move s8,sp
-80036898: afc40020 sw a0,32(s8)
- char *ns = (void*)malloc(strlen(str) + 1);
-8003689c: 8fc40020 lw a0,32(s8)
-800368a0: 0c00d8af jal 800362bc <strlen>
-800368a4: 00000000 nop
-800368a8: 24420001 addiu v0,v0,1
-800368ac: 00402021 move a0,v0
-800368b0: 0c00ac10 jal 8002b040 <malloc>
-800368b4: 00000000 nop
-800368b8: afc20010 sw v0,16(s8)
-
- if(ns == NULL)
-800368bc: 8fc20010 lw v0,16(s8)
-800368c0: 00000000 nop
-800368c4: 14400004 bnez v0,800368d8 <strdup+0x50>
-800368c8: 00000000 nop
- return NULL;
-800368cc: 00001021 move v0,zero
-800368d0: 10000006 b 800368ec <strdup+0x64>
-800368d4: 00000000 nop
-
- strcpy(ns, str);
-800368d8: 8fc50020 lw a1,32(s8)
-800368dc: 8fc40010 lw a0,16(s8)
-800368e0: 0c00d891 jal 80036244 <strcpy>
-800368e4: 00000000 nop
- return ns;
-800368e8: 8fc20010 lw v0,16(s8)
-}
-800368ec: 03c0e821 move sp,s8
-800368f0: 8fbf001c lw ra,28(sp)
-800368f4: 8fbe0018 lw s8,24(sp)
-800368f8: 27bd0020 addiu sp,sp,32
-800368fc: 03e00008 jr ra
-80036900: 00000000 nop
-
-80036904 <strndup>:
-
-char *strndup(const char *str, size_t len)
-{
-80036904: 27bdffe0 addiu sp,sp,-32
-80036908: afbf001c sw ra,28(sp)
-8003690c: afbe0018 sw s8,24(sp)
-80036910: 03a0f021 move s8,sp
-80036914: afc40020 sw a0,32(s8)
-80036918: afc50024 sw a1,36(s8)
- int n=strlen(str);
-8003691c: 8fc40020 lw a0,32(s8)
-80036920: 0c00d8af jal 800362bc <strlen>
-80036924: 00000000 nop
-80036928: afc20010 sw v0,16(s8)
- char *ns = (void*)malloc((n+1)>len?len:(n+1));
-8003692c: 8fc20010 lw v0,16(s8)
-80036930: 00000000 nop
-80036934: 24420001 addiu v0,v0,1
-80036938: 8fc30024 lw v1,36(s8)
-8003693c: 00000000 nop
-80036940: 0062202b sltu a0,v1,v0
-80036944: 10800002 beqz a0,80036950 <strndup+0x4c>
-80036948: 00000000 nop
-8003694c: 00601021 move v0,v1
-80036950: 00402021 move a0,v0
-80036954: 0c00ac10 jal 8002b040 <malloc>
-80036958: 00000000 nop
-8003695c: afc20014 sw v0,20(s8)
-
- if(ns == NULL)
-80036960: 8fc20014 lw v0,20(s8)
-80036964: 00000000 nop
-80036968: 14400004 bnez v0,8003697c <strndup+0x78>
-8003696c: 00000000 nop
- return NULL;
-80036970: 00001021 move v0,zero
-80036974: 10000010 b 800369b8 <strndup+0xb4>
-80036978: 00000000 nop
-
- strncpy(ns, str, (n+1)>len?len:(n+1));
-8003697c: 8fc20010 lw v0,16(s8)
-80036980: 00000000 nop
-80036984: 24420001 addiu v0,v0,1
-80036988: 8fc30024 lw v1,36(s8)
-8003698c: 00000000 nop
-80036990: 0062202b sltu a0,v1,v0
-80036994: 10800002 beqz a0,800369a0 <strndup+0x9c>
-80036998: 00000000 nop
-8003699c: 00601021 move v0,v1
-800369a0: 00403021 move a2,v0
-800369a4: 8fc50020 lw a1,32(s8)
-800369a8: 8fc40014 lw a0,20(s8)
-800369ac: 0c00d860 jal 80036180 <strncpy>
-800369b0: 00000000 nop
- return ns;
-800369b4: 8fc20014 lw v0,20(s8)
-}
-800369b8: 03c0e821 move sp,s8
-800369bc: 8fbf001c lw ra,28(sp)
-800369c0: 8fbe0018 lw s8,24(sp)
-800369c4: 27bd0020 addiu sp,sp,32
-800369c8: 03e00008 jr ra
-800369cc: 00000000 nop
-
-800369d0 <strtoll>:
-
-long long strtoll(const char *nptr, char **endptr, int base)
-{
-800369d0: 27bdffd0 addiu sp,sp,-48
-800369d4: afbf002c sw ra,44(sp)
-800369d8: afbe0028 sw s8,40(sp)
-800369dc: afb10024 sw s1,36(sp)
-800369e0: afb00020 sw s0,32(sp)
-800369e4: 03a0f021 move s8,sp
-800369e8: afc40030 sw a0,48(s8)
-800369ec: afc50034 sw a1,52(s8)
-800369f0: afc60038 sw a2,56(s8)
- int r = 0;
-800369f4: afc00010 sw zero,16(s8)
- int t = 0;
-800369f8: afc00014 sw zero,20(s8)
- int n = 0;
-800369fc: afc00018 sw zero,24(s8)
-
- while(*nptr && isspace(*nptr))
-80036a00: 10000005 b 80036a18 <strtoll+0x48>
-80036a04: 00000000 nop
- nptr++;
-80036a08: 8fc20030 lw v0,48(s8)
-80036a0c: 00000000 nop
-80036a10: 24420001 addiu v0,v0,1
-80036a14: afc20030 sw v0,48(s8)
-{
- int r = 0;
- int t = 0;
- int n = 0;
-
- while(*nptr && isspace(*nptr))
-80036a18: 8fc20030 lw v0,48(s8)
-80036a1c: 00000000 nop
-80036a20: 80420000 lb v0,0(v0)
-80036a24: 00000000 nop
-80036a28: 1040000a beqz v0,80036a54 <strtoll+0x84>
-80036a2c: 00000000 nop
-80036a30: 8fc20030 lw v0,48(s8)
-80036a34: 00000000 nop
-80036a38: 80420000 lb v0,0(v0)
-80036a3c: 00000000 nop
-80036a40: 00402021 move a0,v0
-80036a44: 0c00a934 jal 8002a4d0 <isspace>
-80036a48: 00000000 nop
-80036a4c: 1440ffee bnez v0,80036a08 <strtoll+0x38>
-80036a50: 00000000 nop
- nptr++;
-
- if(*nptr == '-')
-80036a54: 8fc20030 lw v0,48(s8)
-80036a58: 00000000 nop
-80036a5c: 80430000 lb v1,0(v0)
-80036a60: 2402002d li v0,45
-80036a64: 14620007 bne v1,v0,80036a84 <strtoll+0xb4>
-80036a68: 00000000 nop
- {
- nptr++;
-80036a6c: 8fc20030 lw v0,48(s8)
-80036a70: 00000000 nop
-80036a74: 24420001 addiu v0,v0,1
-80036a78: afc20030 sw v0,48(s8)
- n = 1;
-80036a7c: 24020001 li v0,1
-80036a80: afc20018 sw v0,24(s8)
- }
-
- if(base == 0)
-80036a84: 8fc20038 lw v0,56(s8)
-80036a88: 00000000 nop
-80036a8c: 1440000d bnez v0,80036ac4 <strtoll+0xf4>
-80036a90: 00000000 nop
- {
- if(*nptr == '0')
-80036a94: 8fc20030 lw v0,48(s8)
-80036a98: 00000000 nop
-80036a9c: 80430000 lb v1,0(v0)
-80036aa0: 24020030 li v0,48
-80036aa4: 14620005 bne v1,v0,80036abc <strtoll+0xec>
-80036aa8: 00000000 nop
- base = 8;
-80036aac: 24020008 li v0,8
-80036ab0: afc20038 sw v0,56(s8)
-80036ab4: 10000003 b 80036ac4 <strtoll+0xf4>
-80036ab8: 00000000 nop
- else
- base = 10;
-80036abc: 2402000a li v0,10
-80036ac0: afc20038 sw v0,56(s8)
- }
-
- if(!(base >= 2 && base <= 36))
-80036ac4: 8fc20038 lw v0,56(s8)
-80036ac8: 00000000 nop
-80036acc: 28420002 slti v0,v0,2
-80036ad0: 14400006 bnez v0,80036aec <strtoll+0x11c>
-80036ad4: 00000000 nop
-80036ad8: 8fc20038 lw v0,56(s8)
-80036adc: 00000000 nop
-80036ae0: 28420025 slti v0,v0,37
-80036ae4: 14400005 bnez v0,80036afc <strtoll+0x12c>
-80036ae8: 00000000 nop
- return 0;
-80036aec: 00008021 move s0,zero
-80036af0: 00008821 move s1,zero
-80036af4: 10000084 b 80036d08 <strtoll+0x338>
-80036af8: 00000000 nop
-
- if(base == 16 && *nptr == '0')
-80036afc: 8fc30038 lw v1,56(s8)
-80036b00: 24020010 li v0,16
-80036b04: 14620061 bne v1,v0,80036c8c <strtoll+0x2bc>
-80036b08: 00000000 nop
-80036b0c: 8fc20030 lw v0,48(s8)
-80036b10: 00000000 nop
-80036b14: 80430000 lb v1,0(v0)
-80036b18: 24020030 li v0,48
-80036b1c: 1462005b bne v1,v0,80036c8c <strtoll+0x2bc>
-80036b20: 00000000 nop
- {
- if(*(nptr+1) == 'x' || *(nptr+1) == 'X')
-80036b24: 8fc20030 lw v0,48(s8)
-80036b28: 00000000 nop
-80036b2c: 24420001 addiu v0,v0,1
-80036b30: 80430000 lb v1,0(v0)
-80036b34: 24020078 li v0,120
-80036b38: 10620008 beq v1,v0,80036b5c <strtoll+0x18c>
-80036b3c: 00000000 nop
-80036b40: 8fc20030 lw v0,48(s8)
-80036b44: 00000000 nop
-80036b48: 24420001 addiu v0,v0,1
-80036b4c: 80430000 lb v1,0(v0)
-80036b50: 24020058 li v0,88
-80036b54: 1462004d bne v1,v0,80036c8c <strtoll+0x2bc>
-80036b58: 00000000 nop
- nptr+=2;
-80036b5c: 8fc20030 lw v0,48(s8)
-80036b60: 00000000 nop
-80036b64: 24420002 addiu v0,v0,2
-80036b68: afc20030 sw v0,48(s8)
- }
-
- while(*nptr)
-80036b6c: 10000047 b 80036c8c <strtoll+0x2bc>
-80036b70: 00000000 nop
- {
- switch(*nptr)
-80036b74: 8fc20030 lw v0,48(s8)
-80036b78: 00000000 nop
-80036b7c: 80420000 lb v0,0(v0)
-80036b80: 00000000 nop
-80036b84: 2843005b slti v1,v0,91
-80036b88: 1060000a beqz v1,80036bb4 <strtoll+0x1e4>
-80036b8c: 00000000 nop
-80036b90: 28430041 slti v1,v0,65
-80036b94: 1060001d beqz v1,80036c0c <strtoll+0x23c>
-80036b98: 00000000 nop
-80036b9c: 2442ffd0 addiu v0,v0,-48
-80036ba0: 2c42000a sltiu v0,v0,10
-80036ba4: 10400021 beqz v0,80036c2c <strtoll+0x25c>
-80036ba8: 00000000 nop
-80036bac: 10000007 b 80036bcc <strtoll+0x1fc>
-80036bb0: 00000000 nop
-80036bb4: 2442ff9f addiu v0,v0,-97
-80036bb8: 2c42001a sltiu v0,v0,26
-80036bbc: 1040001b beqz v0,80036c2c <strtoll+0x25c>
-80036bc0: 00000000 nop
-80036bc4: 10000009 b 80036bec <strtoll+0x21c>
-80036bc8: 00000000 nop
- {
- case '0'...'9':
- t = *nptr - '0';
-80036bcc: 8fc20030 lw v0,48(s8)
-80036bd0: 00000000 nop
-80036bd4: 80420000 lb v0,0(v0)
-80036bd8: 00000000 nop
-80036bdc: 2442ffd0 addiu v0,v0,-48
-80036be0: afc20014 sw v0,20(s8)
- break;
-80036be4: 10000014 b 80036c38 <strtoll+0x268>
-80036be8: 00000000 nop
- case 'a' ... 'z':
- t = (*nptr - 'a') + 10;
-80036bec: 8fc20030 lw v0,48(s8)
-80036bf0: 00000000 nop
-80036bf4: 80420000 lb v0,0(v0)
-80036bf8: 00000000 nop
-80036bfc: 2442ffa9 addiu v0,v0,-87
-80036c00: afc20014 sw v0,20(s8)
- break;
-80036c04: 1000000c b 80036c38 <strtoll+0x268>
-80036c08: 00000000 nop
- case 'A' ... 'Z':
- t = (*nptr - 'A') + 10;
-80036c0c: 8fc20030 lw v0,48(s8)
-80036c10: 00000000 nop
-80036c14: 80420000 lb v0,0(v0)
-80036c18: 00000000 nop
-80036c1c: 2442ffc9 addiu v0,v0,-55
-80036c20: afc20014 sw v0,20(s8)
- break;
-80036c24: 10000004 b 80036c38 <strtoll+0x268>
-80036c28: 00000000 nop
- default:
- t = 1000;
-80036c2c: 240203e8 li v0,1000
-80036c30: afc20014 sw v0,20(s8)
- break;
-80036c34: 00000000 nop
- }
-
- if(t>=base)
-80036c38: 8fc30014 lw v1,20(s8)
-80036c3c: 8fc20038 lw v0,56(s8)
-80036c40: 00000000 nop
-80036c44: 0062102a slt v0,v1,v0
-80036c48: 10400018 beqz v0,80036cac <strtoll+0x2dc>
-80036c4c: 00000000 nop
- break;
-
- r*=base;
-80036c50: 8fc30010 lw v1,16(s8)
-80036c54: 8fc20038 lw v0,56(s8)
-80036c58: 00000000 nop
-80036c5c: 00620018 mult v1,v0
-80036c60: 00001012 mflo v0
-80036c64: afc20010 sw v0,16(s8)
- r+=t;
-80036c68: 8fc30010 lw v1,16(s8)
-80036c6c: 8fc20014 lw v0,20(s8)
-80036c70: 00000000 nop
-80036c74: 00621021 addu v0,v1,v0
-80036c78: afc20010 sw v0,16(s8)
- nptr++;
-80036c7c: 8fc20030 lw v0,48(s8)
-80036c80: 00000000 nop
-80036c84: 24420001 addiu v0,v0,1
-80036c88: afc20030 sw v0,48(s8)
- {
- if(*(nptr+1) == 'x' || *(nptr+1) == 'X')
- nptr+=2;
- }
-
- while(*nptr)
-80036c8c: 8fc20030 lw v0,48(s8)
-80036c90: 00000000 nop
-80036c94: 80420000 lb v0,0(v0)
-80036c98: 00000000 nop
-80036c9c: 1440ffb5 bnez v0,80036b74 <strtoll+0x1a4>
-80036ca0: 00000000 nop
-80036ca4: 10000002 b 80036cb0 <strtoll+0x2e0>
-80036ca8: 00000000 nop
- t = 1000;
- break;
- }
-
- if(t>=base)
- break;
-80036cac: 00000000 nop
- r*=base;
- r+=t;
- nptr++;
- }
-
- if(endptr)*endptr = (char*)nptr;
-80036cb0: 8fc20034 lw v0,52(s8)
-80036cb4: 00000000 nop
-80036cb8: 10400005 beqz v0,80036cd0 <strtoll+0x300>
-80036cbc: 00000000 nop
-80036cc0: 8fc20034 lw v0,52(s8)
-80036cc4: 8fc30030 lw v1,48(s8)
-80036cc8: 00000000 nop
-80036ccc: ac430000 sw v1,0(v0)
- return n?-r:r;
-80036cd0: 8fc20018 lw v0,24(s8)
-80036cd4: 00000000 nop
-80036cd8: 10400006 beqz v0,80036cf4 <strtoll+0x324>
-80036cdc: 00000000 nop
-80036ce0: 8fc20010 lw v0,16(s8)
-80036ce4: 00000000 nop
-80036ce8: 00021023 negu v0,v0
-80036cec: 10000003 b 80036cfc <strtoll+0x32c>
-80036cf0: 00000000 nop
-80036cf4: 8fc20010 lw v0,16(s8)
-80036cf8: 00000000 nop
-80036cfc: 00408021 move s0,v0
-80036d00: 000217c3 sra v0,v0,0x1f
-80036d04: 00408821 move s1,v0
-80036d08: 02001021 move v0,s0
-80036d0c: 02201821 move v1,s1
-}
-80036d10: 03c0e821 move sp,s8
-80036d14: 8fbf002c lw ra,44(sp)
-80036d18: 8fbe0028 lw s8,40(sp)
-80036d1c: 8fb10024 lw s1,36(sp)
-80036d20: 8fb00020 lw s0,32(sp)
-80036d24: 27bd0030 addiu sp,sp,48
-80036d28: 03e00008 jr ra
-80036d2c: 00000000 nop
-
-80036d30 <strtol>:
-
-long strtol(const char *nptr, char **endptr, int base)
-{
-80036d30: 27bdffe8 addiu sp,sp,-24
-80036d34: afbf0014 sw ra,20(sp)
-80036d38: afbe0010 sw s8,16(sp)
-80036d3c: 03a0f021 move s8,sp
-80036d40: afc40018 sw a0,24(s8)
-80036d44: afc5001c sw a1,28(s8)
-80036d48: afc60020 sw a2,32(s8)
- return (long)strtoll(nptr, endptr, base);
-80036d4c: 8fc60020 lw a2,32(s8)
-80036d50: 8fc5001c lw a1,28(s8)
-80036d54: 8fc40018 lw a0,24(s8)
-80036d58: 0c00da74 jal 800369d0 <strtoll>
-80036d5c: 00000000 nop
-}
-80036d60: 03c0e821 move sp,s8
-80036d64: 8fbf0014 lw ra,20(sp)
-80036d68: 8fbe0010 lw s8,16(sp)
-80036d6c: 27bd0018 addiu sp,sp,24
-80036d70: 03e00008 jr ra
-80036d74: 00000000 nop
-
-80036d78 <strtod>:
-
-double strtod(const char *nptr, char **endptr)
-{
-80036d78: 27bdff80 addiu sp,sp,-128
-80036d7c: afbf007c sw ra,124(sp)
-80036d80: afbe0078 sw s8,120(sp)
-80036d84: afb10074 sw s1,116(sp)
-80036d88: afb00070 sw s0,112(sp)
-80036d8c: 03a0f021 move s8,sp
-80036d90: afc40080 sw a0,128(s8)
-80036d94: afc50084 sw a1,132(s8)
- char strbuf[64];
- int x = 0;
-80036d98: afc00010 sw zero,16(s8)
- int y;
- double i=0, d=0;
-80036d9c: afc00028 sw zero,40(s8)
-80036da0: afc0002c sw zero,44(s8)
-80036da4: afc00018 sw zero,24(s8)
-80036da8: afc0001c sw zero,28(s8)
- int s=1;
-80036dac: 24020001 li v0,1
-80036db0: afc20020 sw v0,32(s8)
-
- if(*nptr == '-')
-80036db4: 8fc20080 lw v0,128(s8)
-80036db8: 00000000 nop
-80036dbc: 80430000 lb v1,0(v0)
-80036dc0: 2402002d li v0,45
-80036dc4: 14620015 bne v1,v0,80036e1c <strtod+0xa4>
-80036dc8: 00000000 nop
- {
- nptr++;
-80036dcc: 8fc20080 lw v0,128(s8)
-80036dd0: 00000000 nop
-80036dd4: 24420001 addiu v0,v0,1
-80036dd8: afc20080 sw v0,128(s8)
- s=-1;
-80036ddc: 2402ffff li v0,-1
-80036de0: afc20020 sw v0,32(s8)
- }
-
- while(*nptr >= '0' && *nptr <= '9' && x < 18)
-80036de4: 1000000d b 80036e1c <strtod+0xa4>
-80036de8: 00000000 nop
- strbuf[x++] = *(nptr++);
-80036dec: 8fc20010 lw v0,16(s8)
-80036df0: 00000000 nop
-80036df4: 24430001 addiu v1,v0,1
-80036df8: afc30010 sw v1,16(s8)
-80036dfc: 8fc30080 lw v1,128(s8)
-80036e00: 00000000 nop
-80036e04: 24640001 addiu a0,v1,1
-80036e08: afc40080 sw a0,128(s8)
-80036e0c: 80630000 lb v1,0(v1)
-80036e10: 27c40010 addiu a0,s8,16
-80036e14: 00821021 addu v0,a0,v0
-80036e18: a0430020 sb v1,32(v0)
- {
- nptr++;
- s=-1;
- }
-
- while(*nptr >= '0' && *nptr <= '9' && x < 18)
-80036e1c: 8fc20080 lw v0,128(s8)
-80036e20: 00000000 nop
-80036e24: 80420000 lb v0,0(v0)
-80036e28: 00000000 nop
-80036e2c: 28420030 slti v0,v0,48
-80036e30: 1440000d bnez v0,80036e68 <strtod+0xf0>
-80036e34: 00000000 nop
-80036e38: 8fc20080 lw v0,128(s8)
-80036e3c: 00000000 nop
-80036e40: 80420000 lb v0,0(v0)
-80036e44: 00000000 nop
-80036e48: 2842003a slti v0,v0,58
-80036e4c: 10400006 beqz v0,80036e68 <strtod+0xf0>
-80036e50: 00000000 nop
-80036e54: 8fc20010 lw v0,16(s8)
-80036e58: 00000000 nop
-80036e5c: 28420012 slti v0,v0,18
-80036e60: 1440ffe2 bnez v0,80036dec <strtod+0x74>
-80036e64: 00000000 nop
- strbuf[x++] = *(nptr++);
-
- strbuf[x] = 0;
-80036e68: 8fc20010 lw v0,16(s8)
-80036e6c: 27c30010 addiu v1,s8,16
-80036e70: 00621021 addu v0,v1,v0
-80036e74: a0400020 sb zero,32(v0)
-
- i = (double)strtoll(strbuf, NULL, 10);
-80036e78: 27c20030 addiu v0,s8,48
-80036e7c: 2406000a li a2,10
-80036e80: 00002821 move a1,zero
-80036e84: 00402021 move a0,v0
-80036e88: 0c00da74 jal 800369d0 <strtoll>
-80036e8c: 00000000 nop
-80036e90: 00402021 move a0,v0
-80036e94: 00602821 move a1,v1
-80036e98: 0c00fc9b jal 8003f26c <__floatdidf>
-80036e9c: 00000000 nop
-80036ea0: afc20028 sw v0,40(s8)
-80036ea4: afc3002c sw v1,44(s8)
-
- if(*nptr == '.')
-80036ea8: 8fc20080 lw v0,128(s8)
-80036eac: 00000000 nop
-80036eb0: 80430000 lb v1,0(v0)
-80036eb4: 2402002e li v0,46
-80036eb8: 14620062 bne v1,v0,80037044 <strtod+0x2cc>
-80036ebc: 00000000 nop
- {
- nptr++;
-80036ec0: 8fc20080 lw v0,128(s8)
-80036ec4: 00000000 nop
-80036ec8: 24420001 addiu v0,v0,1
-80036ecc: afc20080 sw v0,128(s8)
- x = 0;
-80036ed0: afc00010 sw zero,16(s8)
-
- while(*nptr >= '0' && *nptr <= '9' && x < 7)
-80036ed4: 1000000d b 80036f0c <strtod+0x194>
-80036ed8: 00000000 nop
- strbuf[x++] = *(nptr++);
-80036edc: 8fc20010 lw v0,16(s8)
-80036ee0: 00000000 nop
-80036ee4: 24430001 addiu v1,v0,1
-80036ee8: afc30010 sw v1,16(s8)
-80036eec: 8fc30080 lw v1,128(s8)
-80036ef0: 00000000 nop
-80036ef4: 24640001 addiu a0,v1,1
-80036ef8: afc40080 sw a0,128(s8)
-80036efc: 80630000 lb v1,0(v1)
-80036f00: 27c40010 addiu a0,s8,16
-80036f04: 00821021 addu v0,a0,v0
-80036f08: a0430020 sb v1,32(v0)
- if(*nptr == '.')
- {
- nptr++;
- x = 0;
-
- while(*nptr >= '0' && *nptr <= '9' && x < 7)
-80036f0c: 8fc20080 lw v0,128(s8)
-80036f10: 00000000 nop
-80036f14: 80420000 lb v0,0(v0)
-80036f18: 00000000 nop
-80036f1c: 28420030 slti v0,v0,48
-80036f20: 1440000d bnez v0,80036f58 <strtod+0x1e0>
-80036f24: 00000000 nop
-80036f28: 8fc20080 lw v0,128(s8)
-80036f2c: 00000000 nop
-80036f30: 80420000 lb v0,0(v0)
-80036f34: 00000000 nop
-80036f38: 2842003a slti v0,v0,58
-80036f3c: 10400006 beqz v0,80036f58 <strtod+0x1e0>
-80036f40: 00000000 nop
-80036f44: 8fc20010 lw v0,16(s8)
-80036f48: 00000000 nop
-80036f4c: 28420007 slti v0,v0,7
-80036f50: 1440ffe2 bnez v0,80036edc <strtod+0x164>
-80036f54: 00000000 nop
- strbuf[x++] = *(nptr++);
-
- strbuf[x] = 0;
-80036f58: 8fc20010 lw v0,16(s8)
-80036f5c: 27c30010 addiu v1,s8,16
-80036f60: 00621021 addu v0,v1,v0
-80036f64: a0400020 sb zero,32(v0)
-
- if(endptr != NULL) *endptr = (char*)nptr;
-80036f68: 8fc20084 lw v0,132(s8)
-80036f6c: 00000000 nop
-80036f70: 10400005 beqz v0,80036f88 <strtod+0x210>
-80036f74: 00000000 nop
-80036f78: 8fc20084 lw v0,132(s8)
-80036f7c: 8fc30080 lw v1,128(s8)
-80036f80: 00000000 nop
-80036f84: ac430000 sw v1,0(v0)
-
- y=1;
-80036f88: 24020001 li v0,1
-80036f8c: afc20014 sw v0,20(s8)
-
- for(x=0;strbuf[x]!=0;x++)
-80036f90: afc00010 sw zero,16(s8)
-80036f94: 1000000b b 80036fc4 <strtod+0x24c>
-80036f98: 00000000 nop
- y*=10;
-80036f9c: 8fc20014 lw v0,20(s8)
-80036fa0: 00000000 nop
-80036fa4: 00021040 sll v0,v0,0x1
-80036fa8: 00021880 sll v1,v0,0x2
-80036fac: 00431021 addu v0,v0,v1
-80036fb0: afc20014 sw v0,20(s8)
-
- if(endptr != NULL) *endptr = (char*)nptr;
-
- y=1;
-
- for(x=0;strbuf[x]!=0;x++)
-80036fb4: 8fc20010 lw v0,16(s8)
-80036fb8: 00000000 nop
-80036fbc: 24420001 addiu v0,v0,1
-80036fc0: afc20010 sw v0,16(s8)
-80036fc4: 8fc20010 lw v0,16(s8)
-80036fc8: 27c30010 addiu v1,s8,16
-80036fcc: 00621021 addu v0,v1,v0
-80036fd0: 80420020 lb v0,32(v0)
-80036fd4: 00000000 nop
-80036fd8: 1440fff0 bnez v0,80036f9c <strtod+0x224>
-80036fdc: 00000000 nop
- y*=10;
-
- d = (double)strtoll(strbuf, NULL, 10);
-80036fe0: 27c20030 addiu v0,s8,48
-80036fe4: 2406000a li a2,10
-80036fe8: 00002821 move a1,zero
-80036fec: 00402021 move a0,v0
-80036ff0: 0c00da74 jal 800369d0 <strtoll>
-80036ff4: 00000000 nop
-80036ff8: 00402021 move a0,v0
-80036ffc: 00602821 move a1,v1
-80037000: 0c00fc9b jal 8003f26c <__floatdidf>
-80037004: 00000000 nop
-80037008: afc20018 sw v0,24(s8)
-8003700c: afc3001c sw v1,28(s8)
- d /= y;
-80037010: 8fc40014 lw a0,20(s8)
-80037014: 0c00fc5c jal 8003f170 <__floatsidf>
-80037018: 00000000 nop
-8003701c: 00403021 move a2,v0
-80037020: 00603821 move a3,v1
-80037024: 8fc40018 lw a0,24(s8)
-80037028: 8fc5001c lw a1,28(s8)
-8003702c: 0c00f625 jal 8003d894 <__divdf3>
-80037030: 00000000 nop
-80037034: afc20018 sw v0,24(s8)
-80037038: afc3001c sw v1,28(s8)
-8003703c: 10000009 b 80037064 <strtod+0x2ec>
-80037040: 00000000 nop
- }
- else
- {
- if(endptr != NULL)
-80037044: 8fc20084 lw v0,132(s8)
-80037048: 00000000 nop
-8003704c: 10400005 beqz v0,80037064 <strtod+0x2ec>
-80037050: 00000000 nop
- *endptr = (char*)nptr;
-80037054: 8fc20084 lw v0,132(s8)
-80037058: 8fc30080 lw v1,128(s8)
-8003705c: 00000000 nop
-80037060: ac430000 sw v1,0(v0)
- }
-
- return (i + d)*s;
-80037064: 8fc60018 lw a2,24(s8)
-80037068: 8fc7001c lw a3,28(s8)
-8003706c: 8fc40028 lw a0,40(s8)
-80037070: 8fc5002c lw a1,44(s8)
-80037074: 0c00f3d7 jal 8003cf5c <__adddf3>
-80037078: 00000000 nop
-8003707c: 00408021 move s0,v0
-80037080: 00608821 move s1,v1
-80037084: 8fc40020 lw a0,32(s8)
-80037088: 0c00fc5c jal 8003f170 <__floatsidf>
-8003708c: 00000000 nop
-80037090: 00403021 move a2,v0
-80037094: 00603821 move a3,v1
-80037098: 02002021 move a0,s0
-8003709c: 02202821 move a1,s1
-800370a0: 0c00f853 jal 8003e14c <__muldf3>
-800370a4: 00000000 nop
-}
-800370a8: 03c0e821 move sp,s8
-800370ac: 8fbf007c lw ra,124(sp)
-800370b0: 8fbe0078 lw s8,120(sp)
-800370b4: 8fb10074 lw s1,116(sp)
-800370b8: 8fb00070 lw s0,112(sp)
-800370bc: 27bd0080 addiu sp,sp,128
-800370c0: 03e00008 jr ra
-800370c4: 00000000 nop
-
-800370c8 <strtold>:
-
-long double strtold(const char *nptr, char **endptr)
-{
-800370c8: 27bdffe8 addiu sp,sp,-24
-800370cc: afbf0014 sw ra,20(sp)
-800370d0: afbe0010 sw s8,16(sp)
-800370d4: 03a0f021 move s8,sp
-800370d8: afc40018 sw a0,24(s8)
-800370dc: afc5001c sw a1,28(s8)
- return (long double)strtod(nptr, endptr);
-800370e0: 8fc5001c lw a1,28(s8)
-800370e4: 8fc40018 lw a0,24(s8)
-800370e8: 0c00db5e jal 80036d78 <strtod>
-800370ec: 00000000 nop
-}
-800370f0: 03c0e821 move sp,s8
-800370f4: 8fbf0014 lw ra,20(sp)
-800370f8: 8fbe0010 lw s8,16(sp)
-800370fc: 27bd0018 addiu sp,sp,24
-80037100: 03e00008 jr ra
-80037104: 00000000 nop
-
-80037108 <strtof>:
-
-float strtof(const char *nptr, char **endptr)
-{
-80037108: 27bdffe8 addiu sp,sp,-24
-8003710c: afbf0014 sw ra,20(sp)
-80037110: afbe0010 sw s8,16(sp)
-80037114: 03a0f021 move s8,sp
-80037118: afc40018 sw a0,24(s8)
-8003711c: afc5001c sw a1,28(s8)
- return (float)strtod(nptr, endptr);
-80037120: 8fc5001c lw a1,28(s8)
-80037124: 8fc40018 lw a0,24(s8)
-80037128: 0c00db5e jal 80036d78 <strtod>
-8003712c: 00000000 nop
-80037130: 00402021 move a0,v0
-80037134: 00602821 move a1,v1
-80037138: 0c00fd34 jal 8003f4d0 <__truncdfsf2>
-8003713c: 00000000 nop
-}
-80037140: 03c0e821 move sp,s8
-80037144: 8fbf0014 lw ra,20(sp)
-80037148: 8fbe0010 lw s8,16(sp)
-8003714c: 27bd0018 addiu sp,sp,24
-80037150: 03e00008 jr ra
-80037154: 00000000 nop
-
-80037158 <strcat>:
-
-char *strcat(char *s, const char *append)
-{
-80037158: 27bdffe8 addiu sp,sp,-24
-8003715c: afbf0014 sw ra,20(sp)
-80037160: afbe0010 sw s8,16(sp)
-80037164: 03a0f021 move s8,sp
-80037168: afc40018 sw a0,24(s8)
-8003716c: afc5001c sw a1,28(s8)
- strcpy(&s[strlen(s)], append);
-80037170: 8fc40018 lw a0,24(s8)
-80037174: 0c00d8af jal 800362bc <strlen>
-80037178: 00000000 nop
-8003717c: 00401821 move v1,v0
-80037180: 8fc20018 lw v0,24(s8)
-80037184: 00000000 nop
-80037188: 00431021 addu v0,v0,v1
-8003718c: 8fc5001c lw a1,28(s8)
-80037190: 00402021 move a0,v0
-80037194: 0c00d891 jal 80036244 <strcpy>
-80037198: 00000000 nop
-
- return s;
-8003719c: 8fc20018 lw v0,24(s8)
-}
-800371a0: 03c0e821 move sp,s8
-800371a4: 8fbf0014 lw ra,20(sp)
-800371a8: 8fbe0010 lw s8,16(sp)
-800371ac: 27bd0018 addiu sp,sp,24
-800371b0: 03e00008 jr ra
-800371b4: 00000000 nop
-
-800371b8 <strncat>:
-
-char *strncat(char *s, const char *append, size_t count)
-{
-800371b8: 27bdffe8 addiu sp,sp,-24
-800371bc: afbf0014 sw ra,20(sp)
-800371c0: afbe0010 sw s8,16(sp)
-800371c4: 03a0f021 move s8,sp
-800371c8: afc40018 sw a0,24(s8)
-800371cc: afc5001c sw a1,28(s8)
-800371d0: afc60020 sw a2,32(s8)
- strncpy(&s[strlen(s)], append, count);
-800371d4: 8fc40018 lw a0,24(s8)
-800371d8: 0c00d8af jal 800362bc <strlen>
-800371dc: 00000000 nop
-800371e0: 00401821 move v1,v0
-800371e4: 8fc20018 lw v0,24(s8)
-800371e8: 00000000 nop
-800371ec: 00431021 addu v0,v0,v1
-800371f0: 8fc60020 lw a2,32(s8)
-800371f4: 8fc5001c lw a1,28(s8)
-800371f8: 00402021 move a0,v0
-800371fc: 0c00d860 jal 80036180 <strncpy>
-80037200: 00000000 nop
-
- return s;
-80037204: 8fc20018 lw v0,24(s8)
-}
-80037208: 03c0e821 move sp,s8
-8003720c: 8fbf0014 lw ra,20(sp)
-80037210: 8fbe0010 lw s8,16(sp)
-80037214: 27bd0018 addiu sp,sp,24
-80037218: 03e00008 jr ra
-8003721c: 00000000 nop
-
-80037220 <strcasecmp>:
-
-int strcasecmp(const char *s1, const char *s2)
-{
-80037220: 27bdffe0 addiu sp,sp,-32
-80037224: afbf001c sw ra,28(sp)
-80037228: afbe0018 sw s8,24(sp)
-8003722c: afb00014 sw s0,20(sp)
-80037230: 03a0f021 move s8,sp
-80037234: afc40020 sw a0,32(s8)
-80037238: afc50024 sw a1,36(s8)
- while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2)))
-8003723c: 10000009 b 80037264 <strcasecmp+0x44>
-80037240: 00000000 nop
- {
- s1++;
-80037244: 8fc20020 lw v0,32(s8)
-80037248: 00000000 nop
-8003724c: 24420001 addiu v0,v0,1
-80037250: afc20020 sw v0,32(s8)
- s2++;
-80037254: 8fc20024 lw v0,36(s8)
-80037258: 00000000 nop
-8003725c: 24420001 addiu v0,v0,1
-80037260: afc20024 sw v0,36(s8)
- return s;
-}
-
-int strcasecmp(const char *s1, const char *s2)
-{
- while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2)))
-80037264: 8fc20020 lw v0,32(s8)
-80037268: 00000000 nop
-8003726c: 80420000 lb v0,0(v0)
-80037270: 00000000 nop
-80037274: 00402021 move a0,v0
-80037278: 0c00a5eb jal 800297ac <tolower>
-8003727c: 00000000 nop
-80037280: 1040001b beqz v0,800372f0 <strcasecmp+0xd0>
-80037284: 00000000 nop
-80037288: 8fc20024 lw v0,36(s8)
-8003728c: 00000000 nop
-80037290: 80420000 lb v0,0(v0)
-80037294: 00000000 nop
-80037298: 00402021 move a0,v0
-8003729c: 0c00a5eb jal 800297ac <tolower>
-800372a0: 00000000 nop
-800372a4: 10400012 beqz v0,800372f0 <strcasecmp+0xd0>
-800372a8: 00000000 nop
-800372ac: 8fc20020 lw v0,32(s8)
-800372b0: 00000000 nop
-800372b4: 80420000 lb v0,0(v0)
-800372b8: 00000000 nop
-800372bc: 00402021 move a0,v0
-800372c0: 0c00a5eb jal 800297ac <tolower>
-800372c4: 00000000 nop
-800372c8: 00408021 move s0,v0
-800372cc: 8fc20024 lw v0,36(s8)
-800372d0: 00000000 nop
-800372d4: 80420000 lb v0,0(v0)
-800372d8: 00000000 nop
-800372dc: 00402021 move a0,v0
-800372e0: 0c00a5eb jal 800297ac <tolower>
-800372e4: 00000000 nop
-800372e8: 1202ffd6 beq s0,v0,80037244 <strcasecmp+0x24>
-800372ec: 00000000 nop
- {
- s1++;
- s2++;
- }
-
- return tolower(*s1)-tolower(*s2);
-800372f0: 8fc20020 lw v0,32(s8)
-800372f4: 00000000 nop
-800372f8: 80420000 lb v0,0(v0)
-800372fc: 00000000 nop
-80037300: 00402021 move a0,v0
-80037304: 0c00a5eb jal 800297ac <tolower>
-80037308: 00000000 nop
-8003730c: 00408021 move s0,v0
-80037310: 8fc20024 lw v0,36(s8)
-80037314: 00000000 nop
-80037318: 80420000 lb v0,0(v0)
-8003731c: 00000000 nop
-80037320: 00402021 move a0,v0
-80037324: 0c00a5eb jal 800297ac <tolower>
-80037328: 00000000 nop
-8003732c: 02021023 subu v0,s0,v0
-}
-80037330: 03c0e821 move sp,s8
-80037334: 8fbf001c lw ra,28(sp)
-80037338: 8fbe0018 lw s8,24(sp)
-8003733c: 8fb00014 lw s0,20(sp)
-80037340: 27bd0020 addiu sp,sp,32
-80037344: 03e00008 jr ra
-80037348: 00000000 nop
-
-8003734c <strncasecmp>:
-
-int strncasecmp(const char *s1, const char *s2, size_t len)
-{
-8003734c: 27bdffd8 addiu sp,sp,-40
-80037350: afbf0024 sw ra,36(sp)
-80037354: afbe0020 sw s8,32(sp)
-80037358: afb0001c sw s0,28(sp)
-8003735c: 03a0f021 move s8,sp
-80037360: afc40028 sw a0,40(s8)
-80037364: afc5002c sw a1,44(s8)
-80037368: afc60030 sw a2,48(s8)
- int p = 0;
-8003736c: afc00010 sw zero,16(s8)
-
- while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2)) && p<len)
-80037370: 10000013 b 800373c0 <strncasecmp+0x74>
-80037374: 00000000 nop
- {
- p++;
-80037378: 8fc20010 lw v0,16(s8)
-8003737c: 00000000 nop
-80037380: 24420001 addiu v0,v0,1
-80037384: afc20010 sw v0,16(s8)
-
- if(p<len)
-80037388: 8fc30010 lw v1,16(s8)
-8003738c: 8fc20030 lw v0,48(s8)
-80037390: 00000000 nop
-80037394: 0062102b sltu v0,v1,v0
-80037398: 10400009 beqz v0,800373c0 <strncasecmp+0x74>
-8003739c: 00000000 nop
- {
- s1++;
-800373a0: 8fc20028 lw v0,40(s8)
-800373a4: 00000000 nop
-800373a8: 24420001 addiu v0,v0,1
-800373ac: afc20028 sw v0,40(s8)
- s2++;
-800373b0: 8fc2002c lw v0,44(s8)
-800373b4: 00000000 nop
-800373b8: 24420001 addiu v0,v0,1
-800373bc: afc2002c sw v0,44(s8)
-
-int strncasecmp(const char *s1, const char *s2, size_t len)
-{
- int p = 0;
-
- while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2)) && p<len)
-800373c0: 8fc20028 lw v0,40(s8)
-800373c4: 00000000 nop
-800373c8: 80420000 lb v0,0(v0)
-800373cc: 00000000 nop
-800373d0: 00402021 move a0,v0
-800373d4: 0c00a5eb jal 800297ac <tolower>
-800373d8: 00000000 nop
-800373dc: 10400021 beqz v0,80037464 <strncasecmp+0x118>
-800373e0: 00000000 nop
-800373e4: 8fc2002c lw v0,44(s8)
-800373e8: 00000000 nop
-800373ec: 80420000 lb v0,0(v0)
-800373f0: 00000000 nop
-800373f4: 00402021 move a0,v0
-800373f8: 0c00a5eb jal 800297ac <tolower>
-800373fc: 00000000 nop
-80037400: 10400018 beqz v0,80037464 <strncasecmp+0x118>
-80037404: 00000000 nop
-80037408: 8fc20028 lw v0,40(s8)
-8003740c: 00000000 nop
-80037410: 80420000 lb v0,0(v0)
-80037414: 00000000 nop
-80037418: 00402021 move a0,v0
-8003741c: 0c00a5eb jal 800297ac <tolower>
-80037420: 00000000 nop
-80037424: 00408021 move s0,v0
-80037428: 8fc2002c lw v0,44(s8)
-8003742c: 00000000 nop
-80037430: 80420000 lb v0,0(v0)
-80037434: 00000000 nop
-80037438: 00402021 move a0,v0
-8003743c: 0c00a5eb jal 800297ac <tolower>
-80037440: 00000000 nop
-80037444: 16020007 bne s0,v0,80037464 <strncasecmp+0x118>
-80037448: 00000000 nop
-8003744c: 8fc30010 lw v1,16(s8)
-80037450: 8fc20030 lw v0,48(s8)
-80037454: 00000000 nop
-80037458: 0062102b sltu v0,v1,v0
-8003745c: 1440ffc6 bnez v0,80037378 <strncasecmp+0x2c>
-80037460: 00000000 nop
- s1++;
- s2++;
- }
- }
-
- return tolower(*s1)-tolower(*s2);
-80037464: 8fc20028 lw v0,40(s8)
-80037468: 00000000 nop
-8003746c: 80420000 lb v0,0(v0)
-80037470: 00000000 nop
-80037474: 00402021 move a0,v0
-80037478: 0c00a5eb jal 800297ac <tolower>
-8003747c: 00000000 nop
-80037480: 00408021 move s0,v0
-80037484: 8fc2002c lw v0,44(s8)
-80037488: 00000000 nop
-8003748c: 80420000 lb v0,0(v0)
-80037490: 00000000 nop
-80037494: 00402021 move a0,v0
-80037498: 0c00a5eb jal 800297ac <tolower>
-8003749c: 00000000 nop
-800374a0: 02021023 subu v0,s0,v0
-}
-800374a4: 03c0e821 move sp,s8
-800374a8: 8fbf0024 lw ra,36(sp)
-800374ac: 8fbe0020 lw s8,32(sp)
-800374b0: 8fb0001c lw s0,28(sp)
-800374b4: 27bd0028 addiu sp,sp,40
-800374b8: 03e00008 jr ra
-800374bc: 00000000 nop
-
-800374c0 <stricmp>:
-
-int stricmp(const char *s1, const char *s2)
-{
-800374c0: 27bdffe8 addiu sp,sp,-24
-800374c4: afbf0014 sw ra,20(sp)
-800374c8: afbe0010 sw s8,16(sp)
-800374cc: 03a0f021 move s8,sp
-800374d0: afc40018 sw a0,24(s8)
-800374d4: afc5001c sw a1,28(s8)
- return strcasecmp(s1,s2);
-800374d8: 8fc5001c lw a1,28(s8)
-800374dc: 8fc40018 lw a0,24(s8)
-800374e0: 0c00dc88 jal 80037220 <strcasecmp>
-800374e4: 00000000 nop
-}
-800374e8: 03c0e821 move sp,s8
-800374ec: 8fbf0014 lw ra,20(sp)
-800374f0: 8fbe0010 lw s8,16(sp)
-800374f4: 27bd0018 addiu sp,sp,24
-800374f8: 03e00008 jr ra
-800374fc: 00000000 nop
-
-80037500 <strnicmp>:
-
-int strnicmp(const char *s1, const char *s2, size_t len)
-{
-80037500: 27bdffe8 addiu sp,sp,-24
-80037504: afbf0014 sw ra,20(sp)
-80037508: afbe0010 sw s8,16(sp)
-8003750c: 03a0f021 move s8,sp
-80037510: afc40018 sw a0,24(s8)
-80037514: afc5001c sw a1,28(s8)
-80037518: afc60020 sw a2,32(s8)
- return strncasecmp(s1, s2, len);
-8003751c: 8fc60020 lw a2,32(s8)
-80037520: 8fc5001c lw a1,28(s8)
-80037524: 8fc40018 lw a0,24(s8)
-80037528: 0c00dcd3 jal 8003734c <strncasecmp>
-8003752c: 00000000 nop
-}
-80037530: 03c0e821 move sp,s8
-80037534: 8fbf0014 lw ra,20(sp)
-80037538: 8fbe0010 lw s8,16(sp)
-8003753c: 27bd0018 addiu sp,sp,24
-80037540: 03e00008 jr ra
-80037544: 00000000 nop
-
-80037548 <strsep>:
-
-//static char *strtok_string;
-
-char *strsep(char **stringp, const char *delim)
-{
-80037548: 27bdffe8 addiu sp,sp,-24
-8003754c: afbe0014 sw s8,20(sp)
-80037550: 03a0f021 move s8,sp
-80037554: afc40018 sw a0,24(s8)
-80037558: afc5001c sw a1,28(s8)
- //int x,y;
- char *old = *stringp;
-8003755c: 8fc20018 lw v0,24(s8)
-80037560: 00000000 nop
-80037564: 8c420000 lw v0,0(v0)
-80037568: 00000000 nop
-8003756c: afc20004 sw v0,4(s8)
- const char *s;
- int ok = 0;
-80037570: afc00000 sw zero,0(s8)
-
- while(**stringp && !ok)
-80037574: 1000002f b 80037634 <strsep+0xec>
-80037578: 00000000 nop
- {
- s = delim;
-8003757c: 8fc2001c lw v0,28(s8)
-80037580: 00000000 nop
-80037584: afc20008 sw v0,8(s8)
-
- while(*delim)
-80037588: 10000019 b 800375f0 <strsep+0xa8>
-8003758c: 00000000 nop
- {
- if(**stringp == *delim)
-80037590: 8fc20018 lw v0,24(s8)
-80037594: 00000000 nop
-80037598: 8c420000 lw v0,0(v0)
-8003759c: 00000000 nop
-800375a0: 80430000 lb v1,0(v0)
-800375a4: 8fc2001c lw v0,28(s8)
-800375a8: 00000000 nop
-800375ac: 80420000 lb v0,0(v0)
-800375b0: 00000000 nop
-800375b4: 1462000a bne v1,v0,800375e0 <strsep+0x98>
-800375b8: 00000000 nop
- {
- **stringp = 0;
-800375bc: 8fc20018 lw v0,24(s8)
-800375c0: 00000000 nop
-800375c4: 8c420000 lw v0,0(v0)
-800375c8: 00000000 nop
-800375cc: a0400000 sb zero,0(v0)
- ok = 1;
-800375d0: 24020001 li v0,1
-800375d4: afc20000 sw v0,0(s8)
- break;
-800375d8: 1000000b b 80037608 <strsep+0xc0>
-800375dc: 00000000 nop
- }
-
- delim++;
-800375e0: 8fc2001c lw v0,28(s8)
-800375e4: 00000000 nop
-800375e8: 24420001 addiu v0,v0,1
-800375ec: afc2001c sw v0,28(s8)
-
- while(**stringp && !ok)
- {
- s = delim;
-
- while(*delim)
-800375f0: 8fc2001c lw v0,28(s8)
-800375f4: 00000000 nop
-800375f8: 80420000 lb v0,0(v0)
-800375fc: 00000000 nop
-80037600: 1440ffe3 bnez v0,80037590 <strsep+0x48>
-80037604: 00000000 nop
- }
-
- delim++;
- }
-
- delim = s;
-80037608: 8fc20008 lw v0,8(s8)
-8003760c: 00000000 nop
-80037610: afc2001c sw v0,28(s8)
-
- *stringp+=1;
-80037614: 8fc20018 lw v0,24(s8)
-80037618: 00000000 nop
-8003761c: 8c420000 lw v0,0(v0)
-80037620: 00000000 nop
-80037624: 24430001 addiu v1,v0,1
-80037628: 8fc20018 lw v0,24(s8)
-8003762c: 00000000 nop
-80037630: ac430000 sw v1,0(v0)
- //int x,y;
- char *old = *stringp;
- const char *s;
- int ok = 0;
-
- while(**stringp && !ok)
-80037634: 8fc20018 lw v0,24(s8)
-80037638: 00000000 nop
-8003763c: 8c420000 lw v0,0(v0)
-80037640: 00000000 nop
-80037644: 80420000 lb v0,0(v0)
-80037648: 00000000 nop
-8003764c: 10400005 beqz v0,80037664 <strsep+0x11c>
-80037650: 00000000 nop
-80037654: 8fc20000 lw v0,0(s8)
-80037658: 00000000 nop
-8003765c: 1040ffc7 beqz v0,8003757c <strsep+0x34>
-80037660: 00000000 nop
- delim = s;
-
- *stringp+=1;
- }
-
- if(!ok)*stringp = NULL;
-80037664: 8fc20000 lw v0,0(s8)
-80037668: 00000000 nop
-8003766c: 14400004 bnez v0,80037680 <strsep+0x138>
-80037670: 00000000 nop
-80037674: 8fc20018 lw v0,24(s8)
-80037678: 00000000 nop
-8003767c: ac400000 sw zero,0(v0)
-
- return old;
-80037680: 8fc20004 lw v0,4(s8)
-}
-80037684: 03c0e821 move sp,s8
-80037688: 8fbe0014 lw s8,20(sp)
-8003768c: 27bd0018 addiu sp,sp,24
-80037690: 03e00008 jr ra
-80037694: 00000000 nop
-
-80037698 <strtok_r>:
-
-char* strtok_r(
- char *str,
- const char *delim,
- char **nextp)
-{
-80037698: 27bdffe0 addiu sp,sp,-32
-8003769c: afbf001c sw ra,28(sp)
-800376a0: afbe0018 sw s8,24(sp)
-800376a4: 03a0f021 move s8,sp
-800376a8: afc40020 sw a0,32(s8)
-800376ac: afc50024 sw a1,36(s8)
-800376b0: afc60028 sw a2,40(s8)
- char *ret;
-
- if (str == NULL)
-800376b4: 8fc20020 lw v0,32(s8)
-800376b8: 00000000 nop
-800376bc: 14400006 bnez v0,800376d8 <strtok_r+0x40>
-800376c0: 00000000 nop
- {
- str = *nextp;
-800376c4: 8fc20028 lw v0,40(s8)
-800376c8: 00000000 nop
-800376cc: 8c420000 lw v0,0(v0)
-800376d0: 00000000 nop
-800376d4: afc20020 sw v0,32(s8)
- }
-
- str += strspn(str, delim);
-800376d8: 8fc50024 lw a1,36(s8)
-800376dc: 8fc40020 lw a0,32(s8)
-800376e0: 0c00dea0 jal 80037a80 <strspn>
-800376e4: 00000000 nop
-800376e8: 00401821 move v1,v0
-800376ec: 8fc20020 lw v0,32(s8)
-800376f0: 00000000 nop
-800376f4: 00431021 addu v0,v0,v1
-800376f8: afc20020 sw v0,32(s8)
-
- if (*str == '\0')
-800376fc: 8fc20020 lw v0,32(s8)
-80037700: 00000000 nop
-80037704: 80420000 lb v0,0(v0)
-80037708: 00000000 nop
-8003770c: 14400004 bnez v0,80037720 <strtok_r+0x88>
-80037710: 00000000 nop
- {
- return NULL;
-80037714: 00001021 move v0,zero
-80037718: 1000001d b 80037790 <strtok_r+0xf8>
-8003771c: 00000000 nop
- }
-
- ret = str;
-80037720: 8fc20020 lw v0,32(s8)
-80037724: 00000000 nop
-80037728: afc20010 sw v0,16(s8)
-
- str += strcspn(str, delim);
-8003772c: 8fc50024 lw a1,36(s8)
-80037730: 8fc40020 lw a0,32(s8)
-80037734: 0c00dee2 jal 80037b88 <strcspn>
-80037738: 00000000 nop
-8003773c: 00401821 move v1,v0
-80037740: 8fc20020 lw v0,32(s8)
-80037744: 00000000 nop
-80037748: 00431021 addu v0,v0,v1
-8003774c: afc20020 sw v0,32(s8)
-
- if (*str)
-80037750: 8fc20020 lw v0,32(s8)
-80037754: 00000000 nop
-80037758: 80420000 lb v0,0(v0)
-8003775c: 00000000 nop
-80037760: 10400006 beqz v0,8003777c <strtok_r+0xe4>
-80037764: 00000000 nop
- {
- *str++ = '\0';
-80037768: 8fc20020 lw v0,32(s8)
-8003776c: 00000000 nop
-80037770: 24430001 addiu v1,v0,1
-80037774: afc30020 sw v1,32(s8)
-80037778: a0400000 sb zero,0(v0)
- }
-
- *nextp = str;
-8003777c: 8fc20028 lw v0,40(s8)
-80037780: 8fc30020 lw v1,32(s8)
-80037784: 00000000 nop
-80037788: ac430000 sw v1,0(v0)
-
- return ret;
-8003778c: 8fc20010 lw v0,16(s8)
-}
-80037790: 03c0e821 move sp,s8
-80037794: 8fbf001c lw ra,28(sp)
-80037798: 8fbe0018 lw s8,24(sp)
-8003779c: 27bd0020 addiu sp,sp,32
-800377a0: 03e00008 jr ra
-800377a4: 00000000 nop
-
-800377a8 <strtok>:
-
-char *strtok(char *str, const char *sep)
-{
-800377a8: 27bdffe0 addiu sp,sp,-32
-800377ac: afbf001c sw ra,28(sp)
-800377b0: afbe0018 sw s8,24(sp)
-800377b4: 03a0f021 move s8,sp
-800377b8: afc40020 sw a0,32(s8)
-800377bc: afc50024 sw a1,36(s8)
- static char *strtok_string;
- static int strtok_len;
- static int strtok_pos;
- //int strtok_oldpos = 0;
-
- if(str != NULL)
-800377c0: 8fc20020 lw v0,32(s8)
-800377c4: 00000000 nop
-800377c8: 1040007c beqz v0,800379bc <strtok+0x214>
-800377cc: 00000000 nop
- {
- strtok_string = str;
-800377d0: 3c028007 lui v0,0x8007
-800377d4: 8fc30020 lw v1,32(s8)
-800377d8: 00000000 nop
-800377dc: ac431d0c sw v1,7436(v0)
- strtok_len = strlen(str);
-800377e0: 8fc40020 lw a0,32(s8)
-800377e4: 0c00d8af jal 800362bc <strlen>
-800377e8: 00000000 nop
-800377ec: 00401821 move v1,v0
-800377f0: 3c028007 lui v0,0x8007
-800377f4: ac431d10 sw v1,7440(v0)
-
- for(x = 0; x < strtok_len; x++)
-800377f8: afc00010 sw zero,16(s8)
-800377fc: 1000002a b 800378a8 <strtok+0x100>
-80037800: 00000000 nop
- {
- for(y = 0; sep[y] != 0; y++)
-80037804: afc00014 sw zero,20(s8)
-80037808: 1000001b b 80037878 <strtok+0xd0>
-8003780c: 00000000 nop
- {
- if(strtok_string[x] == sep[y])
-80037810: 3c028007 lui v0,0x8007
-80037814: 8c431d0c lw v1,7436(v0)
-80037818: 8fc20010 lw v0,16(s8)
-8003781c: 00000000 nop
-80037820: 00621021 addu v0,v1,v0
-80037824: 80430000 lb v1,0(v0)
-80037828: 8fc20014 lw v0,20(s8)
-8003782c: 8fc40024 lw a0,36(s8)
-80037830: 00000000 nop
-80037834: 00821021 addu v0,a0,v0
-80037838: 80420000 lb v0,0(v0)
-8003783c: 00000000 nop
-80037840: 14620009 bne v1,v0,80037868 <strtok+0xc0>
-80037844: 00000000 nop
- {
- strtok_string[x] = 0;
-80037848: 3c028007 lui v0,0x8007
-8003784c: 8c431d0c lw v1,7436(v0)
-80037850: 8fc20010 lw v0,16(s8)
-80037854: 00000000 nop
-80037858: 00621021 addu v0,v1,v0
-8003785c: a0400000 sb zero,0(v0)
- break;
-80037860: 1000000d b 80037898 <strtok+0xf0>
-80037864: 00000000 nop
- strtok_string = str;
- strtok_len = strlen(str);
-
- for(x = 0; x < strtok_len; x++)
- {
- for(y = 0; sep[y] != 0; y++)
-80037868: 8fc20014 lw v0,20(s8)
-8003786c: 00000000 nop
-80037870: 24420001 addiu v0,v0,1
-80037874: afc20014 sw v0,20(s8)
-80037878: 8fc20014 lw v0,20(s8)
-8003787c: 8fc30024 lw v1,36(s8)
-80037880: 00000000 nop
-80037884: 00621021 addu v0,v1,v0
-80037888: 80420000 lb v0,0(v0)
-8003788c: 00000000 nop
-80037890: 1440ffdf bnez v0,80037810 <strtok+0x68>
-80037894: 00000000 nop
- if(str != NULL)
- {
- strtok_string = str;
- strtok_len = strlen(str);
-
- for(x = 0; x < strtok_len; x++)
-80037898: 8fc20010 lw v0,16(s8)
-8003789c: 00000000 nop
-800378a0: 24420001 addiu v0,v0,1
-800378a4: afc20010 sw v0,16(s8)
-800378a8: 3c028007 lui v0,0x8007
-800378ac: 8c421d10 lw v0,7440(v0)
-800378b0: 8fc30010 lw v1,16(s8)
-800378b4: 00000000 nop
-800378b8: 0062102a slt v0,v1,v0
-800378bc: 1440ffd1 bnez v0,80037804 <strtok+0x5c>
-800378c0: 00000000 nop
- break;
- }
- }
- }
-
- strtok_pos = 0;
-800378c4: 3c028007 lui v0,0x8007
-800378c8: ac401d14 sw zero,7444(v0)
-
- while(strtok_pos < strtok_len)
-800378cc: 10000019 b 80037934 <strtok+0x18c>
-800378d0: 00000000 nop
- {
- if(strtok_string[strtok_pos])
-800378d4: 3c028007 lui v0,0x8007
-800378d8: 8c421d0c lw v0,7436(v0)
-800378dc: 3c038007 lui v1,0x8007
-800378e0: 8c631d14 lw v1,7444(v1)
-800378e4: 00000000 nop
-800378e8: 00431021 addu v0,v0,v1
-800378ec: 80420000 lb v0,0(v0)
-800378f0: 00000000 nop
-800378f4: 10400009 beqz v0,8003791c <strtok+0x174>
-800378f8: 00000000 nop
- return &strtok_string[strtok_pos];
-800378fc: 3c028007 lui v0,0x8007
-80037900: 8c421d0c lw v0,7436(v0)
-80037904: 3c038007 lui v1,0x8007
-80037908: 8c631d14 lw v1,7444(v1)
-8003790c: 00000000 nop
-80037910: 00431021 addu v0,v0,v1
-80037914: 10000054 b 80037a68 <strtok+0x2c0>
-80037918: 00000000 nop
-
- strtok_pos++;
-8003791c: 3c028007 lui v0,0x8007
-80037920: 8c421d14 lw v0,7444(v0)
-80037924: 00000000 nop
-80037928: 24430001 addiu v1,v0,1
-8003792c: 3c028007 lui v0,0x8007
-80037930: ac431d14 sw v1,7444(v0)
- }
- }
-
- strtok_pos = 0;
-
- while(strtok_pos < strtok_len)
-80037934: 3c028007 lui v0,0x8007
-80037938: 8c431d14 lw v1,7444(v0)
-8003793c: 3c028007 lui v0,0x8007
-80037940: 8c421d10 lw v0,7440(v0)
-80037944: 00000000 nop
-80037948: 0062102a slt v0,v1,v0
-8003794c: 1440ffe1 bnez v0,800378d4 <strtok+0x12c>
-80037950: 00000000 nop
-
- strtok_pos++;
- }
- }
-
- while(strtok_pos < strtok_len)
-80037954: 10000019 b 800379bc <strtok+0x214>
-80037958: 00000000 nop
- {
- if(!strtok_string[strtok_pos])
-8003795c: 3c028007 lui v0,0x8007
-80037960: 8c421d0c lw v0,7436(v0)
-80037964: 3c038007 lui v1,0x8007
-80037968: 8c631d14 lw v1,7444(v1)
-8003796c: 00000000 nop
-80037970: 00431021 addu v0,v0,v1
-80037974: 80420000 lb v0,0(v0)
-80037978: 00000000 nop
-8003797c: 14400009 bnez v0,800379a4 <strtok+0x1fc>
-80037980: 00000000 nop
- {
- strtok_pos++;
-80037984: 3c028007 lui v0,0x8007
-80037988: 8c421d14 lw v0,7444(v0)
-8003798c: 00000000 nop
-80037990: 24430001 addiu v1,v0,1
-80037994: 3c028007 lui v0,0x8007
-80037998: ac431d14 sw v1,7444(v0)
- break;
-8003799c: 1000000f b 800379dc <strtok+0x234>
-800379a0: 00000000 nop
- }
-
- strtok_pos++;
-800379a4: 3c028007 lui v0,0x8007
-800379a8: 8c421d14 lw v0,7444(v0)
-800379ac: 00000000 nop
-800379b0: 24430001 addiu v1,v0,1
-800379b4: 3c028007 lui v0,0x8007
-800379b8: ac431d14 sw v1,7444(v0)
-
- strtok_pos++;
- }
- }
-
- while(strtok_pos < strtok_len)
-800379bc: 3c028007 lui v0,0x8007
-800379c0: 8c431d14 lw v1,7444(v0)
-800379c4: 3c028007 lui v0,0x8007
-800379c8: 8c421d10 lw v0,7440(v0)
-800379cc: 00000000 nop
-800379d0: 0062102a slt v0,v1,v0
-800379d4: 1440ffe1 bnez v0,8003795c <strtok+0x1b4>
-800379d8: 00000000 nop
- }
-
- strtok_pos++;
- }
-
- while(strtok_pos < strtok_len)
-800379dc: 10000019 b 80037a44 <strtok+0x29c>
-800379e0: 00000000 nop
- {
-
- if(strtok_string[strtok_pos])
-800379e4: 3c028007 lui v0,0x8007
-800379e8: 8c421d0c lw v0,7436(v0)
-800379ec: 3c038007 lui v1,0x8007
-800379f0: 8c631d14 lw v1,7444(v1)
-800379f4: 00000000 nop
-800379f8: 00431021 addu v0,v0,v1
-800379fc: 80420000 lb v0,0(v0)
-80037a00: 00000000 nop
-80037a04: 10400009 beqz v0,80037a2c <strtok+0x284>
-80037a08: 00000000 nop
- return &strtok_string[strtok_pos];
-80037a0c: 3c028007 lui v0,0x8007
-80037a10: 8c421d0c lw v0,7436(v0)
-80037a14: 3c038007 lui v1,0x8007
-80037a18: 8c631d14 lw v1,7444(v1)
-80037a1c: 00000000 nop
-80037a20: 00431021 addu v0,v0,v1
-80037a24: 10000010 b 80037a68 <strtok+0x2c0>
-80037a28: 00000000 nop
-
- strtok_pos++;
-80037a2c: 3c028007 lui v0,0x8007
-80037a30: 8c421d14 lw v0,7444(v0)
-80037a34: 00000000 nop
-80037a38: 24430001 addiu v1,v0,1
-80037a3c: 3c028007 lui v0,0x8007
-80037a40: ac431d14 sw v1,7444(v0)
- }
-
- strtok_pos++;
- }
-
- while(strtok_pos < strtok_len)
-80037a44: 3c028007 lui v0,0x8007
-80037a48: 8c431d14 lw v1,7444(v0)
-80037a4c: 3c028007 lui v0,0x8007
-80037a50: 8c421d10 lw v0,7440(v0)
-80037a54: 00000000 nop
-80037a58: 0062102a slt v0,v1,v0
-80037a5c: 1440ffe1 bnez v0,800379e4 <strtok+0x23c>
-80037a60: 00000000 nop
- return &strtok_string[strtok_pos];
-
- strtok_pos++;
- }
-
- return NULL;
-80037a64: 00001021 move v0,zero
-}
-80037a68: 03c0e821 move sp,s8
-80037a6c: 8fbf001c lw ra,28(sp)
-80037a70: 8fbe0018 lw s8,24(sp)
-80037a74: 27bd0020 addiu sp,sp,32
-80037a78: 03e00008 jr ra
-80037a7c: 00000000 nop
-
-80037a80 <strspn>:
-
-int strspn(const char *s, const char *charset)
-{
-80037a80: 27bdffe8 addiu sp,sp,-24
-80037a84: afbe0014 sw s8,20(sp)
-80037a88: 03a0f021 move s8,sp
-80037a8c: afc40018 sw a0,24(s8)
-80037a90: afc5001c sw a1,28(s8)
- int x, y;
- int appears;
-
- for(x = 0; s[x] != 0; x++)
-80037a94: afc00000 sw zero,0(s8)
-80037a98: 1000002a b 80037b44 <strspn+0xc4>
-80037a9c: 00000000 nop
- {
- appears = 0;
-80037aa0: afc00008 sw zero,8(s8)
-
- for(y = 0; charset[y] != 0; y++)
-80037aa4: afc00004 sw zero,4(s8)
-80037aa8: 10000016 b 80037b04 <strspn+0x84>
-80037aac: 00000000 nop
- {
- if(s[x] == charset[y])
-80037ab0: 8fc20000 lw v0,0(s8)
-80037ab4: 8fc30018 lw v1,24(s8)
-80037ab8: 00000000 nop
-80037abc: 00621021 addu v0,v1,v0
-80037ac0: 80430000 lb v1,0(v0)
-80037ac4: 8fc20004 lw v0,4(s8)
-80037ac8: 8fc4001c lw a0,28(s8)
-80037acc: 00000000 nop
-80037ad0: 00821021 addu v0,a0,v0
-80037ad4: 80420000 lb v0,0(v0)
-80037ad8: 00000000 nop
-80037adc: 14620005 bne v1,v0,80037af4 <strspn+0x74>
-80037ae0: 00000000 nop
- {
- appears = 1;
-80037ae4: 24020001 li v0,1
-80037ae8: afc20008 sw v0,8(s8)
- break;
-80037aec: 1000000d b 80037b24 <strspn+0xa4>
-80037af0: 00000000 nop
-
- for(x = 0; s[x] != 0; x++)
- {
- appears = 0;
-
- for(y = 0; charset[y] != 0; y++)
-80037af4: 8fc20004 lw v0,4(s8)
-80037af8: 00000000 nop
-80037afc: 24420001 addiu v0,v0,1
-80037b00: afc20004 sw v0,4(s8)
-80037b04: 8fc20004 lw v0,4(s8)
-80037b08: 8fc3001c lw v1,28(s8)
-80037b0c: 00000000 nop
-80037b10: 00621021 addu v0,v1,v0
-80037b14: 80420000 lb v0,0(v0)
-80037b18: 00000000 nop
-80037b1c: 1440ffe4 bnez v0,80037ab0 <strspn+0x30>
-80037b20: 00000000 nop
- appears = 1;
- break;
- }
- }
-
- if(!appears)break;
-80037b24: 8fc20008 lw v0,8(s8)
-80037b28: 00000000 nop
-80037b2c: 1040000f beqz v0,80037b6c <strspn+0xec>
-80037b30: 00000000 nop
-int strspn(const char *s, const char *charset)
-{
- int x, y;
- int appears;
-
- for(x = 0; s[x] != 0; x++)
-80037b34: 8fc20000 lw v0,0(s8)
-80037b38: 00000000 nop
-80037b3c: 24420001 addiu v0,v0,1
-80037b40: afc20000 sw v0,0(s8)
-80037b44: 8fc20000 lw v0,0(s8)
-80037b48: 8fc30018 lw v1,24(s8)
-80037b4c: 00000000 nop
-80037b50: 00621021 addu v0,v1,v0
-80037b54: 80420000 lb v0,0(v0)
-80037b58: 00000000 nop
-80037b5c: 1440ffd0 bnez v0,80037aa0 <strspn+0x20>
-80037b60: 00000000 nop
-80037b64: 10000002 b 80037b70 <strspn+0xf0>
-80037b68: 00000000 nop
- appears = 1;
- break;
- }
- }
-
- if(!appears)break;
-80037b6c: 00000000 nop
- }
-
- return x;
-80037b70: 8fc20000 lw v0,0(s8)
-}
-80037b74: 03c0e821 move sp,s8
-80037b78: 8fbe0014 lw s8,20(sp)
-80037b7c: 27bd0018 addiu sp,sp,24
-80037b80: 03e00008 jr ra
-80037b84: 00000000 nop
-
-80037b88 <strcspn>:
-
-int strcspn(const char *s, const char *charset)
-{
-80037b88: 27bdffe8 addiu sp,sp,-24
-80037b8c: afbe0014 sw s8,20(sp)
-80037b90: 03a0f021 move s8,sp
-80037b94: afc40018 sw a0,24(s8)
-80037b98: afc5001c sw a1,28(s8)
- int x, y;
- int appears;
-
- for(x = 0; s[x] != 0; x++)
-80037b9c: afc00000 sw zero,0(s8)
-80037ba0: 1000002a b 80037c4c <strcspn+0xc4>
-80037ba4: 00000000 nop
- {
- appears = 0;
-80037ba8: afc00008 sw zero,8(s8)
-
- for(y = 0; charset[y] != 0; y++)
-80037bac: afc00004 sw zero,4(s8)
-80037bb0: 10000016 b 80037c0c <strcspn+0x84>
-80037bb4: 00000000 nop
- {
- if(s[x] == charset[y])
-80037bb8: 8fc20000 lw v0,0(s8)
-80037bbc: 8fc30018 lw v1,24(s8)
-80037bc0: 00000000 nop
-80037bc4: 00621021 addu v0,v1,v0
-80037bc8: 80430000 lb v1,0(v0)
-80037bcc: 8fc20004 lw v0,4(s8)
-80037bd0: 8fc4001c lw a0,28(s8)
-80037bd4: 00000000 nop
-80037bd8: 00821021 addu v0,a0,v0
-80037bdc: 80420000 lb v0,0(v0)
-80037be0: 00000000 nop
-80037be4: 14620005 bne v1,v0,80037bfc <strcspn+0x74>
-80037be8: 00000000 nop
- {
- appears = 1;
-80037bec: 24020001 li v0,1
-80037bf0: afc20008 sw v0,8(s8)
- break;
-80037bf4: 1000000d b 80037c2c <strcspn+0xa4>
-80037bf8: 00000000 nop
-
- for(x = 0; s[x] != 0; x++)
- {
- appears = 0;
-
- for(y = 0; charset[y] != 0; y++)
-80037bfc: 8fc20004 lw v0,4(s8)
-80037c00: 00000000 nop
-80037c04: 24420001 addiu v0,v0,1
-80037c08: afc20004 sw v0,4(s8)
-80037c0c: 8fc20004 lw v0,4(s8)
-80037c10: 8fc3001c lw v1,28(s8)
-80037c14: 00000000 nop
-80037c18: 00621021 addu v0,v1,v0
-80037c1c: 80420000 lb v0,0(v0)
-80037c20: 00000000 nop
-80037c24: 1440ffe4 bnez v0,80037bb8 <strcspn+0x30>
-80037c28: 00000000 nop
- appears = 1;
- break;
- }
- }
-
- if(appears)break;
-80037c2c: 8fc20008 lw v0,8(s8)
-80037c30: 00000000 nop
-80037c34: 1440000f bnez v0,80037c74 <strcspn+0xec>
-80037c38: 00000000 nop
-int strcspn(const char *s, const char *charset)
-{
- int x, y;
- int appears;
-
- for(x = 0; s[x] != 0; x++)
-80037c3c: 8fc20000 lw v0,0(s8)
-80037c40: 00000000 nop
-80037c44: 24420001 addiu v0,v0,1
-80037c48: afc20000 sw v0,0(s8)
-80037c4c: 8fc20000 lw v0,0(s8)
-80037c50: 8fc30018 lw v1,24(s8)
-80037c54: 00000000 nop
-80037c58: 00621021 addu v0,v1,v0
-80037c5c: 80420000 lb v0,0(v0)
-80037c60: 00000000 nop
-80037c64: 1440ffd0 bnez v0,80037ba8 <strcspn+0x20>
-80037c68: 00000000 nop
-80037c6c: 10000002 b 80037c78 <strcspn+0xf0>
-80037c70: 00000000 nop
- appears = 1;
- break;
- }
- }
-
- if(appears)break;
-80037c74: 00000000 nop
- }
-
- return x;
-80037c78: 8fc20000 lw v0,0(s8)
-}
-80037c7c: 03c0e821 move sp,s8
-80037c80: 8fbe0014 lw s8,20(sp)
-80037c84: 27bd0018 addiu sp,sp,24
-80037c88: 03e00008 jr ra
-80037c8c: 00000000 nop
-
-80037c90 <strlwr>:
-
-char *strlwr(char *string)
-{
-80037c90: 27bdffe0 addiu sp,sp,-32
-80037c94: afbf001c sw ra,28(sp)
-80037c98: afbe0018 sw s8,24(sp)
-80037c9c: 03a0f021 move s8,sp
-80037ca0: afc40020 sw a0,32(s8)
- char *old = string;
-80037ca4: 8fc20020 lw v0,32(s8)
-80037ca8: 00000000 nop
-80037cac: afc20010 sw v0,16(s8)
-
- while(*string)
-80037cb0: 10000011 b 80037cf8 <strlwr+0x68>
-80037cb4: 00000000 nop
- {
- *string = tolower(*string);
-80037cb8: 8fc20020 lw v0,32(s8)
-80037cbc: 00000000 nop
-80037cc0: 80420000 lb v0,0(v0)
-80037cc4: 00000000 nop
-80037cc8: 00402021 move a0,v0
-80037ccc: 0c00a5eb jal 800297ac <tolower>
-80037cd0: 00000000 nop
-80037cd4: 00021e00 sll v1,v0,0x18
-80037cd8: 00031e03 sra v1,v1,0x18
-80037cdc: 8fc20020 lw v0,32(s8)
-80037ce0: 00000000 nop
-80037ce4: a0430000 sb v1,0(v0)
- string++;
-80037ce8: 8fc20020 lw v0,32(s8)
-80037cec: 00000000 nop
-80037cf0: 24420001 addiu v0,v0,1
-80037cf4: afc20020 sw v0,32(s8)
-
-char *strlwr(char *string)
-{
- char *old = string;
-
- while(*string)
-80037cf8: 8fc20020 lw v0,32(s8)
-80037cfc: 00000000 nop
-80037d00: 80420000 lb v0,0(v0)
-80037d04: 00000000 nop
-80037d08: 1440ffeb bnez v0,80037cb8 <strlwr+0x28>
-80037d0c: 00000000 nop
- {
- *string = tolower(*string);
- string++;
- }
-
- return old;
-80037d10: 8fc20010 lw v0,16(s8)
-}
-80037d14: 03c0e821 move sp,s8
-80037d18: 8fbf001c lw ra,28(sp)
-80037d1c: 8fbe0018 lw s8,24(sp)
-80037d20: 27bd0020 addiu sp,sp,32
-80037d24: 03e00008 jr ra
-80037d28: 00000000 nop
-
-80037d2c <strupr>:
-
-char *strupr(char *string)
-{
-80037d2c: 27bdffe0 addiu sp,sp,-32
-80037d30: afbf001c sw ra,28(sp)
-80037d34: afbe0018 sw s8,24(sp)
-80037d38: 03a0f021 move s8,sp
-80037d3c: afc40020 sw a0,32(s8)
- char *old = string;
-80037d40: 8fc20020 lw v0,32(s8)
-80037d44: 00000000 nop
-80037d48: afc20010 sw v0,16(s8)
-
- while(*string)
-80037d4c: 10000011 b 80037d94 <strupr+0x68>
-80037d50: 00000000 nop
- {
- *string = toupper(*string);
-80037d54: 8fc20020 lw v0,32(s8)
-80037d58: 00000000 nop
-80037d5c: 80420000 lb v0,0(v0)
-80037d60: 00000000 nop
-80037d64: 00402021 move a0,v0
-80037d68: 0c00a5d2 jal 80029748 <toupper>
-80037d6c: 00000000 nop
-80037d70: 00021e00 sll v1,v0,0x18
-80037d74: 00031e03 sra v1,v1,0x18
-80037d78: 8fc20020 lw v0,32(s8)
-80037d7c: 00000000 nop
-80037d80: a0430000 sb v1,0(v0)
- string++;
-80037d84: 8fc20020 lw v0,32(s8)
-80037d88: 00000000 nop
-80037d8c: 24420001 addiu v0,v0,1
-80037d90: afc20020 sw v0,32(s8)
-
-char *strupr(char *string)
-{
- char *old = string;
-
- while(*string)
-80037d94: 8fc20020 lw v0,32(s8)
-80037d98: 00000000 nop
-80037d9c: 80420000 lb v0,0(v0)
-80037da0: 00000000 nop
-80037da4: 1440ffeb bnez v0,80037d54 <strupr+0x28>
-80037da8: 00000000 nop
- {
- *string = toupper(*string);
- string++;
- }
-
- return old;
-80037dac: 8fc20010 lw v0,16(s8)
-}
-80037db0: 03c0e821 move sp,s8
-80037db4: 8fbf001c lw ra,28(sp)
-80037db8: 8fbe0018 lw s8,24(sp)
-80037dbc: 27bd0020 addiu sp,sp,32
-80037dc0: 03e00008 jr ra
-80037dc4: 00000000 nop
-
-80037dc8 <atoi>:
-
-int atoi(const char *string)
-{
-80037dc8: 27bdffe8 addiu sp,sp,-24
-80037dcc: afbf0014 sw ra,20(sp)
-80037dd0: afbe0010 sw s8,16(sp)
-80037dd4: 03a0f021 move s8,sp
-80037dd8: afc40018 sw a0,24(s8)
- return (int)strtol(string, NULL, 10);
-80037ddc: 2406000a li a2,10
-80037de0: 00002821 move a1,zero
-80037de4: 8fc40018 lw a0,24(s8)
-80037de8: 0c00db4c jal 80036d30 <strtol>
-80037dec: 00000000 nop
-}
-80037df0: 03c0e821 move sp,s8
-80037df4: 8fbf0014 lw ra,20(sp)
-80037df8: 8fbe0010 lw s8,16(sp)
-80037dfc: 27bd0018 addiu sp,sp,24
-80037e00: 03e00008 jr ra
-80037e04: 00000000 nop
-
-80037e08 <atol>:
-
-long atol(const char *string)
-{
-80037e08: 27bdffe8 addiu sp,sp,-24
-80037e0c: afbf0014 sw ra,20(sp)
-80037e10: afbe0010 sw s8,16(sp)
-80037e14: 03a0f021 move s8,sp
-80037e18: afc40018 sw a0,24(s8)
- return strtol(string, NULL, 10);
-80037e1c: 2406000a li a2,10
-80037e20: 00002821 move a1,zero
-80037e24: 8fc40018 lw a0,24(s8)
-80037e28: 0c00db4c jal 80036d30 <strtol>
-80037e2c: 00000000 nop
-}
-80037e30: 03c0e821 move sp,s8
-80037e34: 8fbf0014 lw ra,20(sp)
-80037e38: 8fbe0010 lw s8,16(sp)
-80037e3c: 27bd0018 addiu sp,sp,24
-80037e40: 03e00008 jr ra
-80037e44: 00000000 nop
-
-80037e48 <strnlen>:
-
-int strnlen(const char *s, size_t maxlen)
-{
-80037e48: 27bdfff0 addiu sp,sp,-16
-80037e4c: afbe000c sw s8,12(sp)
-80037e50: 03a0f021 move s8,sp
-80037e54: afc40010 sw a0,16(s8)
-80037e58: afc50014 sw a1,20(s8)
- int l=0;
-80037e5c: afc00000 sw zero,0(s8)
-
- while(*(s++) && l<maxlen)
-80037e60: 10000005 b 80037e78 <strnlen+0x30>
-80037e64: 00000000 nop
- l++;
-80037e68: 8fc20000 lw v0,0(s8)
-80037e6c: 00000000 nop
-80037e70: 24420001 addiu v0,v0,1
-80037e74: afc20000 sw v0,0(s8)
-
-int strnlen(const char *s, size_t maxlen)
-{
- int l=0;
-
- while(*(s++) && l<maxlen)
-80037e78: 8fc20010 lw v0,16(s8)
-80037e7c: 00000000 nop
-80037e80: 24430001 addiu v1,v0,1
-80037e84: afc30010 sw v1,16(s8)
-80037e88: 80420000 lb v0,0(v0)
-80037e8c: 00000000 nop
-80037e90: 10400007 beqz v0,80037eb0 <strnlen+0x68>
-80037e94: 00000000 nop
-80037e98: 8fc30000 lw v1,0(s8)
-80037e9c: 8fc20014 lw v0,20(s8)
-80037ea0: 00000000 nop
-80037ea4: 0062102b sltu v0,v1,v0
-80037ea8: 1440ffef bnez v0,80037e68 <strnlen+0x20>
-80037eac: 00000000 nop
- l++;
-
- return l;
-80037eb0: 8fc20000 lw v0,0(s8)
-}
-80037eb4: 03c0e821 move sp,s8
-80037eb8: 8fbe000c lw s8,12(sp)
-80037ebc: 27bd0010 addiu sp,sp,16
-80037ec0: 03e00008 jr ra
-80037ec4: 00000000 nop
-
-80037ec8 <memrchr>:
-
-void *memrchr(void *b, int c, size_t len)
-{
-80037ec8: 27bdfff0 addiu sp,sp,-16
-80037ecc: afbe000c sw s8,12(sp)
-80037ed0: 03a0f021 move s8,sp
-80037ed4: afc40010 sw a0,16(s8)
-80037ed8: afc50014 sw a1,20(s8)
-80037edc: afc60018 sw a2,24(s8)
- int i = len - 1;
-80037ee0: 8fc20018 lw v0,24(s8)
-80037ee4: 00000000 nop
-80037ee8: 2442ffff addiu v0,v0,-1
-80037eec: afc20000 sw v0,0(s8)
- unsigned char *p = b;
-80037ef0: 8fc20010 lw v0,16(s8)
-80037ef4: 00000000 nop
-80037ef8: afc20004 sw v0,4(s8)
-
- for(i = len - 1; p[i] != (unsigned char)c && i >= 0;i--);
-80037efc: 8fc20018 lw v0,24(s8)
-80037f00: 00000000 nop
-80037f04: 2442ffff addiu v0,v0,-1
-80037f08: afc20000 sw v0,0(s8)
-80037f0c: 10000005 b 80037f24 <memrchr+0x5c>
-80037f10: 00000000 nop
-80037f14: 8fc20000 lw v0,0(s8)
-80037f18: 00000000 nop
-80037f1c: 2442ffff addiu v0,v0,-1
-80037f20: afc20000 sw v0,0(s8)
-80037f24: 8fc20000 lw v0,0(s8)
-80037f28: 8fc30004 lw v1,4(s8)
-80037f2c: 00000000 nop
-80037f30: 00621021 addu v0,v1,v0
-80037f34: 90420000 lbu v0,0(v0)
-80037f38: 00000000 nop
-80037f3c: 00401821 move v1,v0
-80037f40: 8fc20014 lw v0,20(s8)
-80037f44: 00000000 nop
-80037f48: 304200ff andi v0,v0,0xff
-80037f4c: 10620005 beq v1,v0,80037f64 <memrchr+0x9c>
-80037f50: 00000000 nop
-80037f54: 8fc20000 lw v0,0(s8)
-80037f58: 00000000 nop
-80037f5c: 0441ffed bgez v0,80037f14 <memrchr+0x4c>
-80037f60: 00000000 nop
-
- return (i>=0)?&p[i]:NULL;
-80037f64: 8fc20000 lw v0,0(s8)
-80037f68: 00000000 nop
-80037f6c: 04400007 bltz v0,80037f8c <memrchr+0xc4>
-80037f70: 00000000 nop
-80037f74: 8fc20000 lw v0,0(s8)
-80037f78: 8fc30004 lw v1,4(s8)
-80037f7c: 00000000 nop
-80037f80: 00621021 addu v0,v1,v0
-80037f84: 10000002 b 80037f90 <memrchr+0xc8>
-80037f88: 00000000 nop
-80037f8c: 00001021 move v0,zero
-}
-80037f90: 03c0e821 move sp,s8
-80037f94: 8fbe000c lw s8,12(sp)
-80037f98: 27bd0010 addiu sp,sp,16
-80037f9c: 03e00008 jr ra
-80037fa0: 00000000 nop
-
-80037fa4 <stpcpy>:
-
-char *stpcpy(char *dst, const char *src)
-{
-80037fa4: 27bdfff8 addiu sp,sp,-8
-80037fa8: afbe0004 sw s8,4(sp)
-80037fac: 03a0f021 move s8,sp
-80037fb0: afc40008 sw a0,8(s8)
-80037fb4: afc5000c sw a1,12(s8)
- do
- {
- *(dst++) = *src;
-80037fb8: 8fc20008 lw v0,8(s8)
-80037fbc: 00000000 nop
-80037fc0: 24430001 addiu v1,v0,1
-80037fc4: afc30008 sw v1,8(s8)
-80037fc8: 8fc3000c lw v1,12(s8)
-80037fcc: 00000000 nop
-80037fd0: 80630000 lb v1,0(v1)
-80037fd4: 00000000 nop
-80037fd8: a0430000 sb v1,0(v0)
- }while(*(src++));
-80037fdc: 8fc2000c lw v0,12(s8)
-80037fe0: 00000000 nop
-80037fe4: 24430001 addiu v1,v0,1
-80037fe8: afc3000c sw v1,12(s8)
-80037fec: 80420000 lb v0,0(v0)
-80037ff0: 00000000 nop
-80037ff4: 1440fff0 bnez v0,80037fb8 <stpcpy+0x14>
-80037ff8: 00000000 nop
-
- return dst-1;
-80037ffc: 8fc20008 lw v0,8(s8)
-80038000: 00000000 nop
-80038004: 2442ffff addiu v0,v0,-1
-}
-80038008: 03c0e821 move sp,s8
-8003800c: 8fbe0004 lw s8,4(sp)
-80038010: 27bd0008 addiu sp,sp,8
-80038014: 03e00008 jr ra
-80038018: 00000000 nop
-
-8003801c <stpncpy>:
-
-char *stpncpy(char *dst, const char *src, int len)
-{
-8003801c: 27bdfff0 addiu sp,sp,-16
-80038020: afbe000c sw s8,12(sp)
-80038024: 03a0f021 move s8,sp
-80038028: afc40010 sw a0,16(s8)
-8003802c: afc50014 sw a1,20(s8)
-80038030: afc60018 sw a2,24(s8)
- int c = 0;
-80038034: afc00000 sw zero,0(s8)
-
- do
- {
- if(c < len)
-80038038: 8fc30000 lw v1,0(s8)
-8003803c: 8fc20018 lw v0,24(s8)
-80038040: 00000000 nop
-80038044: 0062102a slt v0,v1,v0
-80038048: 1040000a beqz v0,80038074 <stpncpy+0x58>
-8003804c: 00000000 nop
- *(dst++) = *src;
-80038050: 8fc20010 lw v0,16(s8)
-80038054: 00000000 nop
-80038058: 24430001 addiu v1,v0,1
-8003805c: afc30010 sw v1,16(s8)
-80038060: 8fc30014 lw v1,20(s8)
-80038064: 00000000 nop
-80038068: 80630000 lb v1,0(v1)
-8003806c: 00000000 nop
-80038070: a0430000 sb v1,0(v0)
-
- c++;
-80038074: 8fc20000 lw v0,0(s8)
-80038078: 00000000 nop
-8003807c: 24420001 addiu v0,v0,1
-80038080: afc20000 sw v0,0(s8)
- }while(*(src++) && c < len);
-80038084: 8fc20014 lw v0,20(s8)
-80038088: 00000000 nop
-8003808c: 24430001 addiu v1,v0,1
-80038090: afc30014 sw v1,20(s8)
-80038094: 80420000 lb v0,0(v0)
-80038098: 00000000 nop
-8003809c: 10400007 beqz v0,800380bc <stpncpy+0xa0>
-800380a0: 00000000 nop
-800380a4: 8fc30000 lw v1,0(s8)
-800380a8: 8fc20018 lw v0,24(s8)
-800380ac: 00000000 nop
-800380b0: 0062102a slt v0,v1,v0
-800380b4: 1440ffe0 bnez v0,80038038 <stpncpy+0x1c>
-800380b8: 00000000 nop
-
- return dst-1;
-800380bc: 8fc20010 lw v0,16(s8)
-800380c0: 00000000 nop
-800380c4: 2442ffff addiu v0,v0,-1
-}
-800380c8: 03c0e821 move sp,s8
-800380cc: 8fbe000c lw s8,12(sp)
-800380d0: 27bd0010 addiu sp,sp,16
-800380d4: 03e00008 jr ra
-800380d8: 00000000 nop
-
-800380dc <strcasestr>:
-
-char *strcasestr(const char *big, const char *little)
-{
-800380dc: 27bdffd0 addiu sp,sp,-48
-800380e0: afbf002c sw ra,44(sp)
-800380e4: afbe0028 sw s8,40(sp)
-800380e8: afb00024 sw s0,36(sp)
-800380ec: 03a0f021 move s8,sp
-800380f0: afc40030 sw a0,48(s8)
-800380f4: afc50034 sw a1,52(s8)
- while(*big)
-800380f8: 10000038 b 800381dc <strcasestr+0x100>
-800380fc: 00000000 nop
- {
- const char *pbig = big;
-80038100: 8fc20030 lw v0,48(s8)
-80038104: 00000000 nop
-80038108: afc20010 sw v0,16(s8)
- const char *plittle = little;
-8003810c: 8fc20034 lw v0,52(s8)
-80038110: 00000000 nop
-80038114: afc20014 sw v0,20(s8)
- int ok = 1;
-80038118: 24020001 li v0,1
-8003811c: afc20018 sw v0,24(s8)
-
- while(*pbig)
-80038120: 1000001d b 80038198 <strcasestr+0xbc>
-80038124: 00000000 nop
- {
- if(tolower(*pbig) != tolower(*plittle))
-80038128: 8fc20010 lw v0,16(s8)
-8003812c: 00000000 nop
-80038130: 80420000 lb v0,0(v0)
-80038134: 00000000 nop
-80038138: 00402021 move a0,v0
-8003813c: 0c00a5eb jal 800297ac <tolower>
-80038140: 00000000 nop
-80038144: 00408021 move s0,v0
-80038148: 8fc20014 lw v0,20(s8)
-8003814c: 00000000 nop
-80038150: 80420000 lb v0,0(v0)
-80038154: 00000000 nop
-80038158: 00402021 move a0,v0
-8003815c: 0c00a5eb jal 800297ac <tolower>
-80038160: 00000000 nop
-80038164: 12020004 beq s0,v0,80038178 <strcasestr+0x9c>
-80038168: 00000000 nop
- {
- ok = 0;
-8003816c: afc00018 sw zero,24(s8)
- break;
-80038170: 1000000f b 800381b0 <strcasestr+0xd4>
-80038174: 00000000 nop
- }
-
- pbig++;
-80038178: 8fc20010 lw v0,16(s8)
-8003817c: 00000000 nop
-80038180: 24420001 addiu v0,v0,1
-80038184: afc20010 sw v0,16(s8)
- plittle++;
-80038188: 8fc20014 lw v0,20(s8)
-8003818c: 00000000 nop
-80038190: 24420001 addiu v0,v0,1
-80038194: afc20014 sw v0,20(s8)
- {
- const char *pbig = big;
- const char *plittle = little;
- int ok = 1;
-
- while(*pbig)
-80038198: 8fc20010 lw v0,16(s8)
-8003819c: 00000000 nop
-800381a0: 80420000 lb v0,0(v0)
-800381a4: 00000000 nop
-800381a8: 1440ffdf bnez v0,80038128 <strcasestr+0x4c>
-800381ac: 00000000 nop
-
- pbig++;
- plittle++;
- }
-
- if(ok)
-800381b0: 8fc20018 lw v0,24(s8)
-800381b4: 00000000 nop
-800381b8: 10400004 beqz v0,800381cc <strcasestr+0xf0>
-800381bc: 00000000 nop
- return (char*)big;
-800381c0: 8fc20030 lw v0,48(s8)
-800381c4: 1000000c b 800381f8 <strcasestr+0x11c>
-800381c8: 00000000 nop
-
- big++;
-800381cc: 8fc20030 lw v0,48(s8)
-800381d0: 00000000 nop
-800381d4: 24420001 addiu v0,v0,1
-800381d8: afc20030 sw v0,48(s8)
- return dst-1;
-}
-
-char *strcasestr(const char *big, const char *little)
-{
- while(*big)
-800381dc: 8fc20030 lw v0,48(s8)
-800381e0: 00000000 nop
-800381e4: 80420000 lb v0,0(v0)
-800381e8: 00000000 nop
-800381ec: 1440ffc4 bnez v0,80038100 <strcasestr+0x24>
-800381f0: 00000000 nop
- return (char*)big;
-
- big++;
- }
-
- return NULL;
-800381f4: 00001021 move v0,zero
-}
-800381f8: 03c0e821 move sp,s8
-800381fc: 8fbf002c lw ra,44(sp)
-80038200: 8fbe0028 lw s8,40(sp)
-80038204: 8fb00024 lw s0,36(sp)
-80038208: 27bd0030 addiu sp,sp,48
-8003820c: 03e00008 jr ra
-80038210: 00000000 nop
-
-80038214 <strlcpy>:
-
-int strlcpy(char *dst, const char *src, size_t size)
-{
-80038214: 27bdffe0 addiu sp,sp,-32
-80038218: afbf001c sw ra,28(sp)
-8003821c: afbe0018 sw s8,24(sp)
-80038220: 03a0f021 move s8,sp
-80038224: afc40020 sw a0,32(s8)
-80038228: afc50024 sw a1,36(s8)
-8003822c: afc60028 sw a2,40(s8)
- char *src_end = memchr((void*)src, '\0', size);
-80038230: 8fc60028 lw a2,40(s8)
-80038234: 00002821 move a1,zero
-80038238: 8fc40024 lw a0,36(s8)
-8003823c: 0c00d83b jal 800360ec <memchr>
-80038240: 00000000 nop
-80038244: afc20010 sw v0,16(s8)
-
- if(src_end == NULL)
-80038248: 8fc20010 lw v0,16(s8)
-8003824c: 00000000 nop
-80038250: 14400004 bnez v0,80038264 <strlcpy+0x50>
-80038254: 00000000 nop
- return 0;
-80038258: 00001021 move v0,zero
-8003825c: 1000000e b 80038298 <strlcpy+0x84>
-80038260: 00000000 nop
-
- memcpy(dst, src, src_end - src);
-80038264: 8fc30010 lw v1,16(s8)
-80038268: 8fc20024 lw v0,36(s8)
-8003826c: 00000000 nop
-80038270: 00621023 subu v0,v1,v0
-80038274: 00403021 move a2,v0
-80038278: 8fc50024 lw a1,36(s8)
-8003827c: 8fc40020 lw a0,32(s8)
-80038280: 0c00d75e jal 80035d78 <memcpy>
-80038284: 00000000 nop
-
- return (src_end - src);
-80038288: 8fc30010 lw v1,16(s8)
-8003828c: 8fc20024 lw v0,36(s8)
-80038290: 00000000 nop
-80038294: 00621023 subu v0,v1,v0
-}
-80038298: 03c0e821 move sp,s8
-8003829c: 8fbf001c lw ra,28(sp)
-800382a0: 8fbe0018 lw s8,24(sp)
-800382a4: 27bd0020 addiu sp,sp,32
-800382a8: 03e00008 jr ra
-800382ac: 00000000 nop
-
-800382b0 <strlcat>:
-
-int strlcat(char *dst, const char *src, size_t size)
-{
-800382b0: 27bdffd8 addiu sp,sp,-40
-800382b4: afbf0024 sw ra,36(sp)
-800382b8: afbe0020 sw s8,32(sp)
-800382bc: 03a0f021 move s8,sp
-800382c0: afc40028 sw a0,40(s8)
-800382c4: afc5002c sw a1,44(s8)
-800382c8: afc60030 sw a2,48(s8)
- int dstl = strlen(dst);
-800382cc: 8fc40028 lw a0,40(s8)
-800382d0: 0c00d8af jal 800362bc <strlen>
-800382d4: 00000000 nop
-800382d8: afc20014 sw v0,20(s8)
- char *q = dst + dstl;
-800382dc: 8fc20014 lw v0,20(s8)
-800382e0: 8fc30028 lw v1,40(s8)
-800382e4: 00000000 nop
-800382e8: 00621021 addu v0,v1,v0
-800382ec: afc20018 sw v0,24(s8)
- int real_size = size;
-800382f0: 8fc20030 lw v0,48(s8)
-800382f4: 00000000 nop
-800382f8: afc20010 sw v0,16(s8)
-
- if(memchr((void*)src, '\0', size))
-800382fc: 8fc60030 lw a2,48(s8)
-80038300: 00002821 move a1,zero
-80038304: 8fc4002c lw a0,44(s8)
-80038308: 0c00d83b jal 800360ec <memchr>
-8003830c: 00000000 nop
-80038310: 10400005 beqz v0,80038328 <strlcat+0x78>
-80038314: 00000000 nop
- real_size = strlen(src);
-80038318: 8fc4002c lw a0,44(s8)
-8003831c: 0c00d8af jal 800362bc <strlen>
-80038320: 00000000 nop
-80038324: afc20010 sw v0,16(s8)
-
- memcpy(q, src, real_size-dstl-1);
-80038328: 8fc30010 lw v1,16(s8)
-8003832c: 8fc20014 lw v0,20(s8)
-80038330: 00000000 nop
-80038334: 00621023 subu v0,v1,v0
-80038338: 2442ffff addiu v0,v0,-1
-8003833c: 00403021 move a2,v0
-80038340: 8fc5002c lw a1,44(s8)
-80038344: 8fc40018 lw a0,24(s8)
-80038348: 0c00d75e jal 80035d78 <memcpy>
-8003834c: 00000000 nop
- if(real_size != size) q[real_size-dstl-1] = '\0';
-80038350: 8fc30010 lw v1,16(s8)
-80038354: 8fc20030 lw v0,48(s8)
-80038358: 00000000 nop
-8003835c: 1062000a beq v1,v0,80038388 <strlcat+0xd8>
-80038360: 00000000 nop
-80038364: 8fc30010 lw v1,16(s8)
-80038368: 8fc20014 lw v0,20(s8)
-8003836c: 00000000 nop
-80038370: 00621023 subu v0,v1,v0
-80038374: 2442ffff addiu v0,v0,-1
-80038378: 8fc30018 lw v1,24(s8)
-8003837c: 00000000 nop
-80038380: 00621021 addu v0,v1,v0
-80038384: a0400000 sb zero,0(v0)
-
- return size-dstl;
-80038388: 8fc20014 lw v0,20(s8)
-8003838c: 8fc30030 lw v1,48(s8)
-80038390: 00000000 nop
-80038394: 00621023 subu v0,v1,v0
-}
-80038398: 03c0e821 move sp,s8
-8003839c: 8fbf0024 lw ra,36(sp)
-800383a0: 8fbe0020 lw s8,32(sp)
-800383a4: 27bd0028 addiu sp,sp,40
-800383a8: 03e00008 jr ra
-800383ac: 00000000 nop
-
-800383b0 <memmem>:
-
-void *memmem(const void *big, size_t big_len, const void *little,
- size_t little_len)
-{
-800383b0: 27bdffe0 addiu sp,sp,-32
-800383b4: afbe001c sw s8,28(sp)
-800383b8: 03a0f021 move s8,sp
-800383bc: afc40020 sw a0,32(s8)
-800383c0: afc50024 sw a1,36(s8)
-800383c4: afc60028 sw a2,40(s8)
-800383c8: afc7002c sw a3,44(s8)
- int i, j, l;
- unsigned char *bigp = (unsigned char*)big;
-800383cc: 8fc20020 lw v0,32(s8)
-800383d0: 00000000 nop
-800383d4: afc20008 sw v0,8(s8)
- unsigned char *littlep = (unsigned char*)little;
-800383d8: 8fc20028 lw v0,40(s8)
-800383dc: 00000000 nop
-800383e0: afc2000c sw v0,12(s8)
-
- for(i = 0, l = (int)(big_len - little_len); i <= l; i++, bigp++)
-800383e4: afc00000 sw zero,0(s8)
-800383e8: 8fc30024 lw v1,36(s8)
-800383ec: 8fc2002c lw v0,44(s8)
-800383f0: 00000000 nop
-800383f4: 00621023 subu v0,v1,v0
-800383f8: afc20010 sw v0,16(s8)
-800383fc: 1000002e b 800384b8 <memmem+0x108>
-80038400: 00000000 nop
- {
- for(j = 0; j < little_len; j++)
-80038404: afc00004 sw zero,4(s8)
-80038408: 10000012 b 80038454 <memmem+0xa4>
-8003840c: 00000000 nop
- {
- if(littlep[j] != bigp[j])
-80038410: 8fc20004 lw v0,4(s8)
-80038414: 8fc3000c lw v1,12(s8)
-80038418: 00000000 nop
-8003841c: 00621021 addu v0,v1,v0
-80038420: 90430000 lbu v1,0(v0)
-80038424: 8fc20004 lw v0,4(s8)
-80038428: 8fc40008 lw a0,8(s8)
-8003842c: 00000000 nop
-80038430: 00821021 addu v0,a0,v0
-80038434: 90420000 lbu v0,0(v0)
-80038438: 00000000 nop
-8003843c: 1462000d bne v1,v0,80038474 <memmem+0xc4>
-80038440: 00000000 nop
- unsigned char *bigp = (unsigned char*)big;
- unsigned char *littlep = (unsigned char*)little;
-
- for(i = 0, l = (int)(big_len - little_len); i <= l; i++, bigp++)
- {
- for(j = 0; j < little_len; j++)
-80038444: 8fc20004 lw v0,4(s8)
-80038448: 00000000 nop
-8003844c: 24420001 addiu v0,v0,1
-80038450: afc20004 sw v0,4(s8)
-80038454: 8fc30004 lw v1,4(s8)
-80038458: 8fc2002c lw v0,44(s8)
-8003845c: 00000000 nop
-80038460: 0062102b sltu v0,v1,v0
-80038464: 1440ffea bnez v0,80038410 <memmem+0x60>
-80038468: 00000000 nop
-8003846c: 10000002 b 80038478 <memmem+0xc8>
-80038470: 00000000 nop
- {
- if(littlep[j] != bigp[j])
- break;
-80038474: 00000000 nop
- }
-
- if(j == little_len)
-80038478: 8fc30004 lw v1,4(s8)
-8003847c: 8fc2002c lw v0,44(s8)
-80038480: 00000000 nop
-80038484: 14620004 bne v1,v0,80038498 <memmem+0xe8>
-80038488: 00000000 nop
- return bigp;
-8003848c: 8fc20008 lw v0,8(s8)
-80038490: 10000010 b 800384d4 <memmem+0x124>
-80038494: 00000000 nop
-{
- int i, j, l;
- unsigned char *bigp = (unsigned char*)big;
- unsigned char *littlep = (unsigned char*)little;
-
- for(i = 0, l = (int)(big_len - little_len); i <= l; i++, bigp++)
-80038498: 8fc20000 lw v0,0(s8)
-8003849c: 00000000 nop
-800384a0: 24420001 addiu v0,v0,1
-800384a4: afc20000 sw v0,0(s8)
-800384a8: 8fc20008 lw v0,8(s8)
-800384ac: 00000000 nop
-800384b0: 24420001 addiu v0,v0,1
-800384b4: afc20008 sw v0,8(s8)
-800384b8: 8fc30000 lw v1,0(s8)
-800384bc: 8fc20010 lw v0,16(s8)
-800384c0: 00000000 nop
-800384c4: 0043102a slt v0,v0,v1
-800384c8: 1040ffce beqz v0,80038404 <memmem+0x54>
-800384cc: 00000000 nop
-
- if(j == little_len)
- return bigp;
- }
-
- return NULL;
-800384d0: 00001021 move v0,zero
-}
-800384d4: 03c0e821 move sp,s8
-800384d8: 8fbe001c lw s8,28(sp)
-800384dc: 27bd0020 addiu sp,sp,32
-800384e0: 03e00008 jr ra
-800384e4: 00000000 nop
-
-800384e8 <get_arg_in_size>:
- SPRINTF_SIZE_LONG,
- SPRINTF_SIZE_LONG_LONG,
-};
-
-static unsigned int get_arg_in_size(int size, unsigned long long *arg, unsigned int check_sign)
-{
-800384e8: 27bdffd8 addiu sp,sp,-40
-800384ec: afbe0024 sw s8,36(sp)
-800384f0: afb50020 sw s5,32(sp)
-800384f4: afb4001c sw s4,28(sp)
-800384f8: afb30018 sw s3,24(sp)
-800384fc: afb20014 sw s2,20(sp)
-80038500: afb10010 sw s1,16(sp)
-80038504: afb0000c sw s0,12(sp)
-80038508: 03a0f021 move s8,sp
-8003850c: afc40028 sw a0,40(s8)
-80038510: afc5002c sw a1,44(s8)
-80038514: afc60030 sw a2,48(s8)
- int s = 0;
-80038518: afc00000 sw zero,0(s8)
-
- switch(size)
-8003851c: 8fc40028 lw a0,40(s8)
-80038520: 00000000 nop
-80038524: 2c840005 sltiu a0,a0,5
-80038528: 108000dc beqz a0,8003889c <get_arg_in_size+0x3b4>
-8003852c: 00000000 nop
-80038530: 8fc40028 lw a0,40(s8)
-80038534: 00000000 nop
-80038538: 00042880 sll a1,a0,0x2
-8003853c: 3c048004 lui a0,0x8004
-80038540: 2484feb4 addiu a0,a0,-332
-80038544: 00a42021 addu a0,a1,a0
-80038548: 8c840000 lw a0,0(a0)
-8003854c: 00000000 nop
-80038550: 00800008 jr a0
-80038554: 00000000 nop
- {
- case SPRINTF_SIZE_CHAR:
- *arg &= 0xff;
-80038558: 8fc2002c lw v0,44(s8)
-8003855c: 00000000 nop
-80038560: 8c430004 lw v1,4(v0)
-80038564: 8c420000 lw v0,0(v0)
-80038568: 00000000 nop
-8003856c: 305400ff andi s4,v0,0xff
-80038570: 30750000 andi s5,v1,0x0
-80038574: 8fc2002c lw v0,44(s8)
-80038578: 00000000 nop
-8003857c: ac540000 sw s4,0(v0)
-80038580: ac550004 sw s5,4(v0)
-
- if(check_sign)
-80038584: 8fc20030 lw v0,48(s8)
-80038588: 00000000 nop
-8003858c: 104000b9 beqz v0,80038874 <get_arg_in_size+0x38c>
-80038590: 00000000 nop
- {
- if(*arg & (1<<7))
-80038594: 8fc2002c lw v0,44(s8)
-80038598: 00000000 nop
-8003859c: 8c430004 lw v1,4(v0)
-800385a0: 8c420000 lw v0,0(v0)
-800385a4: 00000000 nop
-800385a8: 304a0080 andi t2,v0,0x80
-800385ac: 306b0000 andi t3,v1,0x0
-800385b0: 01401021 move v0,t2
-800385b4: 004b1025 or v0,v0,t3
-800385b8: 104000ae beqz v0,80038874 <get_arg_in_size+0x38c>
-800385bc: 00000000 nop
- {
- *arg |= 0xffffff00;
-800385c0: 8fc2002c lw v0,44(s8)
-800385c4: 00000000 nop
-800385c8: 8c430004 lw v1,4(v0)
-800385cc: 8c420000 lw v0,0(v0)
-800385d0: 2404ff00 li a0,-256
-800385d4: 00449025 or s2,v0,a0
-800385d8: 34730000 ori s3,v1,0x0
-800385dc: 8fc2002c lw v0,44(s8)
-800385e0: 00000000 nop
-800385e4: ac520000 sw s2,0(v0)
-800385e8: ac530004 sw s3,4(v0)
- *arg = ~(*arg - 1);
-800385ec: 8fc2002c lw v0,44(s8)
-800385f0: 00000000 nop
-800385f4: 8c460000 lw a2,0(v0)
-800385f8: 8c470004 lw a3,4(v0)
-800385fc: 00002021 move a0,zero
-80038600: 00002821 move a1,zero
-80038604: 00861023 subu v0,a0,a2
-80038608: 0082402b sltu t0,a0,v0
-8003860c: 00a71823 subu v1,a1,a3
-80038610: 00682023 subu a0,v1,t0
-80038614: 00801821 move v1,a0
-80038618: 8fc4002c lw a0,44(s8)
-8003861c: 00000000 nop
-80038620: ac820000 sw v0,0(a0)
-80038624: ac830004 sw v1,4(a0)
- s = 1;
-80038628: 24020001 li v0,1
-8003862c: afc20000 sw v0,0(s8)
- }
- }
- break;
-80038630: 10000090 b 80038874 <get_arg_in_size+0x38c>
-80038634: 00000000 nop
- case SPRINTF_SIZE_SHORT:
- *arg &= 0xffff;
-80038638: 8fc2002c lw v0,44(s8)
-8003863c: 00000000 nop
-80038640: 8c430004 lw v1,4(v0)
-80038644: 8c420000 lw v0,0(v0)
-80038648: 00000000 nop
-8003864c: 3050ffff andi s0,v0,0xffff
-80038650: 30710000 andi s1,v1,0x0
-80038654: 8fc2002c lw v0,44(s8)
-80038658: 00000000 nop
-8003865c: ac500000 sw s0,0(v0)
-80038660: ac510004 sw s1,4(v0)
-
- if(check_sign)
-80038664: 8fc20030 lw v0,48(s8)
-80038668: 00000000 nop
-8003866c: 10400084 beqz v0,80038880 <get_arg_in_size+0x398>
-80038670: 00000000 nop
- {
- if(*arg & (1<<15))
-80038674: 8fc2002c lw v0,44(s8)
-80038678: 00000000 nop
-8003867c: 8c430004 lw v1,4(v0)
-80038680: 8c420000 lw v0,0(v0)
-80038684: 00000000 nop
-80038688: 30488000 andi t0,v0,0x8000
-8003868c: 30690000 andi t1,v1,0x0
-80038690: 01001021 move v0,t0
-80038694: 00491025 or v0,v0,t1
-80038698: 10400079 beqz v0,80038880 <get_arg_in_size+0x398>
-8003869c: 00000000 nop
- {
- *arg |= 0xffff0000;
-800386a0: 8fc2002c lw v0,44(s8)
-800386a4: 00000000 nop
-800386a8: 8c430004 lw v1,4(v0)
-800386ac: 8c420000 lw v0,0(v0)
-800386b0: 3c04ffff lui a0,0xffff
-800386b4: 0044c025 or t8,v0,a0
-800386b8: 34790000 ori t9,v1,0x0
-800386bc: 8fc2002c lw v0,44(s8)
-800386c0: 00000000 nop
-800386c4: ac580000 sw t8,0(v0)
-800386c8: ac590004 sw t9,4(v0)
- *arg = ~(*arg - 1);
-800386cc: 8fc2002c lw v0,44(s8)
-800386d0: 00000000 nop
-800386d4: 8c460000 lw a2,0(v0)
-800386d8: 8c470004 lw a3,4(v0)
-800386dc: 00002021 move a0,zero
-800386e0: 00002821 move a1,zero
-800386e4: 00861023 subu v0,a0,a2
-800386e8: 0082402b sltu t0,a0,v0
-800386ec: 00a71823 subu v1,a1,a3
-800386f0: 00682023 subu a0,v1,t0
-800386f4: 00801821 move v1,a0
-800386f8: 8fc4002c lw a0,44(s8)
-800386fc: 00000000 nop
-80038700: ac820000 sw v0,0(a0)
-80038704: ac830004 sw v1,4(a0)
- s = 1;
-80038708: 24020001 li v0,1
-8003870c: afc20000 sw v0,0(s8)
- }
- }
- break;
-80038710: 1000005b b 80038880 <get_arg_in_size+0x398>
-80038714: 00000000 nop
-
-// sizeof(long) == sizeof(int) on 32bit, so this will suffice for the psx
-
- case SPRINTF_SIZE_INT:
- case SPRINTF_SIZE_LONG:
- *arg &= 0xffffffff;
-80038718: 8fc4002c lw a0,44(s8)
-8003871c: 00000000 nop
-80038720: 8c850004 lw a1,4(a0)
-80038724: 8c840000 lw a0,0(a0)
-80038728: 2406ffff li a2,-1
-8003872c: 00867024 and t6,a0,a2
-80038730: 30af0000 andi t7,a1,0x0
-80038734: 8fc4002c lw a0,44(s8)
-80038738: 00000000 nop
-8003873c: ac8e0000 sw t6,0(a0)
-80038740: ac8f0004 sw t7,4(a0)
-
- if(check_sign)
-80038744: 8fc40030 lw a0,48(s8)
-80038748: 00000000 nop
-8003874c: 1080004f beqz a0,8003888c <get_arg_in_size+0x3a4>
-80038750: 00000000 nop
- {
- if(*arg & (1<<31))
-80038754: 8fc4002c lw a0,44(s8)
-80038758: 00000000 nop
-8003875c: 8c850004 lw a1,4(a0)
-80038760: 8c840000 lw a0,0(a0)
-80038764: 3c068000 lui a2,0x8000
-80038768: 00861024 and v0,a0,a2
-8003876c: 2406ffff li a2,-1
-80038770: 00a61824 and v1,a1,a2
-80038774: 00402021 move a0,v0
-80038778: 00832025 or a0,a0,v1
-8003877c: 10800043 beqz a0,8003888c <get_arg_in_size+0x3a4>
-80038780: 00000000 nop
- {
- *arg |= (long long)0xffffffff00000000;
-80038784: 8fc2002c lw v0,44(s8)
-80038788: 00000000 nop
-8003878c: 8c430004 lw v1,4(v0)
-80038790: 8c420000 lw v0,0(v0)
-80038794: 00000000 nop
-80038798: 344c0000 ori t4,v0,0x0
-8003879c: 2404ffff li a0,-1
-800387a0: 00646825 or t5,v1,a0
-800387a4: 8fc2002c lw v0,44(s8)
-800387a8: 00000000 nop
-800387ac: ac4c0000 sw t4,0(v0)
-800387b0: ac4d0004 sw t5,4(v0)
- *arg = ~(*arg - 1);
-800387b4: 8fc2002c lw v0,44(s8)
-800387b8: 00000000 nop
-800387bc: 8c460000 lw a2,0(v0)
-800387c0: 8c470004 lw a3,4(v0)
-800387c4: 00002021 move a0,zero
-800387c8: 00002821 move a1,zero
-800387cc: 00861023 subu v0,a0,a2
-800387d0: 0082402b sltu t0,a0,v0
-800387d4: 00a71823 subu v1,a1,a3
-800387d8: 00682023 subu a0,v1,t0
-800387dc: 00801821 move v1,a0
-800387e0: 8fc4002c lw a0,44(s8)
-800387e4: 00000000 nop
-800387e8: ac820000 sw v0,0(a0)
-800387ec: ac830004 sw v1,4(a0)
- s = 1;
-800387f0: 24020001 li v0,1
-800387f4: afc20000 sw v0,0(s8)
- }
- }
- break;
-800387f8: 10000024 b 8003888c <get_arg_in_size+0x3a4>
-800387fc: 00000000 nop
-
- case SPRINTF_SIZE_LONG_LONG:
- if(check_sign)
-80038800: 8fc20030 lw v0,48(s8)
-80038804: 00000000 nop
-80038808: 10400023 beqz v0,80038898 <get_arg_in_size+0x3b0>
-8003880c: 00000000 nop
- {
- if(*arg & ((long long)1<<63))
-80038810: 8fc2002c lw v0,44(s8)
-80038814: 00000000 nop
-80038818: 8c430004 lw v1,4(v0)
-8003881c: 8c420000 lw v0,0(v0)
-80038820: 0461001d bgez v1,80038898 <get_arg_in_size+0x3b0>
-80038824: 00000000 nop
- {
- *arg = ~(*arg - 1);
-80038828: 8fc2002c lw v0,44(s8)
-8003882c: 00000000 nop
-80038830: 8c460000 lw a2,0(v0)
-80038834: 8c470004 lw a3,4(v0)
-80038838: 00002021 move a0,zero
-8003883c: 00002821 move a1,zero
-80038840: 00861023 subu v0,a0,a2
-80038844: 0082402b sltu t0,a0,v0
-80038848: 00a71823 subu v1,a1,a3
-8003884c: 00682023 subu a0,v1,t0
-80038850: 00801821 move v1,a0
-80038854: 8fc4002c lw a0,44(s8)
-80038858: 00000000 nop
-8003885c: ac820000 sw v0,0(a0)
-80038860: ac830004 sw v1,4(a0)
- s = 1;
-80038864: 24020001 li v0,1
-80038868: afc20000 sw v0,0(s8)
- }
- }
- break;
-8003886c: 1000000a b 80038898 <get_arg_in_size+0x3b0>
-80038870: 00000000 nop
- *arg |= 0xffffff00;
- *arg = ~(*arg - 1);
- s = 1;
- }
- }
- break;
-80038874: 00000000 nop
-80038878: 10000008 b 8003889c <get_arg_in_size+0x3b4>
-8003887c: 00000000 nop
- *arg |= 0xffff0000;
- *arg = ~(*arg - 1);
- s = 1;
- }
- }
- break;
-80038880: 00000000 nop
-80038884: 10000005 b 8003889c <get_arg_in_size+0x3b4>
-80038888: 00000000 nop
- *arg |= (long long)0xffffffff00000000;
- *arg = ~(*arg - 1);
- s = 1;
- }
- }
- break;
-8003888c: 00000000 nop
-80038890: 10000002 b 8003889c <get_arg_in_size+0x3b4>
-80038894: 00000000 nop
- {
- *arg = ~(*arg - 1);
- s = 1;
- }
- }
- break;
-80038898: 00000000 nop
- }
-
- return s;
-8003889c: 8fc20000 lw v0,0(s8)
-}
-800388a0: 03c0e821 move sp,s8
-800388a4: 8fbe0024 lw s8,36(sp)
-800388a8: 8fb50020 lw s5,32(sp)
-800388ac: 8fb4001c lw s4,28(sp)
-800388b0: 8fb30018 lw s3,24(sp)
-800388b4: 8fb20014 lw s2,20(sp)
-800388b8: 8fb10010 lw s1,16(sp)
-800388bc: 8fb0000c lw s0,12(sp)
-800388c0: 27bd0028 addiu sp,sp,40
-800388c4: 03e00008 jr ra
-800388c8: 00000000 nop
-
-800388cc <libc_ulltoa>:
-
-static int libc_ulltoa(unsigned long long i, char *dst, int n, int nopad)
-{
-800388cc: 27bdffb0 addiu sp,sp,-80
-800388d0: afbf004c sw ra,76(sp)
-800388d4: afbe0048 sw s8,72(sp)
-800388d8: afb30044 sw s3,68(sp)
-800388dc: afb20040 sw s2,64(sp)
-800388e0: afb1003c sw s1,60(sp)
-800388e4: afb00038 sw s0,56(sp)
-800388e8: 03a0f021 move s8,sp
-800388ec: afc40050 sw a0,80(s8)
-800388f0: afc50054 sw a1,84(s8)
-800388f4: afc60058 sw a2,88(s8)
-800388f8: afc7005c sw a3,92(s8)
- int x, y;
- unsigned long long a, b;
- int empty_digit = 1;
-800388fc: 24020001 li v0,1
-80038900: afc20020 sw v0,32(s8)
- int sp=0;
-80038904: afc00024 sw zero,36(s8)
- int n2=0;
-80038908: afc00028 sw zero,40(s8)
-
- if(n<=0)
-8003890c: 8fc2005c lw v0,92(s8)
-80038910: 00000000 nop
-80038914: 1c400004 bgtz v0,80038928 <libc_ulltoa+0x5c>
-80038918: 00000000 nop
- return 0;
-8003891c: 00001021 move v0,zero
-80038920: 10000088 b 80038b44 <libc_ulltoa+0x278>
-80038924: 00000000 nop
-
- for(x=18;x>=0;x--)
-80038928: 24020012 li v0,18
-8003892c: afc20010 sw v0,16(s8)
-80038930: 1000007a b 80038b1c <libc_ulltoa+0x250>
-80038934: 00000000 nop
- {
- a = 1;
-80038938: 24020001 li v0,1
-8003893c: 00001821 move v1,zero
-80038940: afc20018 sw v0,24(s8)
-80038944: afc3001c sw v1,28(s8)
- for(y = 0; y<x; y++)
-80038948: afc00014 sw zero,20(s8)
-8003894c: 10000018 b 800389b0 <libc_ulltoa+0xe4>
-80038950: 00000000 nop
- a *= 10;
-80038954: 8fc20018 lw v0,24(s8)
-80038958: 8fc3001c lw v1,28(s8)
-8003895c: 000227c2 srl a0,v0,0x1f
-80038960: 00039840 sll s3,v1,0x1
-80038964: 00939825 or s3,a0,s3
-80038968: 00029040 sll s2,v0,0x1
-8003896c: 02401021 move v0,s2
-80038970: 02601821 move v1,s3
-80038974: 00022782 srl a0,v0,0x1e
-80038978: 00038880 sll s1,v1,0x2
-8003897c: 00918825 or s1,a0,s1
-80038980: 00028080 sll s0,v0,0x2
-80038984: 00502021 addu a0,v0,s0
-80038988: 0082302b sltu a2,a0,v0
-8003898c: 00712821 addu a1,v1,s1
-80038990: 00c51021 addu v0,a2,a1
-80038994: 00402821 move a1,v0
-80038998: afc40018 sw a0,24(s8)
-8003899c: afc5001c sw a1,28(s8)
- return 0;
-
- for(x=18;x>=0;x--)
- {
- a = 1;
- for(y = 0; y<x; y++)
-800389a0: 8fc20014 lw v0,20(s8)
-800389a4: 00000000 nop
-800389a8: 24420001 addiu v0,v0,1
-800389ac: afc20014 sw v0,20(s8)
-800389b0: 8fc30014 lw v1,20(s8)
-800389b4: 8fc20010 lw v0,16(s8)
-800389b8: 00000000 nop
-800389bc: 0062102a slt v0,v1,v0
-800389c0: 1440ffe4 bnez v0,80038954 <libc_ulltoa+0x88>
-800389c4: 00000000 nop
- a *= 10;
-
- b = (i/a);
-800389c8: 8fc60018 lw a2,24(s8)
-800389cc: 8fc7001c lw a3,28(s8)
-800389d0: 8fc40050 lw a0,80(s8)
-800389d4: 8fc50054 lw a1,84(s8)
-800389d8: 0c00f0ae jal 8003c2b8 <__udivdi3>
-800389dc: 00000000 nop
-800389e0: afc20030 sw v0,48(s8)
-800389e4: afc30034 sw v1,52(s8)
-
- if(b>=1)
-800389e8: 8fc20030 lw v0,48(s8)
-800389ec: 8fc30034 lw v1,52(s8)
-800389f0: 00000000 nop
-800389f4: 00431025 or v0,v0,v1
-800389f8: 10400002 beqz v0,80038a04 <libc_ulltoa+0x138>
-800389fc: 00000000 nop
- empty_digit = 0;
-80038a00: afc00020 sw zero,32(s8)
-
- if(empty_digit == 0 || x == 0 || nopad == 1)
-80038a04: 8fc20020 lw v0,32(s8)
-80038a08: 00000000 nop
-80038a0c: 10400009 beqz v0,80038a34 <libc_ulltoa+0x168>
-80038a10: 00000000 nop
-80038a14: 8fc20010 lw v0,16(s8)
-80038a18: 00000000 nop
-80038a1c: 10400005 beqz v0,80038a34 <libc_ulltoa+0x168>
-80038a20: 00000000 nop
-80038a24: 8fc30060 lw v1,96(s8)
-80038a28: 24020001 li v0,1
-80038a2c: 14620037 bne v1,v0,80038b0c <libc_ulltoa+0x240>
-80038a30: 00000000 nop
- {
- i -= b*a;
-80038a34: 8fc30034 lw v1,52(s8)
-80038a38: 8fc20018 lw v0,24(s8)
-80038a3c: 00000000 nop
-80038a40: 00620018 mult v1,v0
-80038a44: 00001012 mflo v0
-80038a48: 8fc4001c lw a0,28(s8)
-80038a4c: 8fc30030 lw v1,48(s8)
-80038a50: 00000000 nop
-80038a54: 00830018 mult a0,v1
-80038a58: 00001812 mflo v1
-80038a5c: 00431021 addu v0,v0,v1
-80038a60: 8fc40030 lw a0,48(s8)
-80038a64: 8fc30018 lw v1,24(s8)
-80038a68: 00000000 nop
-80038a6c: 00830019 multu a0,v1
-80038a70: 00002012 mflo a0
-80038a74: 00002810 mfhi a1
-80038a78: 00451021 addu v0,v0,a1
-80038a7c: 00402821 move a1,v0
-80038a80: 8fc60050 lw a2,80(s8)
-80038a84: 8fc70054 lw a3,84(s8)
-80038a88: 00c41023 subu v0,a2,a0
-80038a8c: 00c2402b sltu t0,a2,v0
-80038a90: 00e51823 subu v1,a3,a1
-80038a94: 00682023 subu a0,v1,t0
-80038a98: 00801821 move v1,a0
-80038a9c: afc20050 sw v0,80(s8)
-80038aa0: afc30054 sw v1,84(s8)
-
- //put_in_string(string, ssz, b + '0', string_pos++);
- if(n2!=(n-1))
-80038aa4: 8fc2005c lw v0,92(s8)
-80038aa8: 00000000 nop
-80038aac: 2443ffff addiu v1,v0,-1
-80038ab0: 8fc20028 lw v0,40(s8)
-80038ab4: 00000000 nop
-80038ab8: 10620014 beq v1,v0,80038b0c <libc_ulltoa+0x240>
-80038abc: 00000000 nop
- {
- //printf("n2=%d\n",n2);
- dst[sp++] = b + '0';
-80038ac0: 8fc20024 lw v0,36(s8)
-80038ac4: 00000000 nop
-80038ac8: 24430001 addiu v1,v0,1
-80038acc: afc30024 sw v1,36(s8)
-80038ad0: 00401821 move v1,v0
-80038ad4: 8fc20058 lw v0,88(s8)
-80038ad8: 00000000 nop
-80038adc: 00431021 addu v0,v0,v1
-80038ae0: 93c30030 lbu v1,48(s8)
-80038ae4: 00000000 nop
-80038ae8: 24630030 addiu v1,v1,48
-80038aec: 306300ff andi v1,v1,0xff
-80038af0: 00031e00 sll v1,v1,0x18
-80038af4: 00031e03 sra v1,v1,0x18
-80038af8: a0430000 sb v1,0(v0)
- n2++;
-80038afc: 8fc20028 lw v0,40(s8)
-80038b00: 00000000 nop
-80038b04: 24420001 addiu v0,v0,1
-80038b08: afc20028 sw v0,40(s8)
- int n2=0;
-
- if(n<=0)
- return 0;
-
- for(x=18;x>=0;x--)
-80038b0c: 8fc20010 lw v0,16(s8)
-80038b10: 00000000 nop
-80038b14: 2442ffff addiu v0,v0,-1
-80038b18: afc20010 sw v0,16(s8)
-80038b1c: 8fc20010 lw v0,16(s8)
-80038b20: 00000000 nop
-80038b24: 0441ff84 bgez v0,80038938 <libc_ulltoa+0x6c>
-80038b28: 00000000 nop
- n2++;
- }
- }
- }
-
- dst[sp] = 0;
-80038b2c: 8fc20024 lw v0,36(s8)
-80038b30: 8fc30058 lw v1,88(s8)
-80038b34: 00000000 nop
-80038b38: 00621021 addu v0,v1,v0
-80038b3c: a0400000 sb zero,0(v0)
-
- return n2;
-80038b40: 8fc20028 lw v0,40(s8)
-}
-80038b44: 03c0e821 move sp,s8
-80038b48: 8fbf004c lw ra,76(sp)
-80038b4c: 8fbe0048 lw s8,72(sp)
-80038b50: 8fb30044 lw s3,68(sp)
-80038b54: 8fb20040 lw s2,64(sp)
-80038b58: 8fb1003c lw s1,60(sp)
-80038b5c: 8fb00038 lw s0,56(sp)
-80038b60: 27bd0050 addiu sp,sp,80
-80038b64: 03e00008 jr ra
-80038b68: 00000000 nop
-
-80038b6c <libc_double_to_string>:
- }
- }
-}*/
-
-static void libc_double_to_string(double fl, char *dst, int n, int prec)
-{
-80038b6c: 27bdff80 addiu sp,sp,-128
-80038b70: afbf007c sw ra,124(sp)
-80038b74: afbe0078 sw s8,120(sp)
-80038b78: afb70074 sw s7,116(sp)
-80038b7c: afb60070 sw s6,112(sp)
-80038b80: afb5006c sw s5,108(sp)
-80038b84: afb40068 sw s4,104(sp)
-80038b88: afb30064 sw s3,100(sp)
-80038b8c: afb20060 sw s2,96(sp)
-80038b90: afb1005c sw s1,92(sp)
-80038b94: afb00058 sw s0,88(sp)
-80038b98: 03a0f021 move s8,sp
-80038b9c: afc40080 sw a0,128(s8)
-80038ba0: afc50084 sw a1,132(s8)
-80038ba4: afc60088 sw a2,136(s8)
-80038ba8: afc7008c sw a3,140(s8)
- unsigned long long *p = (unsigned long long *)&fl;
-80038bac: 27c20080 addiu v0,s8,128
-80038bb0: afc20034 sw v0,52(s8)
- unsigned long long i = 0;
-80038bb4: 00001021 move v0,zero
-80038bb8: 00001821 move v1,zero
-80038bbc: afc20018 sw v0,24(s8)
-80038bc0: afc3001c sw v1,28(s8)
- unsigned long long f = 0;
-80038bc4: 00001021 move v0,zero
-80038bc8: 00001821 move v1,zero
-80038bcc: afc20020 sw v0,32(s8)
-80038bd0: afc30024 sw v1,36(s8)
- unsigned long long m, s;
- long long e;
- int x;
- unsigned long long z;
-
- s = *p >> 63;
-80038bd4: 8fc20034 lw v0,52(s8)
-80038bd8: 00000000 nop
-80038bdc: 8c430004 lw v1,4(v0)
-80038be0: 8c420000 lw v0,0(v0)
-80038be4: 000317c2 srl v0,v1,0x1f
-80038be8: afc20038 sw v0,56(s8)
-80038bec: afc0003c sw zero,60(s8)
-
- e = (*p >> 52) & 0x7ff;
-80038bf0: 8fc20034 lw v0,52(s8)
-80038bf4: 00000000 nop
-80038bf8: 8c430004 lw v1,4(v0)
-80038bfc: 8c420000 lw v0,0(v0)
-80038c00: 00034502 srl t0,v1,0x14
-80038c04: 00004821 move t1,zero
-80038c08: 01001021 move v0,t0
-80038c0c: 01201821 move v1,t1
-80038c10: 304407ff andi a0,v0,0x7ff
-80038c14: afc40028 sw a0,40(s8)
-80038c18: 30620000 andi v0,v1,0x0
-80038c1c: afc2002c sw v0,44(s8)
- //printf("%d\n", e);
-
- m = *p & 0xfffffffffffff;
-80038c20: 8fc20034 lw v0,52(s8)
-80038c24: 00000000 nop
-80038c28: 8c430004 lw v1,4(v0)
-80038c2c: 8c420000 lw v0,0(v0)
-80038c30: 2404ffff li a0,-1
-80038c34: 00442024 and a0,v0,a0
-80038c38: afc40040 sw a0,64(s8)
-80038c3c: 3c04000f lui a0,0xf
-80038c40: 3484ffff ori a0,a0,0xffff
-80038c44: 00641024 and v0,v1,a0
-80038c48: afc20044 sw v0,68(s8)
-
- for(x=0;x<52;x++)
-80038c4c: afc00030 sw zero,48(s8)
-80038c50: 10000032 b 80038d1c <libc_double_to_string+0x1b0>
-80038c54: 00000000 nop
- if(m&((unsigned long long)1<<(52-x))) putchar('1'); else putchar('0');
-80038c58: 24030034 li v1,52
-80038c5c: 8fc20030 lw v0,48(s8)
-80038c60: 00000000 nop
-80038c64: 00621023 subu v0,v1,v0
-80038c68: 30430020 andi v1,v0,0x20
-80038c6c: 10600007 beqz v1,80038c8c <libc_double_to_string+0x120>
-80038c70: 00000000 nop
-80038c74: 8fc30044 lw v1,68(s8)
-80038c78: 00000000 nop
-80038c7c: 00439006 srlv s2,v1,v0
-80038c80: 00009821 move s3,zero
-80038c84: 1000000e b 80038cc0 <libc_double_to_string+0x154>
-80038c88: 00000000 nop
-80038c8c: 8fc30044 lw v1,68(s8)
-80038c90: 00000000 nop
-80038c94: 00032040 sll a0,v1,0x1
-80038c98: 2403ffff li v1,-1
-80038c9c: 00431826 xor v1,v0,v1
-80038ca0: 00641804 sllv v1,a0,v1
-80038ca4: 8fc40040 lw a0,64(s8)
-80038ca8: 00000000 nop
-80038cac: 00449006 srlv s2,a0,v0
-80038cb0: 00729025 or s2,v1,s2
-80038cb4: 8fc30044 lw v1,68(s8)
-80038cb8: 00000000 nop
-80038cbc: 00439806 srlv s3,v1,v0
-80038cc0: 32420001 andi v0,s2,0x1
-80038cc4: afc20050 sw v0,80(s8)
-80038cc8: 32620000 andi v0,s3,0x0
-80038ccc: afc20054 sw v0,84(s8)
-80038cd0: 8fc40050 lw a0,80(s8)
-80038cd4: 8fc50054 lw a1,84(s8)
-80038cd8: 00801021 move v0,a0
-80038cdc: 00a01821 move v1,a1
-80038ce0: 00431025 or v0,v0,v1
-80038ce4: 10400006 beqz v0,80038d00 <libc_double_to_string+0x194>
-80038ce8: 00000000 nop
-80038cec: 24040031 li a0,49
-80038cf0: 0c00aa06 jal 8002a818 <putchar>
-80038cf4: 00000000 nop
-80038cf8: 10000004 b 80038d0c <libc_double_to_string+0x1a0>
-80038cfc: 00000000 nop
-80038d00: 24040030 li a0,48
-80038d04: 0c00aa06 jal 8002a818 <putchar>
-80038d08: 00000000 nop
- e = (*p >> 52) & 0x7ff;
- //printf("%d\n", e);
-
- m = *p & 0xfffffffffffff;
-
- for(x=0;x<52;x++)
-80038d0c: 8fc20030 lw v0,48(s8)
-80038d10: 00000000 nop
-80038d14: 24420001 addiu v0,v0,1
-80038d18: afc20030 sw v0,48(s8)
-80038d1c: 8fc20030 lw v0,48(s8)
-80038d20: 00000000 nop
-80038d24: 28420034 slti v0,v0,52
-80038d28: 1440ffcb bnez v0,80038c58 <libc_double_to_string+0xec>
-80038d2c: 00000000 nop
- if(m&((unsigned long long)1<<(52-x))) putchar('1'); else putchar('0');
-
- if(e == 255 && m == 0) // Infinity
-80038d30: 8fc30028 lw v1,40(s8)
-80038d34: 240200ff li v0,255
-80038d38: 14620025 bne v1,v0,80038dd0 <libc_double_to_string+0x264>
-80038d3c: 00000000 nop
-80038d40: 8fc2002c lw v0,44(s8)
-80038d44: 00000000 nop
-80038d48: 14400021 bnez v0,80038dd0 <libc_double_to_string+0x264>
-80038d4c: 00000000 nop
-80038d50: 8fc20040 lw v0,64(s8)
-80038d54: 8fc30044 lw v1,68(s8)
-80038d58: 00000000 nop
-80038d5c: 00431025 or v0,v0,v1
-80038d60: 1440001b bnez v0,80038dd0 <libc_double_to_string+0x264>
-80038d64: 00000000 nop
- {
- if(s) strncpy(dst, "-inf", n);
-80038d68: 8fc20038 lw v0,56(s8)
-80038d6c: 8fc3003c lw v1,60(s8)
-80038d70: 00000000 nop
-80038d74: 00431025 or v0,v0,v1
-80038d78: 1040000b beqz v0,80038da8 <libc_double_to_string+0x23c>
-80038d7c: 00000000 nop
-80038d80: 8fc2008c lw v0,140(s8)
-80038d84: 00000000 nop
-80038d88: 00403021 move a2,v0
-80038d8c: 3c028004 lui v0,0x8004
-80038d90: 2445fec8 addiu a1,v0,-312
-80038d94: 8fc40088 lw a0,136(s8)
-80038d98: 0c00d860 jal 80036180 <strncpy>
-80038d9c: 00000000 nop
-80038da0: 1000010b b 800391d0 <libc_double_to_string+0x664>
-80038da4: 00000000 nop
- else strncpy(dst, "inf", n);
-80038da8: 8fc2008c lw v0,140(s8)
-80038dac: 00000000 nop
-80038db0: 00403021 move a2,v0
-80038db4: 3c028004 lui v0,0x8004
-80038db8: 2445fed0 addiu a1,v0,-304
-80038dbc: 8fc40088 lw a0,136(s8)
-80038dc0: 0c00d860 jal 80036180 <strncpy>
-80038dc4: 00000000 nop
- for(x=0;x<52;x++)
- if(m&((unsigned long long)1<<(52-x))) putchar('1'); else putchar('0');
-
- if(e == 255 && m == 0) // Infinity
- {
- if(s) strncpy(dst, "-inf", n);
-80038dc8: 10000101 b 800391d0 <libc_double_to_string+0x664>
-80038dcc: 00000000 nop
- else strncpy(dst, "inf", n);
- }else if(e == 255 && m != 0) // NaN
-80038dd0: 8fc30028 lw v1,40(s8)
-80038dd4: 240200ff li v0,255
-80038dd8: 14620015 bne v1,v0,80038e30 <libc_double_to_string+0x2c4>
-80038ddc: 00000000 nop
-80038de0: 8fc2002c lw v0,44(s8)
-80038de4: 00000000 nop
-80038de8: 14400011 bnez v0,80038e30 <libc_double_to_string+0x2c4>
-80038dec: 00000000 nop
-80038df0: 8fc20040 lw v0,64(s8)
-80038df4: 8fc30044 lw v1,68(s8)
-80038df8: 00000000 nop
-80038dfc: 00431025 or v0,v0,v1
-80038e00: 1040000b beqz v0,80038e30 <libc_double_to_string+0x2c4>
-80038e04: 00000000 nop
- {
- strncpy(dst, "nan", n);
-80038e08: 8fc2008c lw v0,140(s8)
-80038e0c: 00000000 nop
-80038e10: 00403021 move a2,v0
-80038e14: 3c028004 lui v0,0x8004
-80038e18: 2445fed4 addiu a1,v0,-300
-80038e1c: 8fc40088 lw a0,136(s8)
-80038e20: 0c00d860 jal 80036180 <strncpy>
-80038e24: 00000000 nop
-80038e28: 100000e9 b 800391d0 <libc_double_to_string+0x664>
-80038e2c: 00000000 nop
- }
- else
- {
- e -= 1023;
-80038e30: 8fc40028 lw a0,40(s8)
-80038e34: 8fc5002c lw a1,44(s8)
-80038e38: 2406fc01 li a2,-1023
-80038e3c: 2407ffff li a3,-1
-80038e40: 00861021 addu v0,a0,a2
-80038e44: 0044402b sltu t0,v0,a0
-80038e48: 00a71821 addu v1,a1,a3
-80038e4c: 01032021 addu a0,t0,v1
-80038e50: 00801821 move v1,a0
-80038e54: afc20028 sw v0,40(s8)
-80038e58: afc3002c sw v1,44(s8)
- m |= (unsigned long long)1<<52;
-80038e5c: 8fc20040 lw v0,64(s8)
-80038e60: 00000000 nop
-80038e64: 34420000 ori v0,v0,0x0
-80038e68: afc20040 sw v0,64(s8)
-80038e6c: 8fc30044 lw v1,68(s8)
-80038e70: 3c020010 lui v0,0x10
-80038e74: 00621025 or v0,v1,v0
-80038e78: afc20044 sw v0,68(s8)
-
- for(x = 52; x >= 0; x--)
-80038e7c: 24020034 li v0,52
-80038e80: afc20030 sw v0,48(s8)
-80038e84: 10000085 b 8003909c <libc_double_to_string+0x530>
-80038e88: 00000000 nop
- {
- if(m & ((unsigned long long)1<<x))
-80038e8c: 8fc20030 lw v0,48(s8)
-80038e90: 00000000 nop
-80038e94: 30420020 andi v0,v0,0x20
-80038e98: 10400008 beqz v0,80038ebc <libc_double_to_string+0x350>
-80038e9c: 00000000 nop
-80038ea0: 8fc30044 lw v1,68(s8)
-80038ea4: 8fc20030 lw v0,48(s8)
-80038ea8: 00000000 nop
-80038eac: 00438006 srlv s0,v1,v0
-80038eb0: 00008821 move s1,zero
-80038eb4: 10000011 b 80038efc <libc_double_to_string+0x390>
-80038eb8: 00000000 nop
-80038ebc: 8fc20044 lw v0,68(s8)
-80038ec0: 00000000 nop
-80038ec4: 00021840 sll v1,v0,0x1
-80038ec8: 8fc40030 lw a0,48(s8)
-80038ecc: 2402ffff li v0,-1
-80038ed0: 00821026 xor v0,a0,v0
-80038ed4: 00431004 sllv v0,v1,v0
-80038ed8: 8fc40040 lw a0,64(s8)
-80038edc: 8fc30030 lw v1,48(s8)
-80038ee0: 00000000 nop
-80038ee4: 00648006 srlv s0,a0,v1
-80038ee8: 00508025 or s0,v0,s0
-80038eec: 8fc30044 lw v1,68(s8)
-80038ef0: 8fc20030 lw v0,48(s8)
-80038ef4: 00000000 nop
-80038ef8: 00438806 srlv s1,v1,v0
-80038efc: 32160001 andi s6,s0,0x1
-80038f00: 32370000 andi s7,s1,0x0
-80038f04: 02c01021 move v0,s6
-80038f08: 00571025 or v0,v0,s7
-80038f0c: 10400054 beqz v0,80039060 <libc_double_to_string+0x4f4>
-80038f10: 00000000 nop
- {
- if(e >= 0)
-80038f14: 8fc2002c lw v0,44(s8)
-80038f18: 00000000 nop
-80038f1c: 04400024 bltz v0,80038fb0 <libc_double_to_string+0x444>
-80038f20: 00000000 nop
- {
- z = (long long)1<<e;
-80038f24: 8fc20028 lw v0,40(s8)
-80038f28: 00000000 nop
-80038f2c: 30430020 andi v1,v0,0x20
-80038f30: 10600006 beqz v1,80038f4c <libc_double_to_string+0x3e0>
-80038f34: 00000000 nop
-80038f38: 24030001 li v1,1
-80038f3c: 0043a804 sllv s5,v1,v0
-80038f40: 0000a021 move s4,zero
-80038f44: 1000000b b 80038f74 <libc_double_to_string+0x408>
-80038f48: 00000000 nop
-80038f4c: 24030001 li v1,1
-80038f50: 00032042 srl a0,v1,0x1
-80038f54: 2403ffff li v1,-1
-80038f58: 00431826 xor v1,v0,v1
-80038f5c: 00641806 srlv v1,a0,v1
-80038f60: 00002021 move a0,zero
-80038f64: 0044a804 sllv s5,a0,v0
-80038f68: 0075a825 or s5,v1,s5
-80038f6c: 24030001 li v1,1
-80038f70: 0043a004 sllv s4,v1,v0
-80038f74: afd40048 sw s4,72(s8)
-80038f78: afd5004c sw s5,76(s8)
-
- i+=z;
-80038f7c: 8fc40018 lw a0,24(s8)
-80038f80: 8fc5001c lw a1,28(s8)
-80038f84: 8fc60048 lw a2,72(s8)
-80038f88: 8fc7004c lw a3,76(s8)
-80038f8c: 00861021 addu v0,a0,a2
-80038f90: 0044402b sltu t0,v0,a0
-80038f94: 00a71821 addu v1,a1,a3
-80038f98: 01032021 addu a0,t0,v1
-80038f9c: 00801821 move v1,a0
-80038fa0: afc20018 sw v0,24(s8)
-80038fa4: afc3001c sw v1,28(s8)
-80038fa8: 1000002d b 80039060 <libc_double_to_string+0x4f4>
-80038fac: 00000000 nop
- }
- else
- {
- z = 5000000000000000000;
-80038fb0: 3c0244f4 lui v0,0x44f4
-80038fb4: 3c034563 lui v1,0x4563
-80038fb8: 34639182 ori v1,v1,0x9182
-80038fbc: afc20048 sw v0,72(s8)
-80038fc0: afc3004c sw v1,76(s8)
- z >>= -(e + 1);
-80038fc4: 8fc20028 lw v0,40(s8)
-80038fc8: 00000000 nop
-80038fcc: 00021027 nor v0,zero,v0
-80038fd0: 30430020 andi v1,v0,0x20
-80038fd4: 10600008 beqz v1,80038ff8 <libc_double_to_string+0x48c>
-80038fd8: 00000000 nop
-80038fdc: 8fc3004c lw v1,76(s8)
-80038fe0: 00000000 nop
-80038fe4: 00431006 srlv v0,v1,v0
-80038fe8: afc20048 sw v0,72(s8)
-80038fec: afc0004c sw zero,76(s8)
-80038ff0: 10000010 b 80039034 <libc_double_to_string+0x4c8>
-80038ff4: 00000000 nop
-80038ff8: 8fc3004c lw v1,76(s8)
-80038ffc: 00000000 nop
-80039000: 00032040 sll a0,v1,0x1
-80039004: 2403ffff li v1,-1
-80039008: 00431826 xor v1,v0,v1
-8003900c: 00641804 sllv v1,a0,v1
-80039010: 8fc40048 lw a0,72(s8)
-80039014: 00000000 nop
-80039018: 00442006 srlv a0,a0,v0
-8003901c: 00831825 or v1,a0,v1
-80039020: afc30048 sw v1,72(s8)
-80039024: 8fc3004c lw v1,76(s8)
-80039028: 00000000 nop
-8003902c: 00431006 srlv v0,v1,v0
-80039030: afc2004c sw v0,76(s8)
-
- f+=z;
-80039034: 8fc40020 lw a0,32(s8)
-80039038: 8fc50024 lw a1,36(s8)
-8003903c: 8fc60048 lw a2,72(s8)
-80039040: 8fc7004c lw a3,76(s8)
-80039044: 00861021 addu v0,a0,a2
-80039048: 0044402b sltu t0,v0,a0
-8003904c: 00a71821 addu v1,a1,a3
-80039050: 01032021 addu a0,t0,v1
-80039054: 00801821 move v1,a0
-80039058: afc20020 sw v0,32(s8)
-8003905c: afc30024 sw v1,36(s8)
- }
- }
- e--;
-80039060: 8fc40028 lw a0,40(s8)
-80039064: 8fc5002c lw a1,44(s8)
-80039068: 2406ffff li a2,-1
-8003906c: 2407ffff li a3,-1
-80039070: 00861021 addu v0,a0,a2
-80039074: 0044402b sltu t0,v0,a0
-80039078: 00a71821 addu v1,a1,a3
-8003907c: 01032021 addu a0,t0,v1
-80039080: 00801821 move v1,a0
-80039084: afc20028 sw v0,40(s8)
-80039088: afc3002c sw v1,44(s8)
- else
- {
- e -= 1023;
- m |= (unsigned long long)1<<52;
-
- for(x = 52; x >= 0; x--)
-8003908c: 8fc20030 lw v0,48(s8)
-80039090: 00000000 nop
-80039094: 2442ffff addiu v0,v0,-1
-80039098: afc20030 sw v0,48(s8)
-8003909c: 8fc20030 lw v0,48(s8)
-800390a0: 00000000 nop
-800390a4: 0441ff79 bgez v0,80038e8c <libc_double_to_string+0x320>
-800390a8: 00000000 nop
- }
- }
- e--;
- }
-
- if(s && (n>0))
-800390ac: 8fc20038 lw v0,56(s8)
-800390b0: 8fc3003c lw v1,60(s8)
-800390b4: 00000000 nop
-800390b8: 00431025 or v0,v0,v1
-800390bc: 1040000f beqz v0,800390fc <libc_double_to_string+0x590>
-800390c0: 00000000 nop
-800390c4: 8fc2008c lw v0,140(s8)
-800390c8: 00000000 nop
-800390cc: 1840000b blez v0,800390fc <libc_double_to_string+0x590>
-800390d0: 00000000 nop
- {
- *(dst++) = '-';
-800390d4: 8fc20088 lw v0,136(s8)
-800390d8: 00000000 nop
-800390dc: 24430001 addiu v1,v0,1
-800390e0: afc30088 sw v1,136(s8)
-800390e4: 2403002d li v1,45
-800390e8: a0430000 sb v1,0(v0)
- n--;
-800390ec: 8fc2008c lw v0,140(s8)
-800390f0: 00000000 nop
-800390f4: 2442ffff addiu v0,v0,-1
-800390f8: afc2008c sw v0,140(s8)
- }
-
- x = libc_ulltoa(i, dst, n, 0);
-800390fc: afa00010 sw zero,16(sp)
-80039100: 8fc7008c lw a3,140(s8)
-80039104: 8fc60088 lw a2,136(s8)
-80039108: 8fc40018 lw a0,24(s8)
-8003910c: 8fc5001c lw a1,28(s8)
-80039110: 0c00e233 jal 800388cc <libc_ulltoa>
-80039114: 00000000 nop
-80039118: afc20030 sw v0,48(s8)
- n-=x+1;
-8003911c: 8fc20030 lw v0,48(s8)
-80039120: 00000000 nop
-80039124: 00021027 nor v0,zero,v0
-80039128: 8fc3008c lw v1,140(s8)
-8003912c: 00000000 nop
-80039130: 00621021 addu v0,v1,v0
-80039134: afc2008c sw v0,140(s8)
- dst+=x;
-80039138: 8fc20030 lw v0,48(s8)
-8003913c: 8fc30088 lw v1,136(s8)
-80039140: 00000000 nop
-80039144: 00621021 addu v0,v1,v0
-80039148: afc20088 sw v0,136(s8)
-
- dprintf("N = %d\n", n);
-
- if(n>0)
-8003914c: 8fc2008c lw v0,140(s8)
-80039150: 00000000 nop
-80039154: 1840001e blez v0,800391d0 <libc_double_to_string+0x664>
-80039158: 00000000 nop
- {
- *(dst++) = '.';
-8003915c: 8fc20088 lw v0,136(s8)
-80039160: 00000000 nop
-80039164: 24430001 addiu v1,v0,1
-80039168: afc30088 sw v1,136(s8)
-8003916c: 2403002e li v1,46
-80039170: a0430000 sb v1,0(v0)
-
- if(n>0)
-80039174: 8fc2008c lw v0,140(s8)
-80039178: 00000000 nop
-8003917c: 18400014 blez v0,800391d0 <libc_double_to_string+0x664>
-80039180: 00000000 nop
- libc_ulltoa(f, dst, (n<(prec+1))?n:(prec+1), 1);
-80039184: 8fc20090 lw v0,144(s8)
-80039188: 00000000 nop
-8003918c: 24420001 addiu v0,v0,1
-80039190: 8fc3008c lw v1,140(s8)
-80039194: 00000000 nop
-80039198: 0062202a slt a0,v1,v0
-8003919c: 10800002 beqz a0,800391a8 <libc_double_to_string+0x63c>
-800391a0: 00000000 nop
-800391a4: 00601021 move v0,v1
-800391a8: 24030001 li v1,1
-800391ac: afa30010 sw v1,16(sp)
-800391b0: 00403821 move a3,v0
-800391b4: 8fc60088 lw a2,136(s8)
-800391b8: 8fc40020 lw a0,32(s8)
-800391bc: 8fc50024 lw a1,36(s8)
-800391c0: 0c00e233 jal 800388cc <libc_ulltoa>
-800391c4: 00000000 nop
- }
- }
-}
-800391c8: 10000001 b 800391d0 <libc_double_to_string+0x664>
-800391cc: 00000000 nop
-800391d0: 00000000 nop
-800391d4: 03c0e821 move sp,s8
-800391d8: 8fbf007c lw ra,124(sp)
-800391dc: 8fbe0078 lw s8,120(sp)
-800391e0: 8fb70074 lw s7,116(sp)
-800391e4: 8fb60070 lw s6,112(sp)
-800391e8: 8fb5006c lw s5,108(sp)
-800391ec: 8fb40068 lw s4,104(sp)
-800391f0: 8fb30064 lw s3,100(sp)
-800391f4: 8fb20060 lw s2,96(sp)
-800391f8: 8fb1005c lw s1,92(sp)
-800391fc: 8fb00058 lw s0,88(sp)
-80039200: 27bd0080 addiu sp,sp,128
-80039204: 03e00008 jr ra
-80039208: 00000000 nop
-
-8003920c <__vsnprintf_internal>:
-
-static char libc_sprintf_floatbuf[64];
-
-static int __vsnprintf_internal(char *string, size_t size, const char *fmt, va_list ap, int (put_in_string(char *string, unsigned int sz, char c, int pos)))
-{
-8003920c: 27bdfef8 addiu sp,sp,-264
-80039210: afbf0104 sw ra,260(sp)
-80039214: afbe0100 sw s8,256(sp)
-80039218: afb700fc sw s7,252(sp)
-8003921c: afb600f8 sw s6,248(sp)
-80039220: afb500f4 sw s5,244(sp)
-80039224: afb400f0 sw s4,240(sp)
-80039228: afb300ec sw s3,236(sp)
-8003922c: afb200e8 sw s2,232(sp)
-80039230: afb100e4 sw s1,228(sp)
-80039234: afb000e0 sw s0,224(sp)
-80039238: 03a0f021 move s8,sp
-8003923c: afc40108 sw a0,264(s8)
-80039240: afc5010c sw a1,268(s8)
-80039244: afc60110 sw a2,272(s8)
-80039248: afc70114 sw a3,276(s8)
- int string_pos,fmt_pos;
- int l;
- unsigned long long arg;
- char *argcp;
- char *argcp_tmp;
- int directive_coming = 0;
-8003924c: afc00028 sw zero,40(s8)
- int flags = 0;
-80039250: afc0002c sw zero,44(s8)
- int argsize = 2; // int
-80039254: 24020002 li v0,2
-80039258: afc20030 sw v0,48(s8)
- int x, y;
- unsigned long long a, b;
- int empty_digit;
- int ssz = size - 1;
-8003925c: 8fc2010c lw v0,268(s8)
-80039260: 00000000 nop
-80039264: 2442ffff addiu v0,v0,-1
-80039268: afc2004c sw v0,76(s8)
- int zero_flag_imp = 0;
-8003926c: afc00050 sw zero,80(s8)
- int pad_quantity = 0;
-80039270: afc00054 sw zero,84(s8)
- int pad_quantity_f = -1;
-80039274: 2402ffff li v0,-1
-80039278: afc20058 sw v0,88(s8)
- int last;
-
- if(size == 0)
-8003927c: 8fc2010c lw v0,268(s8)
-80039280: 00000000 nop
-80039284: 14400002 bnez v0,80039290 <__vsnprintf_internal+0x84>
-80039288: 00000000 nop
- ssz = 0;
-8003928c: afc0004c sw zero,76(s8)
-
- l = strlen(fmt);
-80039290: 8fc40110 lw a0,272(s8)
-80039294: 0c00d8af jal 800362bc <strlen>
-80039298: 00000000 nop
-8003929c: afc20060 sw v0,96(s8)
-
- string_pos = 0;
-800392a0: afc00018 sw zero,24(s8)
-
- for(fmt_pos=0;fmt_pos<l;fmt_pos++)
-800392a4: afc0001c sw zero,28(s8)
-800392a8: 10000777 b 8003b088 <__vsnprintf_internal+0x1e7c>
-800392ac: 00000000 nop
- {
- if(directive_coming)
-800392b0: 8fc20028 lw v0,40(s8)
-800392b4: 00000000 nop
-800392b8: 10400743 beqz v0,8003afc8 <__vsnprintf_internal+0x1dbc>
-800392bc: 00000000 nop
- {
- switch(fmt[fmt_pos])
-800392c0: 8fc3001c lw v1,28(s8)
-800392c4: 8fc20110 lw v0,272(s8)
-800392c8: 00000000 nop
-800392cc: 00431021 addu v0,v0,v1
-800392d0: 80420000 lb v0,0(v0)
-800392d4: 00000000 nop
-800392d8: 2443ffe0 addiu v1,v0,-32
-800392dc: 2c62005b sltiu v0,v1,91
-800392e0: 10400723 beqz v0,8003af70 <__vsnprintf_internal+0x1d64>
-800392e4: 00000000 nop
-800392e8: 00031880 sll v1,v1,0x2
-800392ec: 3c028004 lui v0,0x8004
-800392f0: 2442fed8 addiu v0,v0,-296
-800392f4: 00621021 addu v0,v1,v0
-800392f8: 8c420000 lw v0,0(v0)
-800392fc: 00000000 nop
-80039300: 00400008 jr v0
-80039304: 00000000 nop
- {
- case '%':
- put_in_string(string, ssz, '%', string_pos++);
-80039308: 8fc4004c lw a0,76(s8)
-8003930c: 8fc30018 lw v1,24(s8)
-80039310: 00000000 nop
-80039314: 24620001 addiu v0,v1,1
-80039318: afc20018 sw v0,24(s8)
-8003931c: 8fc20118 lw v0,280(s8)
-80039320: 00603821 move a3,v1
-80039324: 24060025 li a2,37
-80039328: 00802821 move a1,a0
-8003932c: 8fc40108 lw a0,264(s8)
-80039330: 0040f809 jalr v0
-80039334: 00000000 nop
- directive_coming = 0;
-80039338: afc00028 sw zero,40(s8)
- break;
-8003933c: 1000074e b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039340: 00000000 nop
- case ' ':
- flags |= SPRINTF_SPACE_FLAG;
-80039344: 8fc2002c lw v0,44(s8)
-80039348: 00000000 nop
-8003934c: 34420008 ori v0,v0,0x8
-80039350: afc2002c sw v0,44(s8)
- break;
-80039354: 10000748 b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039358: 00000000 nop
- case '#': // Specify alternate form
- flags |= SPRINTF_ALT_FLAG;
-8003935c: 8fc2002c lw v0,44(s8)
-80039360: 00000000 nop
-80039364: 34420001 ori v0,v0,0x1
-80039368: afc2002c sw v0,44(s8)
- break;
-8003936c: 10000742 b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039370: 00000000 nop
- case '+': // Specify sign in signed conversions
- flags |= SPRINTF_SIGN_FLAG;
-80039374: 8fc2002c lw v0,44(s8)
-80039378: 00000000 nop
-8003937c: 34420010 ori v0,v0,0x10
-80039380: afc2002c sw v0,44(s8)
- break;
-80039384: 1000073c b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039388: 00000000 nop
- case '0': // Padding with zeros...
- if(zero_flag_imp == 0)
-8003938c: 8fc20050 lw v0,80(s8)
-80039390: 00000000 nop
-80039394: 14400009 bnez v0,800393bc <__vsnprintf_internal+0x1b0>
-80039398: 00000000 nop
- {
- flags |= SPRINTF_ZERO_FLAG;
-8003939c: 8fc2002c lw v0,44(s8)
-800393a0: 00000000 nop
-800393a4: 34420002 ori v0,v0,0x2
-800393a8: afc2002c sw v0,44(s8)
- zero_flag_imp = 1;
-800393ac: 24020001 li v0,1
-800393b0: afc20050 sw v0,80(s8)
- else
- {
- pad_quantity *= 10;
- //printf("pad_quantity = %d\n", pad_quantity);
- }
- break;
-800393b4: 10000730 b 8003b078 <__vsnprintf_internal+0x1e6c>
-800393b8: 00000000 nop
- zero_flag_imp = 1;
- //printf("Zero padding enabled!\n");
- }
- else
- {
- pad_quantity *= 10;
-800393bc: 8fc20054 lw v0,84(s8)
-800393c0: 00000000 nop
-800393c4: 00401821 move v1,v0
-800393c8: 00031040 sll v0,v1,0x1
-800393cc: 00401821 move v1,v0
-800393d0: 00031080 sll v0,v1,0x2
-800393d4: 00621021 addu v0,v1,v0
-800393d8: afc20054 sw v0,84(s8)
- //printf("pad_quantity = %d\n", pad_quantity);
- }
- break;
-800393dc: 10000726 b 8003b078 <__vsnprintf_internal+0x1e6c>
-800393e0: 00000000 nop
- case '1' ... '9': // '...' cases are a GNU extension,
- // but they simplify a lot
-
- pad_quantity *= 10;
-800393e4: 8fc20054 lw v0,84(s8)
-800393e8: 00000000 nop
-800393ec: 00401821 move v1,v0
-800393f0: 00031040 sll v0,v1,0x1
-800393f4: 00401821 move v1,v0
-800393f8: 00031080 sll v0,v1,0x2
-800393fc: 00621021 addu v0,v1,v0
-80039400: afc20054 sw v0,84(s8)
- pad_quantity += fmt[fmt_pos] - '0';
-80039404: 8fc3001c lw v1,28(s8)
-80039408: 8fc20110 lw v0,272(s8)
-8003940c: 00000000 nop
-80039410: 00431021 addu v0,v0,v1
-80039414: 80420000 lb v0,0(v0)
-80039418: 00000000 nop
-8003941c: 2443ffd0 addiu v1,v0,-48
-80039420: 8fc20054 lw v0,84(s8)
-80039424: 00000000 nop
-80039428: 00431021 addu v0,v0,v1
-8003942c: afc20054 sw v0,84(s8)
- zero_flag_imp = 1;
-80039430: 24020001 li v0,1
-80039434: afc20050 sw v0,80(s8)
-
- //printf("pad_quantity = %d\n", pad_quantity);
- break;
-80039438: 1000070f b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003943c: 00000000 nop
- case '-': // Negative field flag
- if(flags & SPRINTF_ZERO_FLAG)
-80039440: 8fc2002c lw v0,44(s8)
-80039444: 00000000 nop
-80039448: 30420002 andi v0,v0,0x2
-8003944c: 10400005 beqz v0,80039464 <__vsnprintf_internal+0x258>
-80039450: 00000000 nop
- flags &= ~SPRINTF_ZERO_FLAG;
-80039454: 8fc3002c lw v1,44(s8)
-80039458: 2402fffd li v0,-3
-8003945c: 00621024 and v0,v1,v0
-80039460: afc2002c sw v0,44(s8)
-
- flags |= SPRINTF_NEGFIELD_FLAG;
-80039464: 8fc2002c lw v0,44(s8)
-80039468: 00000000 nop
-8003946c: 34420004 ori v0,v0,0x4
-80039470: afc2002c sw v0,44(s8)
- break;
-80039474: 10000700 b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039478: 00000000 nop
- case '.': // Floating point precision
- pad_quantity_f = pad_quantity;
-8003947c: 8fc20054 lw v0,84(s8)
-80039480: 00000000 nop
-80039484: afc20058 sw v0,88(s8)
- pad_quantity = 0;
-80039488: afc00054 sw zero,84(s8)
- break;
-8003948c: 100006fa b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039490: 00000000 nop
- case 'h': // Half argument size
- if(argsize) argsize--;
-80039494: 8fc20030 lw v0,48(s8)
-80039498: 00000000 nop
-8003949c: 104006f2 beqz v0,8003b068 <__vsnprintf_internal+0x1e5c>
-800394a0: 00000000 nop
-800394a4: 8fc20030 lw v0,48(s8)
-800394a8: 00000000 nop
-800394ac: 2442ffff addiu v0,v0,-1
-800394b0: afc20030 sw v0,48(s8)
- break;
-800394b4: 100006ec b 8003b068 <__vsnprintf_internal+0x1e5c>
-800394b8: 00000000 nop
- case 'l': // Double argument size
- if(argsize < 2) argsize = 2;
-800394bc: 8fc20030 lw v0,48(s8)
-800394c0: 00000000 nop
-800394c4: 28420002 slti v0,v0,2
-800394c8: 10400005 beqz v0,800394e0 <__vsnprintf_internal+0x2d4>
-800394cc: 00000000 nop
-800394d0: 24020002 li v0,2
-800394d4: afc20030 sw v0,48(s8)
- else if(argsize < SPRINTF_SIZE_LONG_LONG) argsize++;
- break;
-800394d8: 100006e6 b 8003b074 <__vsnprintf_internal+0x1e68>
-800394dc: 00000000 nop
- case 'h': // Half argument size
- if(argsize) argsize--;
- break;
- case 'l': // Double argument size
- if(argsize < 2) argsize = 2;
- else if(argsize < SPRINTF_SIZE_LONG_LONG) argsize++;
-800394e0: 8fc20030 lw v0,48(s8)
-800394e4: 00000000 nop
-800394e8: 28420004 slti v0,v0,4
-800394ec: 104006e1 beqz v0,8003b074 <__vsnprintf_internal+0x1e68>
-800394f0: 00000000 nop
-800394f4: 8fc20030 lw v0,48(s8)
-800394f8: 00000000 nop
-800394fc: 24420001 addiu v0,v0,1
-80039500: afc20030 sw v0,48(s8)
- break;
-80039504: 100006db b 8003b074 <__vsnprintf_internal+0x1e68>
-80039508: 00000000 nop
-
-// 'j', 't', 'z', 'q' added 2013-10-26 by nextvolume
-
- case 'j': // Maximum integer size
- argsize = SPRINTF_SIZE_LONG_LONG;
-8003950c: 24020004 li v0,4
-80039510: afc20030 sw v0,48(s8)
- break;
-80039514: 100006d8 b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039518: 00000000 nop
-
- case 't': // Size of ptrdiff_t (i.e. long on 32-bit, long long on 64-bit)
- argsize = (sizeof(void*)==8)?
-8003951c: 24020003 li v0,3
-80039520: afc20030 sw v0,48(s8)
- SPRINTF_SIZE_LONG_LONG:SPRINTF_SIZE_LONG;
- break;
-80039524: 100006d4 b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039528: 00000000 nop
-
- case 'z': // Size of size_t (int)
- argsize = SPRINTF_SIZE_INT;
-8003952c: 24020002 li v0,2
-80039530: afc20030 sw v0,48(s8)
- break;
-80039534: 100006d0 b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039538: 00000000 nop
-
- case 'q': // Size of quad_t
- argsize = SPRINTF_SIZE_LONG_LONG;
-8003953c: 24020004 li v0,4
-80039540: afc20030 sw v0,48(s8)
- break;
-80039544: 100006cc b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039548: 00000000 nop
-
- case 'd': // signed decimal
- case 'i':
- empty_digit = 1;
-8003954c: 24020001 li v0,1
-80039550: afc20048 sw v0,72(s8)
-
- //printf("argsize = %d\n", argsize);
-
- if(argsize < SPRINTF_SIZE_LONG_LONG)
-80039554: 8fc20030 lw v0,48(s8)
-80039558: 00000000 nop
-8003955c: 28420004 slti v0,v0,4
-80039560: 1040000f beqz v0,800395a0 <__vsnprintf_internal+0x394>
-80039564: 00000000 nop
- arg = (unsigned long long)va_arg(ap, unsigned int);
-80039568: 8fc30114 lw v1,276(s8)
-8003956c: 00000000 nop
-80039570: 24620004 addiu v0,v1,4
-80039574: afc20114 sw v0,276(s8)
-80039578: 8c620000 lw v0,0(v1)
-8003957c: 00000000 nop
-80039580: afc20098 sw v0,152(s8)
-80039584: afc0009c sw zero,156(s8)
-80039588: 8fc20098 lw v0,152(s8)
-8003958c: 8fc3009c lw v1,156(s8)
-80039590: afc20070 sw v0,112(s8)
-80039594: afc30074 sw v1,116(s8)
-80039598: 1000000c b 800395cc <__vsnprintf_internal+0x3c0>
-8003959c: 00000000 nop
- else
- arg = va_arg(ap, unsigned long long);
-800395a0: 8fc20114 lw v0,276(s8)
-800395a4: 00000000 nop
-800395a8: 24430007 addiu v1,v0,7
-800395ac: 2402fff8 li v0,-8
-800395b0: 00621824 and v1,v1,v0
-800395b4: 24620008 addiu v0,v1,8
-800395b8: afc20114 sw v0,276(s8)
-800395bc: 8c620000 lw v0,0(v1)
-800395c0: 8c630004 lw v1,4(v1)
-800395c4: afc20070 sw v0,112(s8)
-800395c8: afc30074 sw v1,116(s8)
-
- if(flags & SPRINTF_SPACE_FLAG)
-800395cc: 8fc2002c lw v0,44(s8)
-800395d0: 00000000 nop
-800395d4: 30420008 andi v0,v0,0x8
-800395d8: 1040000d beqz v0,80039610 <__vsnprintf_internal+0x404>
-800395dc: 00000000 nop
- put_in_string(string, ssz, ' ', string_pos++);
-800395e0: 8fc4004c lw a0,76(s8)
-800395e4: 8fc30018 lw v1,24(s8)
-800395e8: 00000000 nop
-800395ec: 24620001 addiu v0,v1,1
-800395f0: afc20018 sw v0,24(s8)
-800395f4: 8fc20118 lw v0,280(s8)
-800395f8: 00603821 move a3,v1
-800395fc: 24060020 li a2,32
-80039600: 00802821 move a1,a0
-80039604: 8fc40108 lw a0,264(s8)
-80039608: 0040f809 jalr v0
-8003960c: 00000000 nop
-
- if(get_arg_in_size(argsize, &arg, 1))
-80039610: 27c20070 addiu v0,s8,112
-80039614: 24060001 li a2,1
-80039618: 00402821 move a1,v0
-8003961c: 8fc40030 lw a0,48(s8)
-80039620: 0c00e13a jal 800384e8 <get_arg_in_size>
-80039624: 00000000 nop
-80039628: 10400013 beqz v0,80039678 <__vsnprintf_internal+0x46c>
-8003962c: 00000000 nop
- {
- put_in_string(string, ssz, '-', string_pos++);
-80039630: 8fc4004c lw a0,76(s8)
-80039634: 8fc30018 lw v1,24(s8)
-80039638: 00000000 nop
-8003963c: 24620001 addiu v0,v1,1
-80039640: afc20018 sw v0,24(s8)
-80039644: 8fc20118 lw v0,280(s8)
-80039648: 00603821 move a3,v1
-8003964c: 2406002d li a2,45
-80039650: 00802821 move a1,a0
-80039654: 8fc40108 lw a0,264(s8)
-80039658: 0040f809 jalr v0
-8003965c: 00000000 nop
- pad_quantity--;
-80039660: 8fc20054 lw v0,84(s8)
-80039664: 00000000 nop
-80039668: 2442ffff addiu v0,v0,-1
-8003966c: afc20054 sw v0,84(s8)
-80039670: 10000016 b 800396cc <__vsnprintf_internal+0x4c0>
-80039674: 00000000 nop
- }
- else
- {
- if(flags & SPRINTF_SIGN_FLAG)
-80039678: 8fc2002c lw v0,44(s8)
-8003967c: 00000000 nop
-80039680: 30420010 andi v0,v0,0x10
-80039684: 10400011 beqz v0,800396cc <__vsnprintf_internal+0x4c0>
-80039688: 00000000 nop
- {
- put_in_string(string, ssz, '+', string_pos++);
-8003968c: 8fc4004c lw a0,76(s8)
-80039690: 8fc30018 lw v1,24(s8)
-80039694: 00000000 nop
-80039698: 24620001 addiu v0,v1,1
-8003969c: afc20018 sw v0,24(s8)
-800396a0: 8fc20118 lw v0,280(s8)
-800396a4: 00603821 move a3,v1
-800396a8: 2406002b li a2,43
-800396ac: 00802821 move a1,a0
-800396b0: 8fc40108 lw a0,264(s8)
-800396b4: 0040f809 jalr v0
-800396b8: 00000000 nop
- pad_quantity--;
-800396bc: 8fc20054 lw v0,84(s8)
-800396c0: 00000000 nop
-800396c4: 2442ffff addiu v0,v0,-1
-800396c8: afc20054 sw v0,84(s8)
-
- y *= 10;
- }
- if(pad_quantity < 0) pad_quantity = 0;*/
-
- calculate_real_padding();
-800396cc: 24020001 li v0,1
-800396d0: afc20038 sw v0,56(s8)
-800396d4: afc00034 sw zero,52(s8)
-800396d8: 1000002a b 80039784 <__vsnprintf_internal+0x578>
-800396dc: 00000000 nop
-800396e0: 8fc20034 lw v0,52(s8)
-800396e4: 00000000 nop
-800396e8: 14400007 bnez v0,80039708 <__vsnprintf_internal+0x4fc>
-800396ec: 00000000 nop
-800396f0: 8fc20054 lw v0,84(s8)
-800396f4: 00000000 nop
-800396f8: 2442ffff addiu v0,v0,-1
-800396fc: afc20054 sw v0,84(s8)
-80039700: 10000014 b 80039754 <__vsnprintf_internal+0x548>
-80039704: 00000000 nop
-80039708: 8fc40070 lw a0,112(s8)
-8003970c: 8fc50074 lw a1,116(s8)
-80039710: 8fc20038 lw v0,56(s8)
-80039714: 00000000 nop
-80039718: afc200a0 sw v0,160(s8)
-8003971c: 000217c3 sra v0,v0,0x1f
-80039720: afc200a4 sw v0,164(s8)
-80039724: 8fc600a0 lw a2,160(s8)
-80039728: 8fc700a4 lw a3,164(s8)
-8003972c: 0c00f0ae jal 8003c2b8 <__udivdi3>
-80039730: 00000000 nop
-80039734: 00402021 move a0,v0
-80039738: 00832025 or a0,a0,v1
-8003973c: 10800005 beqz a0,80039754 <__vsnprintf_internal+0x548>
-80039740: 00000000 nop
-80039744: 8fc20054 lw v0,84(s8)
-80039748: 00000000 nop
-8003974c: 2442ffff addiu v0,v0,-1
-80039750: afc20054 sw v0,84(s8)
-80039754: 8fc20038 lw v0,56(s8)
-80039758: 00000000 nop
-8003975c: 00401821 move v1,v0
-80039760: 00031040 sll v0,v1,0x1
-80039764: 00401821 move v1,v0
-80039768: 00031080 sll v0,v1,0x2
-8003976c: 00621021 addu v0,v1,v0
-80039770: afc20038 sw v0,56(s8)
-80039774: 8fc20034 lw v0,52(s8)
-80039778: 00000000 nop
-8003977c: 24420001 addiu v0,v0,1
-80039780: afc20034 sw v0,52(s8)
-80039784: 8fc20034 lw v0,52(s8)
-80039788: 00000000 nop
-8003978c: 28420014 slti v0,v0,20
-80039790: 1440ffd3 bnez v0,800396e0 <__vsnprintf_internal+0x4d4>
-80039794: 00000000 nop
-80039798: 8fc20054 lw v0,84(s8)
-8003979c: 00000000 nop
-800397a0: 04410002 bgez v0,800397ac <__vsnprintf_internal+0x5a0>
-800397a4: 00000000 nop
-800397a8: afc00054 sw zero,84(s8)
- else
- put_in_string(string, ssz, ' ', string_pos++);
- }
- }*/
-
- write_padding();
-800397ac: 8fc2002c lw v0,44(s8)
-800397b0: 00000000 nop
-800397b4: 30420004 andi v0,v0,0x4
-800397b8: 1440002d bnez v0,80039870 <__vsnprintf_internal+0x664>
-800397bc: 00000000 nop
-800397c0: afc00034 sw zero,52(s8)
-800397c4: 10000024 b 80039858 <__vsnprintf_internal+0x64c>
-800397c8: 00000000 nop
-800397cc: 8fc2002c lw v0,44(s8)
-800397d0: 00000000 nop
-800397d4: 30420002 andi v0,v0,0x2
-800397d8: 1040000f beqz v0,80039818 <__vsnprintf_internal+0x60c>
-800397dc: 00000000 nop
-800397e0: 8fc4004c lw a0,76(s8)
-800397e4: 8fc30018 lw v1,24(s8)
-800397e8: 00000000 nop
-800397ec: 24620001 addiu v0,v1,1
-800397f0: afc20018 sw v0,24(s8)
-800397f4: 8fc20118 lw v0,280(s8)
-800397f8: 00603821 move a3,v1
-800397fc: 24060030 li a2,48
-80039800: 00802821 move a1,a0
-80039804: 8fc40108 lw a0,264(s8)
-80039808: 0040f809 jalr v0
-8003980c: 00000000 nop
-80039810: 1000000d b 80039848 <__vsnprintf_internal+0x63c>
-80039814: 00000000 nop
-80039818: 8fc4004c lw a0,76(s8)
-8003981c: 8fc30018 lw v1,24(s8)
-80039820: 00000000 nop
-80039824: 24620001 addiu v0,v1,1
-80039828: afc20018 sw v0,24(s8)
-8003982c: 8fc20118 lw v0,280(s8)
-80039830: 00603821 move a3,v1
-80039834: 24060020 li a2,32
-80039838: 00802821 move a1,a0
-8003983c: 8fc40108 lw a0,264(s8)
-80039840: 0040f809 jalr v0
-80039844: 00000000 nop
-80039848: 8fc20034 lw v0,52(s8)
-8003984c: 00000000 nop
-80039850: 24420001 addiu v0,v0,1
-80039854: afc20034 sw v0,52(s8)
-80039858: 8fc30034 lw v1,52(s8)
-8003985c: 8fc20054 lw v0,84(s8)
-80039860: 00000000 nop
-80039864: 0062102a slt v0,v1,v0
-80039868: 1440ffd8 bnez v0,800397cc <__vsnprintf_internal+0x5c0>
-8003986c: 00000000 nop
-
- for(x=19;x>=0;x--)
-80039870: 24020013 li v0,19
-80039874: afc20034 sw v0,52(s8)
-80039878: 10000081 b 80039a80 <__vsnprintf_internal+0x874>
-8003987c: 00000000 nop
- {
- a = 1;
-80039880: 24020001 li v0,1
-80039884: 00001821 move v1,zero
-80039888: afc20040 sw v0,64(s8)
-8003988c: afc30044 sw v1,68(s8)
- for(y = 0; y<x; y++)
-80039890: afc00038 sw zero,56(s8)
-80039894: 10000026 b 80039930 <__vsnprintf_internal+0x724>
-80039898: 00000000 nop
- a *= 10;
-8003989c: 8fc20040 lw v0,64(s8)
-800398a0: 8fc30044 lw v1,68(s8)
-800398a4: 000227c2 srl a0,v0,0x1f
-800398a8: 00032840 sll a1,v1,0x1
-800398ac: afc5007c sw a1,124(s8)
-800398b0: 8fc5007c lw a1,124(s8)
-800398b4: 00000000 nop
-800398b8: 00852025 or a0,a0,a1
-800398bc: afc4007c sw a0,124(s8)
-800398c0: 00021040 sll v0,v0,0x1
-800398c4: afc20078 sw v0,120(s8)
-800398c8: 8fc20078 lw v0,120(s8)
-800398cc: 8fc3007c lw v1,124(s8)
-800398d0: 00022782 srl a0,v0,0x1e
-800398d4: 00032880 sll a1,v1,0x2
-800398d8: afc50084 sw a1,132(s8)
-800398dc: 8fc50084 lw a1,132(s8)
-800398e0: 00000000 nop
-800398e4: 00852025 or a0,a0,a1
-800398e8: afc40084 sw a0,132(s8)
-800398ec: 00022080 sll a0,v0,0x2
-800398f0: afc40080 sw a0,128(s8)
-800398f4: 8fc80080 lw t0,128(s8)
-800398f8: 8fc90084 lw t1,132(s8)
-800398fc: 01003021 move a2,t0
-80039900: 00462021 addu a0,v0,a2
-80039904: 0082302b sltu a2,a0,v0
-80039908: 01203821 move a3,t1
-8003990c: 00672821 addu a1,v1,a3
-80039910: 00c51021 addu v0,a2,a1
-80039914: 00402821 move a1,v0
-80039918: afc40040 sw a0,64(s8)
-8003991c: afc50044 sw a1,68(s8)
- write_padding();
-
- for(x=19;x>=0;x--)
- {
- a = 1;
- for(y = 0; y<x; y++)
-80039920: 8fc20038 lw v0,56(s8)
-80039924: 00000000 nop
-80039928: 24420001 addiu v0,v0,1
-8003992c: afc20038 sw v0,56(s8)
-80039930: 8fc30038 lw v1,56(s8)
-80039934: 8fc20034 lw v0,52(s8)
-80039938: 00000000 nop
-8003993c: 0062102a slt v0,v1,v0
-80039940: 1440ffd6 bnez v0,8003989c <__vsnprintf_internal+0x690>
-80039944: 00000000 nop
- a *= 10;
-
- b = (arg/a);
-80039948: 8fc20070 lw v0,112(s8)
-8003994c: 8fc30074 lw v1,116(s8)
-80039950: 8fc60040 lw a2,64(s8)
-80039954: 8fc70044 lw a3,68(s8)
-80039958: 00402021 move a0,v0
-8003995c: 00602821 move a1,v1
-80039960: 0c00f0ae jal 8003c2b8 <__udivdi3>
-80039964: 00000000 nop
-80039968: afc20068 sw v0,104(s8)
-8003996c: afc3006c sw v1,108(s8)
-
- if(b>=1)
-80039970: 8fc30068 lw v1,104(s8)
-80039974: 8fc2006c lw v0,108(s8)
-80039978: 00000000 nop
-8003997c: 00621825 or v1,v1,v0
-80039980: 10600002 beqz v1,8003998c <__vsnprintf_internal+0x780>
-80039984: 00000000 nop
- empty_digit = 0;
-80039988: afc00048 sw zero,72(s8)
-
- if(empty_digit == 0 || x == 0)
-8003998c: 8fc20048 lw v0,72(s8)
-80039990: 00000000 nop
-80039994: 10400005 beqz v0,800399ac <__vsnprintf_internal+0x7a0>
-80039998: 00000000 nop
-8003999c: 8fc20034 lw v0,52(s8)
-800399a0: 00000000 nop
-800399a4: 14400032 bnez v0,80039a70 <__vsnprintf_internal+0x864>
-800399a8: 00000000 nop
- {
- arg -= b*a;
-800399ac: 8fc80070 lw t0,112(s8)
-800399b0: 8fc90074 lw t1,116(s8)
-800399b4: 8fc3006c lw v1,108(s8)
-800399b8: 8fc20040 lw v0,64(s8)
-800399bc: 00000000 nop
-800399c0: 00620018 mult v1,v0
-800399c4: 00002012 mflo a0
-800399c8: 8fc30044 lw v1,68(s8)
-800399cc: 8fc20068 lw v0,104(s8)
-800399d0: 00000000 nop
-800399d4: 00620018 mult v1,v0
-800399d8: 00001012 mflo v0
-800399dc: 00822021 addu a0,a0,v0
-800399e0: 8fc30068 lw v1,104(s8)
-800399e4: 8fc20040 lw v0,64(s8)
-800399e8: 00000000 nop
-800399ec: 00620019 multu v1,v0
-800399f0: 00001012 mflo v0
-800399f4: 00001810 mfhi v1
-800399f8: 00832021 addu a0,a0,v1
-800399fc: 00801821 move v1,a0
-80039a00: 01022023 subu a0,t0,v0
-80039a04: 0104302b sltu a2,t0,a0
-80039a08: 01232823 subu a1,t1,v1
-80039a0c: 00a61023 subu v0,a1,a2
-80039a10: 00402821 move a1,v0
-80039a14: 00801021 move v0,a0
-80039a18: 00a01821 move v1,a1
-80039a1c: afc20070 sw v0,112(s8)
-80039a20: afc30074 sw v1,116(s8)
-
- put_in_string(string, ssz, b + '0', string_pos++);
-80039a24: 8fc4004c lw a0,76(s8)
-80039a28: 93c20068 lbu v0,104(s8)
-80039a2c: 00000000 nop
-80039a30: 24420030 addiu v0,v0,48
-80039a34: 304200ff andi v0,v0,0xff
-80039a38: 00021600 sll v0,v0,0x18
-80039a3c: 00021603 sra v0,v0,0x18
-80039a40: 00402821 move a1,v0
-80039a44: 8fc30018 lw v1,24(s8)
-80039a48: 00000000 nop
-80039a4c: 24620001 addiu v0,v1,1
-80039a50: afc20018 sw v0,24(s8)
-80039a54: 8fc20118 lw v0,280(s8)
-80039a58: 00603821 move a3,v1
-80039a5c: 00a03021 move a2,a1
-80039a60: 00802821 move a1,a0
-80039a64: 8fc40108 lw a0,264(s8)
-80039a68: 0040f809 jalr v0
-80039a6c: 00000000 nop
- }
- }*/
-
- write_padding();
-
- for(x=19;x>=0;x--)
-80039a70: 8fc20034 lw v0,52(s8)
-80039a74: 00000000 nop
-80039a78: 2442ffff addiu v0,v0,-1
-80039a7c: afc20034 sw v0,52(s8)
-80039a80: 8fc20034 lw v0,52(s8)
-80039a84: 00000000 nop
-80039a88: 0441ff7d bgez v0,80039880 <__vsnprintf_internal+0x674>
-80039a8c: 00000000 nop
- /*if(flags & SPRINTF_NEGFIELD_FLAG)
- {
- for(x = 0; x < pad_quantity; x++)
- put_in_string(string, ssz, ' ', string_pos++);
- }*/
- write_neg_padding();
-80039a90: 8fc2002c lw v0,44(s8)
-80039a94: 00000000 nop
-80039a98: 30420004 andi v0,v0,0x4
-80039a9c: 1040001a beqz v0,80039b08 <__vsnprintf_internal+0x8fc>
-80039aa0: 00000000 nop
-80039aa4: afc00034 sw zero,52(s8)
-80039aa8: 10000011 b 80039af0 <__vsnprintf_internal+0x8e4>
-80039aac: 00000000 nop
-80039ab0: 8fc4004c lw a0,76(s8)
-80039ab4: 8fc30018 lw v1,24(s8)
-80039ab8: 00000000 nop
-80039abc: 24620001 addiu v0,v1,1
-80039ac0: afc20018 sw v0,24(s8)
-80039ac4: 8fc20118 lw v0,280(s8)
-80039ac8: 00603821 move a3,v1
-80039acc: 24060020 li a2,32
-80039ad0: 00802821 move a1,a0
-80039ad4: 8fc40108 lw a0,264(s8)
-80039ad8: 0040f809 jalr v0
-80039adc: 00000000 nop
-80039ae0: 8fc20034 lw v0,52(s8)
-80039ae4: 00000000 nop
-80039ae8: 24420001 addiu v0,v0,1
-80039aec: afc20034 sw v0,52(s8)
-80039af0: 8fc30034 lw v1,52(s8)
-80039af4: 8fc20054 lw v0,84(s8)
-80039af8: 00000000 nop
-80039afc: 0062102a slt v0,v1,v0
-80039b00: 1440ffeb bnez v0,80039ab0 <__vsnprintf_internal+0x8a4>
-80039b04: 00000000 nop
-
- directive_coming = 0;
-80039b08: afc00028 sw zero,40(s8)
- break;
-80039b0c: 1000055a b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039b10: 00000000 nop
- case 'u': // unsigned decimal
- empty_digit = 1;
-80039b14: 24020001 li v0,1
-80039b18: afc20048 sw v0,72(s8)
-
- if(argsize < SPRINTF_SIZE_LONG_LONG)
-80039b1c: 8fc20030 lw v0,48(s8)
-80039b20: 00000000 nop
-80039b24: 28420004 slti v0,v0,4
-80039b28: 1040000f beqz v0,80039b68 <__vsnprintf_internal+0x95c>
-80039b2c: 00000000 nop
- arg = (unsigned long long)va_arg(ap, unsigned int);
-80039b30: 8fc30114 lw v1,276(s8)
-80039b34: 00000000 nop
-80039b38: 24620004 addiu v0,v1,4
-80039b3c: afc20114 sw v0,276(s8)
-80039b40: 8c620000 lw v0,0(v1)
-80039b44: 00000000 nop
-80039b48: afc200a8 sw v0,168(s8)
-80039b4c: afc000ac sw zero,172(s8)
-80039b50: 8fc200a8 lw v0,168(s8)
-80039b54: 8fc300ac lw v1,172(s8)
-80039b58: afc20070 sw v0,112(s8)
-80039b5c: afc30074 sw v1,116(s8)
-80039b60: 1000000c b 80039b94 <__vsnprintf_internal+0x988>
-80039b64: 00000000 nop
- else
- arg = va_arg(ap, unsigned long long);
-80039b68: 8fc20114 lw v0,276(s8)
-80039b6c: 00000000 nop
-80039b70: 24430007 addiu v1,v0,7
-80039b74: 2402fff8 li v0,-8
-80039b78: 00621824 and v1,v1,v0
-80039b7c: 24620008 addiu v0,v1,8
-80039b80: afc20114 sw v0,276(s8)
-80039b84: 8c620000 lw v0,0(v1)
-80039b88: 8c630004 lw v1,4(v1)
-80039b8c: afc20070 sw v0,112(s8)
-80039b90: afc30074 sw v1,116(s8)
-
- get_arg_in_size(argsize, &arg, 0);
-80039b94: 27c20070 addiu v0,s8,112
-80039b98: 00003021 move a2,zero
-80039b9c: 00402821 move a1,v0
-80039ba0: 8fc40030 lw a0,48(s8)
-80039ba4: 0c00e13a jal 800384e8 <get_arg_in_size>
-80039ba8: 00000000 nop
-
- calculate_real_padding();
-80039bac: 24020001 li v0,1
-80039bb0: afc20038 sw v0,56(s8)
-80039bb4: afc00034 sw zero,52(s8)
-80039bb8: 1000002a b 80039c64 <__vsnprintf_internal+0xa58>
-80039bbc: 00000000 nop
-80039bc0: 8fc20034 lw v0,52(s8)
-80039bc4: 00000000 nop
-80039bc8: 14400007 bnez v0,80039be8 <__vsnprintf_internal+0x9dc>
-80039bcc: 00000000 nop
-80039bd0: 8fc20054 lw v0,84(s8)
-80039bd4: 00000000 nop
-80039bd8: 2442ffff addiu v0,v0,-1
-80039bdc: afc20054 sw v0,84(s8)
-80039be0: 10000014 b 80039c34 <__vsnprintf_internal+0xa28>
-80039be4: 00000000 nop
-80039be8: 8fc40070 lw a0,112(s8)
-80039bec: 8fc50074 lw a1,116(s8)
-80039bf0: 8fc20038 lw v0,56(s8)
-80039bf4: 00000000 nop
-80039bf8: afc200b0 sw v0,176(s8)
-80039bfc: 000217c3 sra v0,v0,0x1f
-80039c00: afc200b4 sw v0,180(s8)
-80039c04: 8fc600b0 lw a2,176(s8)
-80039c08: 8fc700b4 lw a3,180(s8)
-80039c0c: 0c00f0ae jal 8003c2b8 <__udivdi3>
-80039c10: 00000000 nop
-80039c14: 00402021 move a0,v0
-80039c18: 00832025 or a0,a0,v1
-80039c1c: 10800005 beqz a0,80039c34 <__vsnprintf_internal+0xa28>
-80039c20: 00000000 nop
-80039c24: 8fc20054 lw v0,84(s8)
-80039c28: 00000000 nop
-80039c2c: 2442ffff addiu v0,v0,-1
-80039c30: afc20054 sw v0,84(s8)
-80039c34: 8fc20038 lw v0,56(s8)
-80039c38: 00000000 nop
-80039c3c: 00401821 move v1,v0
-80039c40: 00031040 sll v0,v1,0x1
-80039c44: 00401821 move v1,v0
-80039c48: 00031080 sll v0,v1,0x2
-80039c4c: 00621021 addu v0,v1,v0
-80039c50: afc20038 sw v0,56(s8)
-80039c54: 8fc20034 lw v0,52(s8)
-80039c58: 00000000 nop
-80039c5c: 24420001 addiu v0,v0,1
-80039c60: afc20034 sw v0,52(s8)
-80039c64: 8fc20034 lw v0,52(s8)
-80039c68: 00000000 nop
-80039c6c: 28420014 slti v0,v0,20
-80039c70: 1440ffd3 bnez v0,80039bc0 <__vsnprintf_internal+0x9b4>
-80039c74: 00000000 nop
-80039c78: 8fc20054 lw v0,84(s8)
-80039c7c: 00000000 nop
-80039c80: 04410002 bgez v0,80039c8c <__vsnprintf_internal+0xa80>
-80039c84: 00000000 nop
-80039c88: afc00054 sw zero,84(s8)
- write_padding();
-80039c8c: 8fc2002c lw v0,44(s8)
-80039c90: 00000000 nop
-80039c94: 30420004 andi v0,v0,0x4
-80039c98: 1440002d bnez v0,80039d50 <__vsnprintf_internal+0xb44>
-80039c9c: 00000000 nop
-80039ca0: afc00034 sw zero,52(s8)
-80039ca4: 10000024 b 80039d38 <__vsnprintf_internal+0xb2c>
-80039ca8: 00000000 nop
-80039cac: 8fc2002c lw v0,44(s8)
-80039cb0: 00000000 nop
-80039cb4: 30420002 andi v0,v0,0x2
-80039cb8: 1040000f beqz v0,80039cf8 <__vsnprintf_internal+0xaec>
-80039cbc: 00000000 nop
-80039cc0: 8fc4004c lw a0,76(s8)
-80039cc4: 8fc30018 lw v1,24(s8)
-80039cc8: 00000000 nop
-80039ccc: 24620001 addiu v0,v1,1
-80039cd0: afc20018 sw v0,24(s8)
-80039cd4: 8fc20118 lw v0,280(s8)
-80039cd8: 00603821 move a3,v1
-80039cdc: 24060030 li a2,48
-80039ce0: 00802821 move a1,a0
-80039ce4: 8fc40108 lw a0,264(s8)
-80039ce8: 0040f809 jalr v0
-80039cec: 00000000 nop
-80039cf0: 1000000d b 80039d28 <__vsnprintf_internal+0xb1c>
-80039cf4: 00000000 nop
-80039cf8: 8fc4004c lw a0,76(s8)
-80039cfc: 8fc30018 lw v1,24(s8)
-80039d00: 00000000 nop
-80039d04: 24620001 addiu v0,v1,1
-80039d08: afc20018 sw v0,24(s8)
-80039d0c: 8fc20118 lw v0,280(s8)
-80039d10: 00603821 move a3,v1
-80039d14: 24060020 li a2,32
-80039d18: 00802821 move a1,a0
-80039d1c: 8fc40108 lw a0,264(s8)
-80039d20: 0040f809 jalr v0
-80039d24: 00000000 nop
-80039d28: 8fc20034 lw v0,52(s8)
-80039d2c: 00000000 nop
-80039d30: 24420001 addiu v0,v0,1
-80039d34: afc20034 sw v0,52(s8)
-80039d38: 8fc30034 lw v1,52(s8)
-80039d3c: 8fc20054 lw v0,84(s8)
-80039d40: 00000000 nop
-80039d44: 0062102a slt v0,v1,v0
-80039d48: 1440ffd8 bnez v0,80039cac <__vsnprintf_internal+0xaa0>
-80039d4c: 00000000 nop
-
- for(x=19;x>=0;x--)
-80039d50: 24020013 li v0,19
-80039d54: afc20034 sw v0,52(s8)
-80039d58: 10000081 b 80039f60 <__vsnprintf_internal+0xd54>
-80039d5c: 00000000 nop
- {
- a = 1;
-80039d60: 24020001 li v0,1
-80039d64: 00001821 move v1,zero
-80039d68: afc20040 sw v0,64(s8)
-80039d6c: afc30044 sw v1,68(s8)
- for(y = 0; y<x; y++)
-80039d70: afc00038 sw zero,56(s8)
-80039d74: 10000026 b 80039e10 <__vsnprintf_internal+0xc04>
-80039d78: 00000000 nop
- a *= 10;
-80039d7c: 8fc20040 lw v0,64(s8)
-80039d80: 8fc30044 lw v1,68(s8)
-80039d84: 000227c2 srl a0,v0,0x1f
-80039d88: 00032840 sll a1,v1,0x1
-80039d8c: afc5008c sw a1,140(s8)
-80039d90: 8fc5008c lw a1,140(s8)
-80039d94: 00000000 nop
-80039d98: 00852025 or a0,a0,a1
-80039d9c: afc4008c sw a0,140(s8)
-80039da0: 00021040 sll v0,v0,0x1
-80039da4: afc20088 sw v0,136(s8)
-80039da8: 8fc20088 lw v0,136(s8)
-80039dac: 8fc3008c lw v1,140(s8)
-80039db0: 00022782 srl a0,v0,0x1e
-80039db4: 00032880 sll a1,v1,0x2
-80039db8: afc50094 sw a1,148(s8)
-80039dbc: 8fc50094 lw a1,148(s8)
-80039dc0: 00000000 nop
-80039dc4: 00852025 or a0,a0,a1
-80039dc8: afc40094 sw a0,148(s8)
-80039dcc: 00022080 sll a0,v0,0x2
-80039dd0: afc40090 sw a0,144(s8)
-80039dd4: 8fc80090 lw t0,144(s8)
-80039dd8: 8fc90094 lw t1,148(s8)
-80039ddc: 01003021 move a2,t0
-80039de0: 00462021 addu a0,v0,a2
-80039de4: 0082302b sltu a2,a0,v0
-80039de8: 01203821 move a3,t1
-80039dec: 00672821 addu a1,v1,a3
-80039df0: 00c51021 addu v0,a2,a1
-80039df4: 00402821 move a1,v0
-80039df8: afc40040 sw a0,64(s8)
-80039dfc: afc50044 sw a1,68(s8)
- write_padding();
-
- for(x=19;x>=0;x--)
- {
- a = 1;
- for(y = 0; y<x; y++)
-80039e00: 8fc20038 lw v0,56(s8)
-80039e04: 00000000 nop
-80039e08: 24420001 addiu v0,v0,1
-80039e0c: afc20038 sw v0,56(s8)
-80039e10: 8fc30038 lw v1,56(s8)
-80039e14: 8fc20034 lw v0,52(s8)
-80039e18: 00000000 nop
-80039e1c: 0062102a slt v0,v1,v0
-80039e20: 1440ffd6 bnez v0,80039d7c <__vsnprintf_internal+0xb70>
-80039e24: 00000000 nop
- a *= 10;
-
-
-
- b = (arg/a);
-80039e28: 8fc20070 lw v0,112(s8)
-80039e2c: 8fc30074 lw v1,116(s8)
-80039e30: 8fc60040 lw a2,64(s8)
-80039e34: 8fc70044 lw a3,68(s8)
-80039e38: 00402021 move a0,v0
-80039e3c: 00602821 move a1,v1
-80039e40: 0c00f0ae jal 8003c2b8 <__udivdi3>
-80039e44: 00000000 nop
-80039e48: afc20068 sw v0,104(s8)
-80039e4c: afc3006c sw v1,108(s8)
-
- if(b>=1)
-80039e50: 8fc30068 lw v1,104(s8)
-80039e54: 8fc2006c lw v0,108(s8)
-80039e58: 00000000 nop
-80039e5c: 00621825 or v1,v1,v0
-80039e60: 10600002 beqz v1,80039e6c <__vsnprintf_internal+0xc60>
-80039e64: 00000000 nop
- empty_digit = 0;
-80039e68: afc00048 sw zero,72(s8)
-
- if(empty_digit == 0 || x == 0)
-80039e6c: 8fc20048 lw v0,72(s8)
-80039e70: 00000000 nop
-80039e74: 10400005 beqz v0,80039e8c <__vsnprintf_internal+0xc80>
-80039e78: 00000000 nop
-80039e7c: 8fc20034 lw v0,52(s8)
-80039e80: 00000000 nop
-80039e84: 14400032 bnez v0,80039f50 <__vsnprintf_internal+0xd44>
-80039e88: 00000000 nop
- {
- arg -= b*a;
-80039e8c: 8fc80070 lw t0,112(s8)
-80039e90: 8fc90074 lw t1,116(s8)
-80039e94: 8fc3006c lw v1,108(s8)
-80039e98: 8fc20040 lw v0,64(s8)
-80039e9c: 00000000 nop
-80039ea0: 00620018 mult v1,v0
-80039ea4: 00002012 mflo a0
-80039ea8: 8fc30044 lw v1,68(s8)
-80039eac: 8fc20068 lw v0,104(s8)
-80039eb0: 00000000 nop
-80039eb4: 00620018 mult v1,v0
-80039eb8: 00001012 mflo v0
-80039ebc: 00822021 addu a0,a0,v0
-80039ec0: 8fc30068 lw v1,104(s8)
-80039ec4: 8fc20040 lw v0,64(s8)
-80039ec8: 00000000 nop
-80039ecc: 00620019 multu v1,v0
-80039ed0: 00001012 mflo v0
-80039ed4: 00001810 mfhi v1
-80039ed8: 00832021 addu a0,a0,v1
-80039edc: 00801821 move v1,a0
-80039ee0: 01022023 subu a0,t0,v0
-80039ee4: 0104302b sltu a2,t0,a0
-80039ee8: 01232823 subu a1,t1,v1
-80039eec: 00a61023 subu v0,a1,a2
-80039ef0: 00402821 move a1,v0
-80039ef4: 00801021 move v0,a0
-80039ef8: 00a01821 move v1,a1
-80039efc: afc20070 sw v0,112(s8)
-80039f00: afc30074 sw v1,116(s8)
-
- put_in_string(string, ssz, b + '0', string_pos++);
-80039f04: 8fc4004c lw a0,76(s8)
-80039f08: 93c20068 lbu v0,104(s8)
-80039f0c: 00000000 nop
-80039f10: 24420030 addiu v0,v0,48
-80039f14: 304200ff andi v0,v0,0xff
-80039f18: 00021600 sll v0,v0,0x18
-80039f1c: 00021603 sra v0,v0,0x18
-80039f20: 00402821 move a1,v0
-80039f24: 8fc30018 lw v1,24(s8)
-80039f28: 00000000 nop
-80039f2c: 24620001 addiu v0,v1,1
-80039f30: afc20018 sw v0,24(s8)
-80039f34: 8fc20118 lw v0,280(s8)
-80039f38: 00603821 move a3,v1
-80039f3c: 00a03021 move a2,a1
-80039f40: 00802821 move a1,a0
-80039f44: 8fc40108 lw a0,264(s8)
-80039f48: 0040f809 jalr v0
-80039f4c: 00000000 nop
- get_arg_in_size(argsize, &arg, 0);
-
- calculate_real_padding();
- write_padding();
-
- for(x=19;x>=0;x--)
-80039f50: 8fc20034 lw v0,52(s8)
-80039f54: 00000000 nop
-80039f58: 2442ffff addiu v0,v0,-1
-80039f5c: afc20034 sw v0,52(s8)
-80039f60: 8fc20034 lw v0,52(s8)
-80039f64: 00000000 nop
-80039f68: 0441ff7d bgez v0,80039d60 <__vsnprintf_internal+0xb54>
-80039f6c: 00000000 nop
-
- put_in_string(string, ssz, b + '0', string_pos++);
- }
- }
-
- write_neg_padding();
-80039f70: 8fc2002c lw v0,44(s8)
-80039f74: 00000000 nop
-80039f78: 30420004 andi v0,v0,0x4
-80039f7c: 1040001a beqz v0,80039fe8 <__vsnprintf_internal+0xddc>
-80039f80: 00000000 nop
-80039f84: afc00034 sw zero,52(s8)
-80039f88: 10000011 b 80039fd0 <__vsnprintf_internal+0xdc4>
-80039f8c: 00000000 nop
-80039f90: 8fc4004c lw a0,76(s8)
-80039f94: 8fc30018 lw v1,24(s8)
-80039f98: 00000000 nop
-80039f9c: 24620001 addiu v0,v1,1
-80039fa0: afc20018 sw v0,24(s8)
-80039fa4: 8fc20118 lw v0,280(s8)
-80039fa8: 00603821 move a3,v1
-80039fac: 24060020 li a2,32
-80039fb0: 00802821 move a1,a0
-80039fb4: 8fc40108 lw a0,264(s8)
-80039fb8: 0040f809 jalr v0
-80039fbc: 00000000 nop
-80039fc0: 8fc20034 lw v0,52(s8)
-80039fc4: 00000000 nop
-80039fc8: 24420001 addiu v0,v0,1
-80039fcc: afc20034 sw v0,52(s8)
-80039fd0: 8fc30034 lw v1,52(s8)
-80039fd4: 8fc20054 lw v0,84(s8)
-80039fd8: 00000000 nop
-80039fdc: 0062102a slt v0,v1,v0
-80039fe0: 1440ffeb bnez v0,80039f90 <__vsnprintf_internal+0xd84>
-80039fe4: 00000000 nop
-
- directive_coming = 0;
-80039fe8: afc00028 sw zero,40(s8)
- break;
-80039fec: 10000422 b 8003b078 <__vsnprintf_internal+0x1e6c>
-80039ff0: 00000000 nop
- case 'x': // Hexadecimal
- case 'X': // Hexadecimal with big letters
- case 'p': // Hexadecimal with small letters with '0x' prefix
- empty_digit = 1;
-80039ff4: 24020001 li v0,1
-80039ff8: afc20048 sw v0,72(s8)
-
- if(argsize < SPRINTF_SIZE_LONG_LONG)
-80039ffc: 8fc20030 lw v0,48(s8)
-8003a000: 00000000 nop
-8003a004: 28420004 slti v0,v0,4
-8003a008: 1040000f beqz v0,8003a048 <__vsnprintf_internal+0xe3c>
-8003a00c: 00000000 nop
- arg = (unsigned long long)va_arg(ap, unsigned int);
-8003a010: 8fc30114 lw v1,276(s8)
-8003a014: 00000000 nop
-8003a018: 24620004 addiu v0,v1,4
-8003a01c: afc20114 sw v0,276(s8)
-8003a020: 8c620000 lw v0,0(v1)
-8003a024: 00000000 nop
-8003a028: afc200b8 sw v0,184(s8)
-8003a02c: afc000bc sw zero,188(s8)
-8003a030: 8fc200b8 lw v0,184(s8)
-8003a034: 8fc300bc lw v1,188(s8)
-8003a038: afc20070 sw v0,112(s8)
-8003a03c: afc30074 sw v1,116(s8)
-8003a040: 1000000c b 8003a074 <__vsnprintf_internal+0xe68>
-8003a044: 00000000 nop
- else
- arg = va_arg(ap, unsigned long long int);
-8003a048: 8fc20114 lw v0,276(s8)
-8003a04c: 00000000 nop
-8003a050: 24430007 addiu v1,v0,7
-8003a054: 2402fff8 li v0,-8
-8003a058: 00621824 and v1,v1,v0
-8003a05c: 24620008 addiu v0,v1,8
-8003a060: afc20114 sw v0,276(s8)
-8003a064: 8c620000 lw v0,0(v1)
-8003a068: 8c630004 lw v1,4(v1)
-8003a06c: afc20070 sw v0,112(s8)
-8003a070: afc30074 sw v1,116(s8)
-
- get_arg_in_size(argsize, &arg, 0);
-8003a074: 27c20070 addiu v0,s8,112
-8003a078: 00003021 move a2,zero
-8003a07c: 00402821 move a1,v0
-8003a080: 8fc40030 lw a0,48(s8)
-8003a084: 0c00e13a jal 800384e8 <get_arg_in_size>
-8003a088: 00000000 nop
-
- if(fmt_pos == 'p')
-8003a08c: 8fc3001c lw v1,28(s8)
-8003a090: 24020070 li v0,112
-8003a094: 14620005 bne v1,v0,8003a0ac <__vsnprintf_internal+0xea0>
-8003a098: 00000000 nop
- flags |= SPRINTF_ALT_FLAG;
-8003a09c: 8fc2002c lw v0,44(s8)
-8003a0a0: 00000000 nop
-8003a0a4: 34420001 ori v0,v0,0x1
-8003a0a8: afc2002c sw v0,44(s8)
-
- if(flags & SPRINTF_ALT_FLAG)
-8003a0ac: 8fc2002c lw v0,44(s8)
-8003a0b0: 00000000 nop
-8003a0b4: 30420001 andi v0,v0,0x1
-8003a0b8: 1040002f beqz v0,8003a178 <__vsnprintf_internal+0xf6c>
-8003a0bc: 00000000 nop
- {
- put_in_string(string, ssz, '0', string_pos++);
-8003a0c0: 8fc4004c lw a0,76(s8)
-8003a0c4: 8fc30018 lw v1,24(s8)
-8003a0c8: 00000000 nop
-8003a0cc: 24620001 addiu v0,v1,1
-8003a0d0: afc20018 sw v0,24(s8)
-8003a0d4: 8fc20118 lw v0,280(s8)
-8003a0d8: 00603821 move a3,v1
-8003a0dc: 24060030 li a2,48
-8003a0e0: 00802821 move a1,a0
-8003a0e4: 8fc40108 lw a0,264(s8)
-8003a0e8: 0040f809 jalr v0
-8003a0ec: 00000000 nop
-
- if(fmt[fmt_pos] == 'X')
-8003a0f0: 8fc3001c lw v1,28(s8)
-8003a0f4: 8fc20110 lw v0,272(s8)
-8003a0f8: 00000000 nop
-8003a0fc: 00431021 addu v0,v0,v1
-8003a100: 80430000 lb v1,0(v0)
-8003a104: 24020058 li v0,88
-8003a108: 1462000f bne v1,v0,8003a148 <__vsnprintf_internal+0xf3c>
-8003a10c: 00000000 nop
- put_in_string(string, ssz, 'X', string_pos++);
-8003a110: 8fc4004c lw a0,76(s8)
-8003a114: 8fc30018 lw v1,24(s8)
-8003a118: 00000000 nop
-8003a11c: 24620001 addiu v0,v1,1
-8003a120: afc20018 sw v0,24(s8)
-8003a124: 8fc20118 lw v0,280(s8)
-8003a128: 00603821 move a3,v1
-8003a12c: 24060058 li a2,88
-8003a130: 00802821 move a1,a0
-8003a134: 8fc40108 lw a0,264(s8)
-8003a138: 0040f809 jalr v0
-8003a13c: 00000000 nop
-8003a140: 1000000d b 8003a178 <__vsnprintf_internal+0xf6c>
-8003a144: 00000000 nop
- else
- put_in_string(string, ssz, 'x', string_pos++);
-8003a148: 8fc4004c lw a0,76(s8)
-8003a14c: 8fc30018 lw v1,24(s8)
-8003a150: 00000000 nop
-8003a154: 24620001 addiu v0,v1,1
-8003a158: afc20018 sw v0,24(s8)
-8003a15c: 8fc20118 lw v0,280(s8)
-8003a160: 00603821 move a3,v1
-8003a164: 24060078 li a2,120
-8003a168: 00802821 move a1,a0
-8003a16c: 8fc40108 lw a0,264(s8)
-8003a170: 0040f809 jalr v0
-8003a174: 00000000 nop
- }
-
- calculate_real_padding_hex();
-8003a178: afc0005c sw zero,92(s8)
-8003a17c: afc00034 sw zero,52(s8)
-8003a180: 10000026 b 8003a21c <__vsnprintf_internal+0x1010>
-8003a184: 00000000 nop
-8003a188: 8fc40070 lw a0,112(s8)
-8003a18c: 8fc50074 lw a1,116(s8)
-8003a190: 8fc20034 lw v0,52(s8)
-8003a194: 00000000 nop
-8003a198: 00021880 sll v1,v0,0x2
-8003a19c: 30620020 andi v0,v1,0x20
-8003a1a0: 10400005 beqz v0,8003a1b8 <__vsnprintf_internal+0xfac>
-8003a1a4: 00000000 nop
-8003a1a8: 00658006 srlv s0,a1,v1
-8003a1ac: 00008821 move s1,zero
-8003a1b0: 10000008 b 8003a1d4 <__vsnprintf_internal+0xfc8>
-8003a1b4: 00000000 nop
-8003a1b8: 00053040 sll a2,a1,0x1
-8003a1bc: 2402ffff li v0,-1
-8003a1c0: 00621026 xor v0,v1,v0
-8003a1c4: 00461004 sllv v0,a2,v0
-8003a1c8: 00648006 srlv s0,a0,v1
-8003a1cc: 00508025 or s0,v0,s0
-8003a1d0: 00658806 srlv s1,a1,v1
-8003a1d4: 3202000f andi v0,s0,0xf
-8003a1d8: afc200c0 sw v0,192(s8)
-8003a1dc: 32220000 andi v0,s1,0x0
-8003a1e0: afc200c4 sw v0,196(s8)
-8003a1e4: 8fc400c0 lw a0,192(s8)
-8003a1e8: 8fc500c4 lw a1,196(s8)
-8003a1ec: 00801021 move v0,a0
-8003a1f0: 00a01821 move v1,a1
-8003a1f4: 00431025 or v0,v0,v1
-8003a1f8: 10400004 beqz v0,8003a20c <__vsnprintf_internal+0x1000>
-8003a1fc: 00000000 nop
-8003a200: 8fc20034 lw v0,52(s8)
-8003a204: 00000000 nop
-8003a208: afc2005c sw v0,92(s8)
-8003a20c: 8fc20034 lw v0,52(s8)
-8003a210: 00000000 nop
-8003a214: 24420001 addiu v0,v0,1
-8003a218: afc20034 sw v0,52(s8)
-8003a21c: 8fc20034 lw v0,52(s8)
-8003a220: 00000000 nop
-8003a224: 28420010 slti v0,v0,16
-8003a228: 1440ffd7 bnez v0,8003a188 <__vsnprintf_internal+0xf7c>
-8003a22c: 00000000 nop
-8003a230: 8fc20054 lw v0,84(s8)
-8003a234: 00000000 nop
-8003a238: 2443ffff addiu v1,v0,-1
-8003a23c: 8fc2005c lw v0,92(s8)
-8003a240: 00000000 nop
-8003a244: 00621023 subu v0,v1,v0
-8003a248: afc20054 sw v0,84(s8)
-8003a24c: 8fc20054 lw v0,84(s8)
-8003a250: 00000000 nop
-8003a254: 04410002 bgez v0,8003a260 <__vsnprintf_internal+0x1054>
-8003a258: 00000000 nop
-8003a25c: afc00054 sw zero,84(s8)
- write_padding();
-8003a260: 8fc2002c lw v0,44(s8)
-8003a264: 00000000 nop
-8003a268: 30420004 andi v0,v0,0x4
-8003a26c: 1440002d bnez v0,8003a324 <__vsnprintf_internal+0x1118>
-8003a270: 00000000 nop
-8003a274: afc00034 sw zero,52(s8)
-8003a278: 10000024 b 8003a30c <__vsnprintf_internal+0x1100>
-8003a27c: 00000000 nop
-8003a280: 8fc2002c lw v0,44(s8)
-8003a284: 00000000 nop
-8003a288: 30420002 andi v0,v0,0x2
-8003a28c: 1040000f beqz v0,8003a2cc <__vsnprintf_internal+0x10c0>
-8003a290: 00000000 nop
-8003a294: 8fc4004c lw a0,76(s8)
-8003a298: 8fc30018 lw v1,24(s8)
-8003a29c: 00000000 nop
-8003a2a0: 24620001 addiu v0,v1,1
-8003a2a4: afc20018 sw v0,24(s8)
-8003a2a8: 8fc20118 lw v0,280(s8)
-8003a2ac: 00603821 move a3,v1
-8003a2b0: 24060030 li a2,48
-8003a2b4: 00802821 move a1,a0
-8003a2b8: 8fc40108 lw a0,264(s8)
-8003a2bc: 0040f809 jalr v0
-8003a2c0: 00000000 nop
-8003a2c4: 1000000d b 8003a2fc <__vsnprintf_internal+0x10f0>
-8003a2c8: 00000000 nop
-8003a2cc: 8fc4004c lw a0,76(s8)
-8003a2d0: 8fc30018 lw v1,24(s8)
-8003a2d4: 00000000 nop
-8003a2d8: 24620001 addiu v0,v1,1
-8003a2dc: afc20018 sw v0,24(s8)
-8003a2e0: 8fc20118 lw v0,280(s8)
-8003a2e4: 00603821 move a3,v1
-8003a2e8: 24060020 li a2,32
-8003a2ec: 00802821 move a1,a0
-8003a2f0: 8fc40108 lw a0,264(s8)
-8003a2f4: 0040f809 jalr v0
-8003a2f8: 00000000 nop
-8003a2fc: 8fc20034 lw v0,52(s8)
-8003a300: 00000000 nop
-8003a304: 24420001 addiu v0,v0,1
-8003a308: afc20034 sw v0,52(s8)
-8003a30c: 8fc30034 lw v1,52(s8)
-8003a310: 8fc20054 lw v0,84(s8)
-8003a314: 00000000 nop
-8003a318: 0062102a slt v0,v1,v0
-8003a31c: 1440ffd8 bnez v0,8003a280 <__vsnprintf_internal+0x1074>
-8003a320: 00000000 nop
-
- for(x=15;x>=0;x--)
-8003a324: 2402000f li v0,15
-8003a328: afc20034 sw v0,52(s8)
-8003a32c: 10000085 b 8003a544 <__vsnprintf_internal+0x1338>
-8003a330: 00000000 nop
- {
- y = arg >> (x << 2);
-8003a334: 8fc40070 lw a0,112(s8)
-8003a338: 8fc50074 lw a1,116(s8)
-8003a33c: 8fc20034 lw v0,52(s8)
-8003a340: 00000000 nop
-8003a344: 00021880 sll v1,v0,0x2
-8003a348: 30620020 andi v0,v1,0x20
-8003a34c: 10400005 beqz v0,8003a364 <__vsnprintf_internal+0x1158>
-8003a350: 00000000 nop
-8003a354: 00659006 srlv s2,a1,v1
-8003a358: 00009821 move s3,zero
-8003a35c: 10000008 b 8003a380 <__vsnprintf_internal+0x1174>
-8003a360: 00000000 nop
-8003a364: 00053040 sll a2,a1,0x1
-8003a368: 2402ffff li v0,-1
-8003a36c: 00621026 xor v0,v1,v0
-8003a370: 00461004 sllv v0,a2,v0
-8003a374: 00649006 srlv s2,a0,v1
-8003a378: 00529025 or s2,v0,s2
-8003a37c: 00659806 srlv s3,a1,v1
-8003a380: afd20038 sw s2,56(s8)
- y &= 0xf;
-8003a384: 8fc20038 lw v0,56(s8)
-8003a388: 00000000 nop
-8003a38c: 3042000f andi v0,v0,0xf
-8003a390: afc20038 sw v0,56(s8)
-
- if(y>=1)
-8003a394: 8fc20038 lw v0,56(s8)
-8003a398: 00000000 nop
-8003a39c: 18400002 blez v0,8003a3a8 <__vsnprintf_internal+0x119c>
-8003a3a0: 00000000 nop
- empty_digit = 0;
-8003a3a4: afc00048 sw zero,72(s8)
-
- if(empty_digit == 0 || x == 0)
-8003a3a8: 8fc20048 lw v0,72(s8)
-8003a3ac: 00000000 nop
-8003a3b0: 10400005 beqz v0,8003a3c8 <__vsnprintf_internal+0x11bc>
-8003a3b4: 00000000 nop
-8003a3b8: 8fc20034 lw v0,52(s8)
-8003a3bc: 00000000 nop
-8003a3c0: 1440005c bnez v0,8003a534 <__vsnprintf_internal+0x1328>
-8003a3c4: 00000000 nop
- {
- if(y>=0 && y<=9)
-8003a3c8: 8fc20038 lw v0,56(s8)
-8003a3cc: 00000000 nop
-8003a3d0: 0440001c bltz v0,8003a444 <__vsnprintf_internal+0x1238>
-8003a3d4: 00000000 nop
-8003a3d8: 8fc20038 lw v0,56(s8)
-8003a3dc: 00000000 nop
-8003a3e0: 2842000a slti v0,v0,10
-8003a3e4: 10400017 beqz v0,8003a444 <__vsnprintf_internal+0x1238>
-8003a3e8: 00000000 nop
- put_in_string(string, ssz, y + '0', string_pos++);
-8003a3ec: 8fc4004c lw a0,76(s8)
-8003a3f0: 8fc20038 lw v0,56(s8)
-8003a3f4: 00000000 nop
-8003a3f8: 304200ff andi v0,v0,0xff
-8003a3fc: 24420030 addiu v0,v0,48
-8003a400: 304200ff andi v0,v0,0xff
-8003a404: 00021600 sll v0,v0,0x18
-8003a408: 00021603 sra v0,v0,0x18
-8003a40c: 00402821 move a1,v0
-8003a410: 8fc30018 lw v1,24(s8)
-8003a414: 00000000 nop
-8003a418: 24620001 addiu v0,v1,1
-8003a41c: afc20018 sw v0,24(s8)
-8003a420: 8fc20118 lw v0,280(s8)
-8003a424: 00603821 move a3,v1
-8003a428: 00a03021 move a2,a1
-8003a42c: 00802821 move a1,a0
-8003a430: 8fc40108 lw a0,264(s8)
-8003a434: 0040f809 jalr v0
-8003a438: 00000000 nop
-8003a43c: 1000003d b 8003a534 <__vsnprintf_internal+0x1328>
-8003a440: 00000000 nop
- else if(y>=0xA && y<=0xF)
-8003a444: 8fc20038 lw v0,56(s8)
-8003a448: 00000000 nop
-8003a44c: 2842000a slti v0,v0,10
-8003a450: 14400038 bnez v0,8003a534 <__vsnprintf_internal+0x1328>
-8003a454: 00000000 nop
-8003a458: 8fc20038 lw v0,56(s8)
-8003a45c: 00000000 nop
-8003a460: 28420010 slti v0,v0,16
-8003a464: 10400033 beqz v0,8003a534 <__vsnprintf_internal+0x1328>
-8003a468: 00000000 nop
- {
- if(fmt[fmt_pos] == 'X')
-8003a46c: 8fc3001c lw v1,28(s8)
-8003a470: 8fc20110 lw v0,272(s8)
-8003a474: 00000000 nop
-8003a478: 00431021 addu v0,v0,v1
-8003a47c: 80430000 lb v1,0(v0)
-8003a480: 24020058 li v0,88
-8003a484: 14620017 bne v1,v0,8003a4e4 <__vsnprintf_internal+0x12d8>
-8003a488: 00000000 nop
- put_in_string(string, ssz, (y - 0xa) + 'A', string_pos++);
-8003a48c: 8fc4004c lw a0,76(s8)
-8003a490: 8fc20038 lw v0,56(s8)
-8003a494: 00000000 nop
-8003a498: 304200ff andi v0,v0,0xff
-8003a49c: 24420037 addiu v0,v0,55
-8003a4a0: 304200ff andi v0,v0,0xff
-8003a4a4: 00021600 sll v0,v0,0x18
-8003a4a8: 00021603 sra v0,v0,0x18
-8003a4ac: 00402821 move a1,v0
-8003a4b0: 8fc30018 lw v1,24(s8)
-8003a4b4: 00000000 nop
-8003a4b8: 24620001 addiu v0,v1,1
-8003a4bc: afc20018 sw v0,24(s8)
-8003a4c0: 8fc20118 lw v0,280(s8)
-8003a4c4: 00603821 move a3,v1
-8003a4c8: 00a03021 move a2,a1
-8003a4cc: 00802821 move a1,a0
-8003a4d0: 8fc40108 lw a0,264(s8)
-8003a4d4: 0040f809 jalr v0
-8003a4d8: 00000000 nop
-8003a4dc: 10000015 b 8003a534 <__vsnprintf_internal+0x1328>
-8003a4e0: 00000000 nop
- else
- put_in_string(string, ssz, (y - 0xa) + 'a', string_pos++);
-8003a4e4: 8fc4004c lw a0,76(s8)
-8003a4e8: 8fc20038 lw v0,56(s8)
-8003a4ec: 00000000 nop
-8003a4f0: 304200ff andi v0,v0,0xff
-8003a4f4: 24420057 addiu v0,v0,87
-8003a4f8: 304200ff andi v0,v0,0xff
-8003a4fc: 00021600 sll v0,v0,0x18
-8003a500: 00021603 sra v0,v0,0x18
-8003a504: 00402821 move a1,v0
-8003a508: 8fc30018 lw v1,24(s8)
-8003a50c: 00000000 nop
-8003a510: 24620001 addiu v0,v1,1
-8003a514: afc20018 sw v0,24(s8)
-8003a518: 8fc20118 lw v0,280(s8)
-8003a51c: 00603821 move a3,v1
-8003a520: 00a03021 move a2,a1
-8003a524: 00802821 move a1,a0
-8003a528: 8fc40108 lw a0,264(s8)
-8003a52c: 0040f809 jalr v0
-8003a530: 00000000 nop
- }
-
- calculate_real_padding_hex();
- write_padding();
-
- for(x=15;x>=0;x--)
-8003a534: 8fc20034 lw v0,52(s8)
-8003a538: 00000000 nop
-8003a53c: 2442ffff addiu v0,v0,-1
-8003a540: afc20034 sw v0,52(s8)
-8003a544: 8fc20034 lw v0,52(s8)
-8003a548: 00000000 nop
-8003a54c: 0441ff79 bgez v0,8003a334 <__vsnprintf_internal+0x1128>
-8003a550: 00000000 nop
- put_in_string(string, ssz, (y - 0xa) + 'a', string_pos++);
- }
- }
- }
-
- write_neg_padding();
-8003a554: 8fc2002c lw v0,44(s8)
-8003a558: 00000000 nop
-8003a55c: 30420004 andi v0,v0,0x4
-8003a560: 1040001a beqz v0,8003a5cc <__vsnprintf_internal+0x13c0>
-8003a564: 00000000 nop
-8003a568: afc00034 sw zero,52(s8)
-8003a56c: 10000011 b 8003a5b4 <__vsnprintf_internal+0x13a8>
-8003a570: 00000000 nop
-8003a574: 8fc4004c lw a0,76(s8)
-8003a578: 8fc30018 lw v1,24(s8)
-8003a57c: 00000000 nop
-8003a580: 24620001 addiu v0,v1,1
-8003a584: afc20018 sw v0,24(s8)
-8003a588: 8fc20118 lw v0,280(s8)
-8003a58c: 00603821 move a3,v1
-8003a590: 24060020 li a2,32
-8003a594: 00802821 move a1,a0
-8003a598: 8fc40108 lw a0,264(s8)
-8003a59c: 0040f809 jalr v0
-8003a5a0: 00000000 nop
-8003a5a4: 8fc20034 lw v0,52(s8)
-8003a5a8: 00000000 nop
-8003a5ac: 24420001 addiu v0,v0,1
-8003a5b0: afc20034 sw v0,52(s8)
-8003a5b4: 8fc30034 lw v1,52(s8)
-8003a5b8: 8fc20054 lw v0,84(s8)
-8003a5bc: 00000000 nop
-8003a5c0: 0062102a slt v0,v1,v0
-8003a5c4: 1440ffeb bnez v0,8003a574 <__vsnprintf_internal+0x1368>
-8003a5c8: 00000000 nop
-
- directive_coming = 0;
-8003a5cc: afc00028 sw zero,40(s8)
- break;
-8003a5d0: 100002a9 b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003a5d4: 00000000 nop
- case 'c': // character
- arg = va_arg(ap, int);
-8003a5d8: 8fc30114 lw v1,276(s8)
-8003a5dc: 00000000 nop
-8003a5e0: 24620004 addiu v0,v1,4
-8003a5e4: afc20114 sw v0,276(s8)
-8003a5e8: 8c620000 lw v0,0(v1)
-8003a5ec: 00000000 nop
-8003a5f0: afc200c8 sw v0,200(s8)
-8003a5f4: 000217c3 sra v0,v0,0x1f
-8003a5f8: afc200cc sw v0,204(s8)
-8003a5fc: 8fc200c8 lw v0,200(s8)
-8003a600: 8fc300cc lw v1,204(s8)
-8003a604: afc20070 sw v0,112(s8)
-8003a608: afc30074 sw v1,116(s8)
-
- put_in_string(string, ssz, arg & 0xff, string_pos++);
-8003a60c: 8fc4004c lw a0,76(s8)
-8003a610: 8fc20070 lw v0,112(s8)
-8003a614: 8fc30074 lw v1,116(s8)
-8003a618: 00021600 sll v0,v0,0x18
-8003a61c: 00021603 sra v0,v0,0x18
-8003a620: 00402821 move a1,v0
-8003a624: 8fc30018 lw v1,24(s8)
-8003a628: 00000000 nop
-8003a62c: 24620001 addiu v0,v1,1
-8003a630: afc20018 sw v0,24(s8)
-8003a634: 8fc20118 lw v0,280(s8)
-8003a638: 00603821 move a3,v1
-8003a63c: 00a03021 move a2,a1
-8003a640: 00802821 move a1,a0
-8003a644: 8fc40108 lw a0,264(s8)
-8003a648: 0040f809 jalr v0
-8003a64c: 00000000 nop
-
- directive_coming = 0;
-8003a650: afc00028 sw zero,40(s8)
- break;
-8003a654: 10000288 b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003a658: 00000000 nop
- case 's': // string
- argcp = va_arg(ap, char *);
-8003a65c: 8fc30114 lw v1,276(s8)
-8003a660: 00000000 nop
-8003a664: 24620004 addiu v0,v1,4
-8003a668: afc20114 sw v0,276(s8)
-8003a66c: 8c620000 lw v0,0(v1)
-8003a670: 00000000 nop
-8003a674: afc20020 sw v0,32(s8)
- argcp_tmp = argcp;
-8003a678: 8fc20020 lw v0,32(s8)
-8003a67c: 00000000 nop
-8003a680: afc20024 sw v0,36(s8)
-
- if(argcp == NULL)
-8003a684: 8fc20020 lw v0,32(s8)
-8003a688: 00000000 nop
-8003a68c: 14400058 bnez v0,8003a7f0 <__vsnprintf_internal+0x15e4>
-8003a690: 00000000 nop
- {
- // Non standard extension, but supported by Linux and the BSDs.
-
- put_in_string(string, ssz, '(', string_pos++);
-8003a694: 8fc4004c lw a0,76(s8)
-8003a698: 8fc30018 lw v1,24(s8)
-8003a69c: 00000000 nop
-8003a6a0: 24620001 addiu v0,v1,1
-8003a6a4: afc20018 sw v0,24(s8)
-8003a6a8: 8fc20118 lw v0,280(s8)
-8003a6ac: 00603821 move a3,v1
-8003a6b0: 24060028 li a2,40
-8003a6b4: 00802821 move a1,a0
-8003a6b8: 8fc40108 lw a0,264(s8)
-8003a6bc: 0040f809 jalr v0
-8003a6c0: 00000000 nop
- put_in_string(string, ssz, 'n', string_pos++);
-8003a6c4: 8fc4004c lw a0,76(s8)
-8003a6c8: 8fc30018 lw v1,24(s8)
-8003a6cc: 00000000 nop
-8003a6d0: 24620001 addiu v0,v1,1
-8003a6d4: afc20018 sw v0,24(s8)
-8003a6d8: 8fc20118 lw v0,280(s8)
-8003a6dc: 00603821 move a3,v1
-8003a6e0: 2406006e li a2,110
-8003a6e4: 00802821 move a1,a0
-8003a6e8: 8fc40108 lw a0,264(s8)
-8003a6ec: 0040f809 jalr v0
-8003a6f0: 00000000 nop
- put_in_string(string, ssz, 'u', string_pos++);
-8003a6f4: 8fc4004c lw a0,76(s8)
-8003a6f8: 8fc30018 lw v1,24(s8)
-8003a6fc: 00000000 nop
-8003a700: 24620001 addiu v0,v1,1
-8003a704: afc20018 sw v0,24(s8)
-8003a708: 8fc20118 lw v0,280(s8)
-8003a70c: 00603821 move a3,v1
-8003a710: 24060075 li a2,117
-8003a714: 00802821 move a1,a0
-8003a718: 8fc40108 lw a0,264(s8)
-8003a71c: 0040f809 jalr v0
-8003a720: 00000000 nop
- put_in_string(string, ssz, 'l', string_pos++);
-8003a724: 8fc4004c lw a0,76(s8)
-8003a728: 8fc30018 lw v1,24(s8)
-8003a72c: 00000000 nop
-8003a730: 24620001 addiu v0,v1,1
-8003a734: afc20018 sw v0,24(s8)
-8003a738: 8fc20118 lw v0,280(s8)
-8003a73c: 00603821 move a3,v1
-8003a740: 2406006c li a2,108
-8003a744: 00802821 move a1,a0
-8003a748: 8fc40108 lw a0,264(s8)
-8003a74c: 0040f809 jalr v0
-8003a750: 00000000 nop
- put_in_string(string, ssz, 'l', string_pos++);
-8003a754: 8fc4004c lw a0,76(s8)
-8003a758: 8fc30018 lw v1,24(s8)
-8003a75c: 00000000 nop
-8003a760: 24620001 addiu v0,v1,1
-8003a764: afc20018 sw v0,24(s8)
-8003a768: 8fc20118 lw v0,280(s8)
-8003a76c: 00603821 move a3,v1
-8003a770: 2406006c li a2,108
-8003a774: 00802821 move a1,a0
-8003a778: 8fc40108 lw a0,264(s8)
-8003a77c: 0040f809 jalr v0
-8003a780: 00000000 nop
- put_in_string(string, ssz, ')', string_pos++);
-8003a784: 8fc4004c lw a0,76(s8)
-8003a788: 8fc30018 lw v1,24(s8)
-8003a78c: 00000000 nop
-8003a790: 24620001 addiu v0,v1,1
-8003a794: afc20018 sw v0,24(s8)
-8003a798: 8fc20118 lw v0,280(s8)
-8003a79c: 00603821 move a3,v1
-8003a7a0: 24060029 li a2,41
-8003a7a4: 00802821 move a1,a0
-8003a7a8: 8fc40108 lw a0,264(s8)
-8003a7ac: 0040f809 jalr v0
-8003a7b0: 00000000 nop
-
- directive_coming = 0;
-8003a7b4: afc00028 sw zero,40(s8)
- break;
-8003a7b8: 1000022f b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003a7bc: 00000000 nop
- }
-
- while(*argcp_tmp)
- {
- if(pad_quantity > 0) pad_quantity--;
-8003a7c0: 8fc20054 lw v0,84(s8)
-8003a7c4: 00000000 nop
-8003a7c8: 18400005 blez v0,8003a7e0 <__vsnprintf_internal+0x15d4>
-8003a7cc: 00000000 nop
-8003a7d0: 8fc20054 lw v0,84(s8)
-8003a7d4: 00000000 nop
-8003a7d8: 2442ffff addiu v0,v0,-1
-8003a7dc: afc20054 sw v0,84(s8)
- argcp_tmp++;
-8003a7e0: 8fc20024 lw v0,36(s8)
-8003a7e4: 00000000 nop
-8003a7e8: 24420001 addiu v0,v0,1
-8003a7ec: afc20024 sw v0,36(s8)
-
- directive_coming = 0;
- break;
- }
-
- while(*argcp_tmp)
-8003a7f0: 8fc20024 lw v0,36(s8)
-8003a7f4: 00000000 nop
-8003a7f8: 80420000 lb v0,0(v0)
-8003a7fc: 00000000 nop
-8003a800: 1440ffef bnez v0,8003a7c0 <__vsnprintf_internal+0x15b4>
-8003a804: 00000000 nop
- {
- if(pad_quantity > 0) pad_quantity--;
- argcp_tmp++;
- }
-
- if(!(flags & SPRINTF_NEGFIELD_FLAG))
-8003a808: 8fc2002c lw v0,44(s8)
-8003a80c: 00000000 nop
-8003a810: 30420004 andi v0,v0,0x4
-8003a814: 1440002e bnez v0,8003a8d0 <__vsnprintf_internal+0x16c4>
-8003a818: 00000000 nop
- {
- while(pad_quantity > 0)
-8003a81c: 10000011 b 8003a864 <__vsnprintf_internal+0x1658>
-8003a820: 00000000 nop
- {
- put_in_string(string,ssz, ' ', string_pos++);
-8003a824: 8fc4004c lw a0,76(s8)
-8003a828: 8fc30018 lw v1,24(s8)
-8003a82c: 00000000 nop
-8003a830: 24620001 addiu v0,v1,1
-8003a834: afc20018 sw v0,24(s8)
-8003a838: 8fc20118 lw v0,280(s8)
-8003a83c: 00603821 move a3,v1
-8003a840: 24060020 li a2,32
-8003a844: 00802821 move a1,a0
-8003a848: 8fc40108 lw a0,264(s8)
-8003a84c: 0040f809 jalr v0
-8003a850: 00000000 nop
- pad_quantity--;
-8003a854: 8fc20054 lw v0,84(s8)
-8003a858: 00000000 nop
-8003a85c: 2442ffff addiu v0,v0,-1
-8003a860: afc20054 sw v0,84(s8)
- argcp_tmp++;
- }
-
- if(!(flags & SPRINTF_NEGFIELD_FLAG))
- {
- while(pad_quantity > 0)
-8003a864: 8fc20054 lw v0,84(s8)
-8003a868: 00000000 nop
-8003a86c: 1c40ffed bgtz v0,8003a824 <__vsnprintf_internal+0x1618>
-8003a870: 00000000 nop
- put_in_string(string,ssz, ' ', string_pos++);
- pad_quantity--;
- }
- }
-
- while(*argcp)
-8003a874: 10000016 b 8003a8d0 <__vsnprintf_internal+0x16c4>
-8003a878: 00000000 nop
- {
- put_in_string(string, ssz, *argcp, string_pos++);
-8003a87c: 8fc4004c lw a0,76(s8)
-8003a880: 8fc20020 lw v0,32(s8)
-8003a884: 00000000 nop
-8003a888: 80420000 lb v0,0(v0)
-8003a88c: 00000000 nop
-8003a890: 00402821 move a1,v0
-8003a894: 8fc30018 lw v1,24(s8)
-8003a898: 00000000 nop
-8003a89c: 24620001 addiu v0,v1,1
-8003a8a0: afc20018 sw v0,24(s8)
-8003a8a4: 8fc20118 lw v0,280(s8)
-8003a8a8: 00603821 move a3,v1
-8003a8ac: 00a03021 move a2,a1
-8003a8b0: 00802821 move a1,a0
-8003a8b4: 8fc40108 lw a0,264(s8)
-8003a8b8: 0040f809 jalr v0
-8003a8bc: 00000000 nop
-
- argcp++;
-8003a8c0: 8fc20020 lw v0,32(s8)
-8003a8c4: 00000000 nop
-8003a8c8: 24420001 addiu v0,v0,1
-8003a8cc: afc20020 sw v0,32(s8)
- put_in_string(string,ssz, ' ', string_pos++);
- pad_quantity--;
- }
- }
-
- while(*argcp)
-8003a8d0: 8fc20020 lw v0,32(s8)
-8003a8d4: 00000000 nop
-8003a8d8: 80420000 lb v0,0(v0)
-8003a8dc: 00000000 nop
-8003a8e0: 1440ffe6 bnez v0,8003a87c <__vsnprintf_internal+0x1670>
-8003a8e4: 00000000 nop
- put_in_string(string, ssz, *argcp, string_pos++);
-
- argcp++;
- }
-
- if(flags & SPRINTF_NEGFIELD_FLAG)
-8003a8e8: 8fc2002c lw v0,44(s8)
-8003a8ec: 00000000 nop
-8003a8f0: 30420004 andi v0,v0,0x4
-8003a8f4: 10400017 beqz v0,8003a954 <__vsnprintf_internal+0x1748>
-8003a8f8: 00000000 nop
- {
- while(pad_quantity > 0)
-8003a8fc: 10000011 b 8003a944 <__vsnprintf_internal+0x1738>
-8003a900: 00000000 nop
- {
- put_in_string(string,ssz, ' ', string_pos++);
-8003a904: 8fc4004c lw a0,76(s8)
-8003a908: 8fc30018 lw v1,24(s8)
-8003a90c: 00000000 nop
-8003a910: 24620001 addiu v0,v1,1
-8003a914: afc20018 sw v0,24(s8)
-8003a918: 8fc20118 lw v0,280(s8)
-8003a91c: 00603821 move a3,v1
-8003a920: 24060020 li a2,32
-8003a924: 00802821 move a1,a0
-8003a928: 8fc40108 lw a0,264(s8)
-8003a92c: 0040f809 jalr v0
-8003a930: 00000000 nop
- pad_quantity--;
-8003a934: 8fc20054 lw v0,84(s8)
-8003a938: 00000000 nop
-8003a93c: 2442ffff addiu v0,v0,-1
-8003a940: afc20054 sw v0,84(s8)
- argcp++;
- }
-
- if(flags & SPRINTF_NEGFIELD_FLAG)
- {
- while(pad_quantity > 0)
-8003a944: 8fc20054 lw v0,84(s8)
-8003a948: 00000000 nop
-8003a94c: 1c40ffed bgtz v0,8003a904 <__vsnprintf_internal+0x16f8>
-8003a950: 00000000 nop
- put_in_string(string,ssz, ' ', string_pos++);
- pad_quantity--;
- }
- }
-
- directive_coming = 0;
-8003a954: afc00028 sw zero,40(s8)
- break;
-8003a958: 100001c7 b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003a95c: 00000000 nop
- case 'o': // Octal
- empty_digit = 1;
-8003a960: 24020001 li v0,1
-8003a964: afc20048 sw v0,72(s8)
-
- if(argsize < SPRINTF_SIZE_LONG_LONG)
-8003a968: 8fc20030 lw v0,48(s8)
-8003a96c: 00000000 nop
-8003a970: 28420004 slti v0,v0,4
-8003a974: 1040000f beqz v0,8003a9b4 <__vsnprintf_internal+0x17a8>
-8003a978: 00000000 nop
- arg = (unsigned long long)va_arg(ap, unsigned int);
-8003a97c: 8fc30114 lw v1,276(s8)
-8003a980: 00000000 nop
-8003a984: 24620004 addiu v0,v1,4
-8003a988: afc20114 sw v0,276(s8)
-8003a98c: 8c620000 lw v0,0(v1)
-8003a990: 00000000 nop
-8003a994: afc200d0 sw v0,208(s8)
-8003a998: afc000d4 sw zero,212(s8)
-8003a99c: 8fc200d0 lw v0,208(s8)
-8003a9a0: 8fc300d4 lw v1,212(s8)
-8003a9a4: afc20070 sw v0,112(s8)
-8003a9a8: afc30074 sw v1,116(s8)
-8003a9ac: 1000000c b 8003a9e0 <__vsnprintf_internal+0x17d4>
-8003a9b0: 00000000 nop
- else
- arg = va_arg(ap, unsigned long long);
-8003a9b4: 8fc20114 lw v0,276(s8)
-8003a9b8: 00000000 nop
-8003a9bc: 24430007 addiu v1,v0,7
-8003a9c0: 2402fff8 li v0,-8
-8003a9c4: 00621824 and v1,v1,v0
-8003a9c8: 24620008 addiu v0,v1,8
-8003a9cc: afc20114 sw v0,276(s8)
-8003a9d0: 8c620000 lw v0,0(v1)
-8003a9d4: 8c630004 lw v1,4(v1)
-8003a9d8: afc20070 sw v0,112(s8)
-8003a9dc: afc30074 sw v1,116(s8)
-
- for(x=21;x>=0;x--)
-8003a9e0: 24020015 li v0,21
-8003a9e4: afc20034 sw v0,52(s8)
-8003a9e8: 10000040 b 8003aaec <__vsnprintf_internal+0x18e0>
-8003a9ec: 00000000 nop
- {
- y = arg >> (x * 3);
-8003a9f0: 8fc40070 lw a0,112(s8)
-8003a9f4: 8fc50074 lw a1,116(s8)
-8003a9f8: 8fc30034 lw v1,52(s8)
-8003a9fc: 00000000 nop
-8003aa00: 00601021 move v0,v1
-8003aa04: 00021040 sll v0,v0,0x1
-8003aa08: 00431821 addu v1,v0,v1
-8003aa0c: 30620020 andi v0,v1,0x20
-8003aa10: 10400005 beqz v0,8003aa28 <__vsnprintf_internal+0x181c>
-8003aa14: 00000000 nop
-8003aa18: 0065a006 srlv s4,a1,v1
-8003aa1c: 0000a821 move s5,zero
-8003aa20: 10000008 b 8003aa44 <__vsnprintf_internal+0x1838>
-8003aa24: 00000000 nop
-8003aa28: 00053040 sll a2,a1,0x1
-8003aa2c: 2402ffff li v0,-1
-8003aa30: 00621026 xor v0,v1,v0
-8003aa34: 00461004 sllv v0,a2,v0
-8003aa38: 0064a006 srlv s4,a0,v1
-8003aa3c: 0054a025 or s4,v0,s4
-8003aa40: 0065a806 srlv s5,a1,v1
-8003aa44: afd40038 sw s4,56(s8)
- y &= 0x7;
-8003aa48: 8fc20038 lw v0,56(s8)
-8003aa4c: 00000000 nop
-8003aa50: 30420007 andi v0,v0,0x7
-8003aa54: afc20038 sw v0,56(s8)
-
- if(y>=1)
-8003aa58: 8fc20038 lw v0,56(s8)
-8003aa5c: 00000000 nop
-8003aa60: 18400002 blez v0,8003aa6c <__vsnprintf_internal+0x1860>
-8003aa64: 00000000 nop
- empty_digit = 0;
-8003aa68: afc00048 sw zero,72(s8)
-
- if(empty_digit == 0 || x == 0)
-8003aa6c: 8fc20048 lw v0,72(s8)
-8003aa70: 00000000 nop
-8003aa74: 10400005 beqz v0,8003aa8c <__vsnprintf_internal+0x1880>
-8003aa78: 00000000 nop
-8003aa7c: 8fc20034 lw v0,52(s8)
-8003aa80: 00000000 nop
-8003aa84: 14400015 bnez v0,8003aadc <__vsnprintf_internal+0x18d0>
-8003aa88: 00000000 nop
- put_in_string(string, ssz, y + '0', string_pos++);
-8003aa8c: 8fc4004c lw a0,76(s8)
-8003aa90: 8fc20038 lw v0,56(s8)
-8003aa94: 00000000 nop
-8003aa98: 304200ff andi v0,v0,0xff
-8003aa9c: 24420030 addiu v0,v0,48
-8003aaa0: 304200ff andi v0,v0,0xff
-8003aaa4: 00021600 sll v0,v0,0x18
-8003aaa8: 00021603 sra v0,v0,0x18
-8003aaac: 00402821 move a1,v0
-8003aab0: 8fc30018 lw v1,24(s8)
-8003aab4: 00000000 nop
-8003aab8: 24620001 addiu v0,v1,1
-8003aabc: afc20018 sw v0,24(s8)
-8003aac0: 8fc20118 lw v0,280(s8)
-8003aac4: 00603821 move a3,v1
-8003aac8: 00a03021 move a2,a1
-8003aacc: 00802821 move a1,a0
-8003aad0: 8fc40108 lw a0,264(s8)
-8003aad4: 0040f809 jalr v0
-8003aad8: 00000000 nop
- if(argsize < SPRINTF_SIZE_LONG_LONG)
- arg = (unsigned long long)va_arg(ap, unsigned int);
- else
- arg = va_arg(ap, unsigned long long);
-
- for(x=21;x>=0;x--)
-8003aadc: 8fc20034 lw v0,52(s8)
-8003aae0: 00000000 nop
-8003aae4: 2442ffff addiu v0,v0,-1
-8003aae8: afc20034 sw v0,52(s8)
-8003aaec: 8fc20034 lw v0,52(s8)
-8003aaf0: 00000000 nop
-8003aaf4: 0441ffbe bgez v0,8003a9f0 <__vsnprintf_internal+0x17e4>
-8003aaf8: 00000000 nop
-
- if(empty_digit == 0 || x == 0)
- put_in_string(string, ssz, y + '0', string_pos++);
- }
-
- directive_coming = 0;
-8003aafc: afc00028 sw zero,40(s8)
- break;
-8003ab00: 1000015d b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003ab04: 00000000 nop
- case '@': // Binary
- empty_digit = 1;
-8003ab08: 24020001 li v0,1
-8003ab0c: afc20048 sw v0,72(s8)
-
- if(argsize < SPRINTF_SIZE_LONG_LONG)
-8003ab10: 8fc20030 lw v0,48(s8)
-8003ab14: 00000000 nop
-8003ab18: 28420004 slti v0,v0,4
-8003ab1c: 1040000f beqz v0,8003ab5c <__vsnprintf_internal+0x1950>
-8003ab20: 00000000 nop
- arg = (unsigned long long)va_arg(ap, unsigned int);
-8003ab24: 8fc30114 lw v1,276(s8)
-8003ab28: 00000000 nop
-8003ab2c: 24620004 addiu v0,v1,4
-8003ab30: afc20114 sw v0,276(s8)
-8003ab34: 8c620000 lw v0,0(v1)
-8003ab38: 00000000 nop
-8003ab3c: afc200d8 sw v0,216(s8)
-8003ab40: afc000dc sw zero,220(s8)
-8003ab44: 8fc200d8 lw v0,216(s8)
-8003ab48: 8fc300dc lw v1,220(s8)
-8003ab4c: afc20070 sw v0,112(s8)
-8003ab50: afc30074 sw v1,116(s8)
-8003ab54: 1000000c b 8003ab88 <__vsnprintf_internal+0x197c>
-8003ab58: 00000000 nop
- else
- arg = va_arg(ap, unsigned long long);
-8003ab5c: 8fc20114 lw v0,276(s8)
-8003ab60: 00000000 nop
-8003ab64: 24430007 addiu v1,v0,7
-8003ab68: 2402fff8 li v0,-8
-8003ab6c: 00621824 and v1,v1,v0
-8003ab70: 24620008 addiu v0,v1,8
-8003ab74: afc20114 sw v0,276(s8)
-8003ab78: 8c620000 lw v0,0(v1)
-8003ab7c: 8c630004 lw v1,4(v1)
-8003ab80: afc20070 sw v0,112(s8)
-8003ab84: afc30074 sw v1,116(s8)
-
- for(x=63;x>=0;x--)
-8003ab88: 2402003f li v0,63
-8003ab8c: afc20034 sw v0,52(s8)
-8003ab90: 10000044 b 8003aca4 <__vsnprintf_internal+0x1a98>
-8003ab94: 00000000 nop
- {
- y = (arg >> x);
-8003ab98: 8fc40070 lw a0,112(s8)
-8003ab9c: 8fc50074 lw a1,116(s8)
-8003aba0: 8fc20034 lw v0,52(s8)
-8003aba4: 00000000 nop
-8003aba8: 30420020 andi v0,v0,0x20
-8003abac: 10400007 beqz v0,8003abcc <__vsnprintf_internal+0x19c0>
-8003abb0: 00000000 nop
-8003abb4: 8fc20034 lw v0,52(s8)
-8003abb8: 00000000 nop
-8003abbc: 0045b006 srlv s6,a1,v0
-8003abc0: 0000b821 move s7,zero
-8003abc4: 1000000d b 8003abfc <__vsnprintf_internal+0x19f0>
-8003abc8: 00000000 nop
-8003abcc: 00053040 sll a2,a1,0x1
-8003abd0: 8fc30034 lw v1,52(s8)
-8003abd4: 2402ffff li v0,-1
-8003abd8: 00621026 xor v0,v1,v0
-8003abdc: 00461804 sllv v1,a2,v0
-8003abe0: 8fc20034 lw v0,52(s8)
-8003abe4: 00000000 nop
-8003abe8: 0044b006 srlv s6,a0,v0
-8003abec: 0076b025 or s6,v1,s6
-8003abf0: 8fc20034 lw v0,52(s8)
-8003abf4: 00000000 nop
-8003abf8: 0045b806 srlv s7,a1,v0
-8003abfc: afd60038 sw s6,56(s8)
- y &= 1;
-8003ac00: 8fc20038 lw v0,56(s8)
-8003ac04: 00000000 nop
-8003ac08: 30420001 andi v0,v0,0x1
-8003ac0c: afc20038 sw v0,56(s8)
-
- if(y>=1)
-8003ac10: 8fc20038 lw v0,56(s8)
-8003ac14: 00000000 nop
-8003ac18: 18400002 blez v0,8003ac24 <__vsnprintf_internal+0x1a18>
-8003ac1c: 00000000 nop
- empty_digit = 0;
-8003ac20: afc00048 sw zero,72(s8)
-
- if(empty_digit == 0 || x == 0)
-8003ac24: 8fc20048 lw v0,72(s8)
-8003ac28: 00000000 nop
-8003ac2c: 10400005 beqz v0,8003ac44 <__vsnprintf_internal+0x1a38>
-8003ac30: 00000000 nop
-8003ac34: 8fc20034 lw v0,52(s8)
-8003ac38: 00000000 nop
-8003ac3c: 14400015 bnez v0,8003ac94 <__vsnprintf_internal+0x1a88>
-8003ac40: 00000000 nop
- put_in_string(string, ssz, y + '0', string_pos++);
-8003ac44: 8fc4004c lw a0,76(s8)
-8003ac48: 8fc20038 lw v0,56(s8)
-8003ac4c: 00000000 nop
-8003ac50: 304200ff andi v0,v0,0xff
-8003ac54: 24420030 addiu v0,v0,48
-8003ac58: 304200ff andi v0,v0,0xff
-8003ac5c: 00021600 sll v0,v0,0x18
-8003ac60: 00021603 sra v0,v0,0x18
-8003ac64: 00402821 move a1,v0
-8003ac68: 8fc30018 lw v1,24(s8)
-8003ac6c: 00000000 nop
-8003ac70: 24620001 addiu v0,v1,1
-8003ac74: afc20018 sw v0,24(s8)
-8003ac78: 8fc20118 lw v0,280(s8)
-8003ac7c: 00603821 move a3,v1
-8003ac80: 00a03021 move a2,a1
-8003ac84: 00802821 move a1,a0
-8003ac88: 8fc40108 lw a0,264(s8)
-8003ac8c: 0040f809 jalr v0
-8003ac90: 00000000 nop
- if(argsize < SPRINTF_SIZE_LONG_LONG)
- arg = (unsigned long long)va_arg(ap, unsigned int);
- else
- arg = va_arg(ap, unsigned long long);
-
- for(x=63;x>=0;x--)
-8003ac94: 8fc20034 lw v0,52(s8)
-8003ac98: 00000000 nop
-8003ac9c: 2442ffff addiu v0,v0,-1
-8003aca0: afc20034 sw v0,52(s8)
-8003aca4: 8fc20034 lw v0,52(s8)
-8003aca8: 00000000 nop
-8003acac: 0441ffba bgez v0,8003ab98 <__vsnprintf_internal+0x198c>
-8003acb0: 00000000 nop
-
- if(empty_digit == 0 || x == 0)
- put_in_string(string, ssz, y + '0', string_pos++);
- }
-
- directive_coming = 0;
-8003acb4: afc00028 sw zero,40(s8)
- break;
-8003acb8: 100000ef b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003acbc: 00000000 nop
-
- case 'f':
- if(pad_quantity_f == -1)
-8003acc0: 8fc30058 lw v1,88(s8)
-8003acc4: 2402ffff li v0,-1
-8003acc8: 14620005 bne v1,v0,8003ace0 <__vsnprintf_internal+0x1ad4>
-8003accc: 00000000 nop
- pad_quantity_f = 6;
-8003acd0: 24020006 li v0,6
-8003acd4: afc20058 sw v0,88(s8)
-8003acd8: 1000000a b 8003ad04 <__vsnprintf_internal+0x1af8>
-8003acdc: 00000000 nop
- else
- {
- x = pad_quantity_f;
-8003ace0: 8fc20058 lw v0,88(s8)
-8003ace4: 00000000 nop
-8003ace8: afc20034 sw v0,52(s8)
- pad_quantity_f = pad_quantity;
-8003acec: 8fc20054 lw v0,84(s8)
-8003acf0: 00000000 nop
-8003acf4: afc20058 sw v0,88(s8)
- pad_quantity = x;
-8003acf8: 8fc20034 lw v0,52(s8)
-8003acfc: 00000000 nop
-8003ad00: afc20054 sw v0,84(s8)
- }
-
- dprintf("PRECISION = %d\n", pad_quantity_f);
-
- libc_double_to_string(va_arg(ap, double), libc_sprintf_floatbuf, 64, pad_quantity_f);
-8003ad04: 8fc20114 lw v0,276(s8)
-8003ad08: 00000000 nop
-8003ad0c: 24430007 addiu v1,v0,7
-8003ad10: 2402fff8 li v0,-8
-8003ad14: 00621824 and v1,v1,v0
-8003ad18: 24620008 addiu v0,v1,8
-8003ad1c: afc20114 sw v0,276(s8)
-8003ad20: 8c640000 lw a0,0(v1)
-8003ad24: 8c650004 lw a1,4(v1)
-8003ad28: 8fc20058 lw v0,88(s8)
-8003ad2c: 00000000 nop
-8003ad30: afa20010 sw v0,16(sp)
-8003ad34: 24070040 li a3,64
-8003ad38: 3c028007 lui v0,0x8007
-8003ad3c: 24468cf8 addiu a2,v0,-29448
-8003ad40: 0c00e2db jal 80038b6c <libc_double_to_string>
-8003ad44: 00000000 nop
-
- // calculate padding
- pad_quantity -= strlen(libc_sprintf_floatbuf);
-8003ad48: 3c028007 lui v0,0x8007
-8003ad4c: 24448cf8 addiu a0,v0,-29448
-8003ad50: 0c00d8af jal 800362bc <strlen>
-8003ad54: 00000000 nop
-8003ad58: 00401821 move v1,v0
-8003ad5c: 8fc20054 lw v0,84(s8)
-8003ad60: 00000000 nop
-8003ad64: 00431023 subu v0,v0,v1
-8003ad68: afc20054 sw v0,84(s8)
-
- write_padding();
-8003ad6c: 8fc2002c lw v0,44(s8)
-8003ad70: 00000000 nop
-8003ad74: 30420004 andi v0,v0,0x4
-8003ad78: 1440002d bnez v0,8003ae30 <__vsnprintf_internal+0x1c24>
-8003ad7c: 00000000 nop
-8003ad80: afc00034 sw zero,52(s8)
-8003ad84: 10000024 b 8003ae18 <__vsnprintf_internal+0x1c0c>
-8003ad88: 00000000 nop
-8003ad8c: 8fc2002c lw v0,44(s8)
-8003ad90: 00000000 nop
-8003ad94: 30420002 andi v0,v0,0x2
-8003ad98: 1040000f beqz v0,8003add8 <__vsnprintf_internal+0x1bcc>
-8003ad9c: 00000000 nop
-8003ada0: 8fc4004c lw a0,76(s8)
-8003ada4: 8fc30018 lw v1,24(s8)
-8003ada8: 00000000 nop
-8003adac: 24620001 addiu v0,v1,1
-8003adb0: afc20018 sw v0,24(s8)
-8003adb4: 8fc20118 lw v0,280(s8)
-8003adb8: 00603821 move a3,v1
-8003adbc: 24060030 li a2,48
-8003adc0: 00802821 move a1,a0
-8003adc4: 8fc40108 lw a0,264(s8)
-8003adc8: 0040f809 jalr v0
-8003adcc: 00000000 nop
-8003add0: 1000000d b 8003ae08 <__vsnprintf_internal+0x1bfc>
-8003add4: 00000000 nop
-8003add8: 8fc4004c lw a0,76(s8)
-8003addc: 8fc30018 lw v1,24(s8)
-8003ade0: 00000000 nop
-8003ade4: 24620001 addiu v0,v1,1
-8003ade8: afc20018 sw v0,24(s8)
-8003adec: 8fc20118 lw v0,280(s8)
-8003adf0: 00603821 move a3,v1
-8003adf4: 24060020 li a2,32
-8003adf8: 00802821 move a1,a0
-8003adfc: 8fc40108 lw a0,264(s8)
-8003ae00: 0040f809 jalr v0
-8003ae04: 00000000 nop
-8003ae08: 8fc20034 lw v0,52(s8)
-8003ae0c: 00000000 nop
-8003ae10: 24420001 addiu v0,v0,1
-8003ae14: afc20034 sw v0,52(s8)
-8003ae18: 8fc30034 lw v1,52(s8)
-8003ae1c: 8fc20054 lw v0,84(s8)
-8003ae20: 00000000 nop
-8003ae24: 0062102a slt v0,v1,v0
-8003ae28: 1440ffd8 bnez v0,8003ad8c <__vsnprintf_internal+0x1b80>
-8003ae2c: 00000000 nop
-
- for(x=0;libc_sprintf_floatbuf[x]!=0;x++)
-8003ae30: afc00034 sw zero,52(s8)
-8003ae34: 10000019 b 8003ae9c <__vsnprintf_internal+0x1c90>
-8003ae38: 00000000 nop
- put_in_string(string, ssz, libc_sprintf_floatbuf[x], string_pos++);
-8003ae3c: 8fc4004c lw a0,76(s8)
-8003ae40: 3c028007 lui v0,0x8007
-8003ae44: 24438cf8 addiu v1,v0,-29448
-8003ae48: 8fc20034 lw v0,52(s8)
-8003ae4c: 00000000 nop
-8003ae50: 00621021 addu v0,v1,v0
-8003ae54: 80420000 lb v0,0(v0)
-8003ae58: 00000000 nop
-8003ae5c: 00402821 move a1,v0
-8003ae60: 8fc30018 lw v1,24(s8)
-8003ae64: 00000000 nop
-8003ae68: 24620001 addiu v0,v1,1
-8003ae6c: afc20018 sw v0,24(s8)
-8003ae70: 8fc20118 lw v0,280(s8)
-8003ae74: 00603821 move a3,v1
-8003ae78: 00a03021 move a2,a1
-8003ae7c: 00802821 move a1,a0
-8003ae80: 8fc40108 lw a0,264(s8)
-8003ae84: 0040f809 jalr v0
-8003ae88: 00000000 nop
- // calculate padding
- pad_quantity -= strlen(libc_sprintf_floatbuf);
-
- write_padding();
-
- for(x=0;libc_sprintf_floatbuf[x]!=0;x++)
-8003ae8c: 8fc20034 lw v0,52(s8)
-8003ae90: 00000000 nop
-8003ae94: 24420001 addiu v0,v0,1
-8003ae98: afc20034 sw v0,52(s8)
-8003ae9c: 3c028007 lui v0,0x8007
-8003aea0: 24438cf8 addiu v1,v0,-29448
-8003aea4: 8fc20034 lw v0,52(s8)
-8003aea8: 00000000 nop
-8003aeac: 00621021 addu v0,v1,v0
-8003aeb0: 80420000 lb v0,0(v0)
-8003aeb4: 00000000 nop
-8003aeb8: 1440ffe0 bnez v0,8003ae3c <__vsnprintf_internal+0x1c30>
-8003aebc: 00000000 nop
- put_in_string(string, ssz, libc_sprintf_floatbuf[x], string_pos++);
-
- write_neg_padding();
-8003aec0: 8fc2002c lw v0,44(s8)
-8003aec4: 00000000 nop
-8003aec8: 30420004 andi v0,v0,0x4
-8003aecc: 1040001a beqz v0,8003af38 <__vsnprintf_internal+0x1d2c>
-8003aed0: 00000000 nop
-8003aed4: afc00034 sw zero,52(s8)
-8003aed8: 10000011 b 8003af20 <__vsnprintf_internal+0x1d14>
-8003aedc: 00000000 nop
-8003aee0: 8fc4004c lw a0,76(s8)
-8003aee4: 8fc30018 lw v1,24(s8)
-8003aee8: 00000000 nop
-8003aeec: 24620001 addiu v0,v1,1
-8003aef0: afc20018 sw v0,24(s8)
-8003aef4: 8fc20118 lw v0,280(s8)
-8003aef8: 00603821 move a3,v1
-8003aefc: 24060020 li a2,32
-8003af00: 00802821 move a1,a0
-8003af04: 8fc40108 lw a0,264(s8)
-8003af08: 0040f809 jalr v0
-8003af0c: 00000000 nop
-8003af10: 8fc20034 lw v0,52(s8)
-8003af14: 00000000 nop
-8003af18: 24420001 addiu v0,v0,1
-8003af1c: afc20034 sw v0,52(s8)
-8003af20: 8fc30034 lw v1,52(s8)
-8003af24: 8fc20054 lw v0,84(s8)
-8003af28: 00000000 nop
-8003af2c: 0062102a slt v0,v1,v0
-8003af30: 1440ffeb bnez v0,8003aee0 <__vsnprintf_internal+0x1cd4>
-8003af34: 00000000 nop
-
- directive_coming = 0;
-8003af38: afc00028 sw zero,40(s8)
- break;
-8003af3c: 1000004e b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003af40: 00000000 nop
- case 'n': // Number of characters written
- *(va_arg(ap,unsigned int*)) = string_pos;
-8003af44: 8fc30114 lw v1,276(s8)
-8003af48: 00000000 nop
-8003af4c: 24620004 addiu v0,v1,4
-8003af50: afc20114 sw v0,276(s8)
-8003af54: 8c630000 lw v1,0(v1)
-8003af58: 8fc20018 lw v0,24(s8)
-8003af5c: 00000000 nop
-8003af60: ac620000 sw v0,0(v1)
-
- directive_coming = 0;
-8003af64: afc00028 sw zero,40(s8)
- break;
-8003af68: 10000043 b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003af6c: 00000000 nop
-
- default:
- put_in_string(string, ssz, fmt[fmt_pos], string_pos++);
-8003af70: 8fc4004c lw a0,76(s8)
-8003af74: 8fc3001c lw v1,28(s8)
-8003af78: 8fc20110 lw v0,272(s8)
-8003af7c: 00000000 nop
-8003af80: 00431021 addu v0,v0,v1
-8003af84: 80420000 lb v0,0(v0)
-8003af88: 00000000 nop
-8003af8c: 00402821 move a1,v0
-8003af90: 8fc30018 lw v1,24(s8)
-8003af94: 00000000 nop
-8003af98: 24620001 addiu v0,v1,1
-8003af9c: afc20018 sw v0,24(s8)
-8003afa0: 8fc20118 lw v0,280(s8)
-8003afa4: 00603821 move a3,v1
-8003afa8: 00a03021 move a2,a1
-8003afac: 00802821 move a1,a0
-8003afb0: 8fc40108 lw a0,264(s8)
-8003afb4: 0040f809 jalr v0
-8003afb8: 00000000 nop
- directive_coming = 0;
-8003afbc: afc00028 sw zero,40(s8)
-8003afc0: 1000002d b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003afc4: 00000000 nop
- }
- }
- else
- {
- if(fmt[fmt_pos] == '%')
-8003afc8: 8fc3001c lw v1,28(s8)
-8003afcc: 8fc20110 lw v0,272(s8)
-8003afd0: 00000000 nop
-8003afd4: 00431021 addu v0,v0,v1
-8003afd8: 80430000 lb v1,0(v0)
-8003afdc: 24020025 li v0,37
-8003afe0: 1462000c bne v1,v0,8003b014 <__vsnprintf_internal+0x1e08>
-8003afe4: 00000000 nop
- {
- directive_coming = 1;
-8003afe8: 24020001 li v0,1
-8003afec: afc20028 sw v0,40(s8)
- flags = 0;
-8003aff0: afc0002c sw zero,44(s8)
- argsize = 2;
-8003aff4: 24020002 li v0,2
-8003aff8: afc20030 sw v0,48(s8)
- pad_quantity = 0;
-8003affc: afc00054 sw zero,84(s8)
- pad_quantity_f = -1;
-8003b000: 2402ffff li v0,-1
-8003b004: afc20058 sw v0,88(s8)
- zero_flag_imp = 0;
-8003b008: afc00050 sw zero,80(s8)
-8003b00c: 1000001a b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003b010: 00000000 nop
- }
- else
- {
- put_in_string(string, ssz, fmt[fmt_pos], string_pos++);
-8003b014: 8fc4004c lw a0,76(s8)
-8003b018: 8fc3001c lw v1,28(s8)
-8003b01c: 8fc20110 lw v0,272(s8)
-8003b020: 00000000 nop
-8003b024: 00431021 addu v0,v0,v1
-8003b028: 80420000 lb v0,0(v0)
-8003b02c: 00000000 nop
-8003b030: 00402821 move a1,v0
-8003b034: 8fc30018 lw v1,24(s8)
-8003b038: 00000000 nop
-8003b03c: 24620001 addiu v0,v1,1
-8003b040: afc20018 sw v0,24(s8)
-8003b044: 8fc20118 lw v0,280(s8)
-8003b048: 00603821 move a3,v1
-8003b04c: 00a03021 move a2,a1
-8003b050: 00802821 move a1,a0
-8003b054: 8fc40108 lw a0,264(s8)
-8003b058: 0040f809 jalr v0
-8003b05c: 00000000 nop
-8003b060: 10000005 b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003b064: 00000000 nop
- pad_quantity_f = pad_quantity;
- pad_quantity = 0;
- break;
- case 'h': // Half argument size
- if(argsize) argsize--;
- break;
-8003b068: 00000000 nop
-8003b06c: 10000002 b 8003b078 <__vsnprintf_internal+0x1e6c>
-8003b070: 00000000 nop
- case 'l': // Double argument size
- if(argsize < 2) argsize = 2;
- else if(argsize < SPRINTF_SIZE_LONG_LONG) argsize++;
- break;
-8003b074: 00000000 nop
-
- l = strlen(fmt);
-
- string_pos = 0;
-
- for(fmt_pos=0;fmt_pos<l;fmt_pos++)
-8003b078: 8fc2001c lw v0,28(s8)
-8003b07c: 00000000 nop
-8003b080: 24420001 addiu v0,v0,1
-8003b084: afc2001c sw v0,28(s8)
-8003b088: 8fc3001c lw v1,28(s8)
-8003b08c: 8fc20060 lw v0,96(s8)
-8003b090: 00000000 nop
-8003b094: 0062102a slt v0,v1,v0
-8003b098: 1440f885 bnez v0,800392b0 <__vsnprintf_internal+0xa4>
-8003b09c: 00000000 nop
-
- /*if(((size-1) < string_pos) && (size>0))
- string[size - 1] = 0;
- else
- string[string_pos] = 0;*/
- put_in_string(string, ssz, '\0', string_pos);
-8003b0a0: 8fc3004c lw v1,76(s8)
-8003b0a4: 8fc20118 lw v0,280(s8)
-8003b0a8: 8fc70018 lw a3,24(s8)
-8003b0ac: 00003021 move a2,zero
-8003b0b0: 00602821 move a1,v1
-8003b0b4: 8fc40108 lw a0,264(s8)
-8003b0b8: 0040f809 jalr v0
-8003b0bc: 00000000 nop
-
- return string_pos;
-8003b0c0: 8fc20018 lw v0,24(s8)
-}
-8003b0c4: 03c0e821 move sp,s8
-8003b0c8: 8fbf0104 lw ra,260(sp)
-8003b0cc: 8fbe0100 lw s8,256(sp)
-8003b0d0: 8fb700fc lw s7,252(sp)
-8003b0d4: 8fb600f8 lw s6,248(sp)
-8003b0d8: 8fb500f4 lw s5,244(sp)
-8003b0dc: 8fb400f0 lw s4,240(sp)
-8003b0e0: 8fb300ec lw s3,236(sp)
-8003b0e4: 8fb200e8 lw s2,232(sp)
-8003b0e8: 8fb100e4 lw s1,228(sp)
-8003b0ec: 8fb000e0 lw s0,224(sp)
-8003b0f0: 27bd0108 addiu sp,sp,264
-8003b0f4: 03e00008 jr ra
-8003b0f8: 00000000 nop
-
-8003b0fc <vsnprintf_put_in_string>:
-
-static int vsnprintf_put_in_string(char *string, unsigned int sz, char c, int pos)
-{
-8003b0fc: 27bdfff8 addiu sp,sp,-8
-8003b100: afbe0004 sw s8,4(sp)
-8003b104: 03a0f021 move s8,sp
-8003b108: afc40008 sw a0,8(s8)
-8003b10c: afc5000c sw a1,12(s8)
-8003b110: 00c01021 move v0,a2
-8003b114: afc70014 sw a3,20(s8)
-8003b118: a3c20010 sb v0,16(s8)
- if(pos>=sz)
-8003b11c: 8fc30014 lw v1,20(s8)
-8003b120: 8fc2000c lw v0,12(s8)
-8003b124: 00000000 nop
-8003b128: 0062102b sltu v0,v1,v0
-8003b12c: 14400004 bnez v0,8003b140 <vsnprintf_put_in_string+0x44>
-8003b130: 00000000 nop
- return 0;
-8003b134: 00001021 move v0,zero
-8003b138: 10000009 b 8003b160 <vsnprintf_put_in_string+0x64>
-8003b13c: 00000000 nop
- else
- string[pos] = c;
-8003b140: 8fc20014 lw v0,20(s8)
-8003b144: 8fc30008 lw v1,8(s8)
-8003b148: 00000000 nop
-8003b14c: 00621021 addu v0,v1,v0
-8003b150: 93c30010 lbu v1,16(s8)
-8003b154: 00000000 nop
-8003b158: a0430000 sb v1,0(v0)
-
- return 1;
-8003b15c: 24020001 li v0,1
-}
-8003b160: 03c0e821 move sp,s8
-8003b164: 8fbe0004 lw s8,4(sp)
-8003b168: 27bd0008 addiu sp,sp,8
-8003b16c: 03e00008 jr ra
-8003b170: 00000000 nop
-
-8003b174 <vsnprintf>:
-
-int vsnprintf(char *string, size_t size, const char *fmt, va_list ap)
-{
-8003b174: 27bdffe0 addiu sp,sp,-32
-8003b178: afbf001c sw ra,28(sp)
-8003b17c: afbe0018 sw s8,24(sp)
-8003b180: 03a0f021 move s8,sp
-8003b184: afc40020 sw a0,32(s8)
-8003b188: afc50024 sw a1,36(s8)
-8003b18c: afc60028 sw a2,40(s8)
-8003b190: afc7002c sw a3,44(s8)
- return __vsnprintf_internal(string, size, fmt, ap, vsnprintf_put_in_string);
-8003b194: 3c028004 lui v0,0x8004
-8003b198: 2442b0fc addiu v0,v0,-20228
-8003b19c: afa20010 sw v0,16(sp)
-8003b1a0: 8fc7002c lw a3,44(s8)
-8003b1a4: 8fc60028 lw a2,40(s8)
-8003b1a8: 8fc50024 lw a1,36(s8)
-8003b1ac: 8fc40020 lw a0,32(s8)
-8003b1b0: 0c00e483 jal 8003920c <__vsnprintf_internal>
-8003b1b4: 00000000 nop
-}
-8003b1b8: 03c0e821 move sp,s8
-8003b1bc: 8fbf001c lw ra,28(sp)
-8003b1c0: 8fbe0018 lw s8,24(sp)
-8003b1c4: 27bd0020 addiu sp,sp,32
-8003b1c8: 03e00008 jr ra
-8003b1cc: 00000000 nop
-
-8003b1d0 <sio_put_in_string>:
-
-static int sio_put_in_string(char *string, unsigned int sz, char c, int pos)
-{
-8003b1d0: 27bdffe8 addiu sp,sp,-24
-8003b1d4: afbf0014 sw ra,20(sp)
-8003b1d8: afbe0010 sw s8,16(sp)
-8003b1dc: 03a0f021 move s8,sp
-8003b1e0: afc40018 sw a0,24(s8)
-8003b1e4: afc5001c sw a1,28(s8)
-8003b1e8: 00c01021 move v0,a2
-8003b1ec: afc70024 sw a3,36(s8)
-8003b1f0: a3c20020 sb v0,32(s8)
- sio_putchar(c);
-8003b1f4: 83c20020 lb v0,32(s8)
-8003b1f8: 00000000 nop
-8003b1fc: 00402021 move a0,v0
-8003b200: 0c00a9c3 jal 8002a70c <sio_putchar>
-8003b204: 00000000 nop
-
- return 1;
-8003b208: 24020001 li v0,1
-}
-8003b20c: 03c0e821 move sp,s8
-8003b210: 8fbf0014 lw ra,20(sp)
-8003b214: 8fbe0010 lw s8,16(sp)
-8003b218: 27bd0018 addiu sp,sp,24
-8003b21c: 03e00008 jr ra
-8003b220: 00000000 nop
-
-8003b224 <sio_vprintf>:
-
-int sio_vprintf(const char *fmt, va_list ap)
-{
-8003b224: 27bdffe0 addiu sp,sp,-32
-8003b228: afbf001c sw ra,28(sp)
-8003b22c: afbe0018 sw s8,24(sp)
-8003b230: 03a0f021 move s8,sp
-8003b234: afc40020 sw a0,32(s8)
-8003b238: afc50024 sw a1,36(s8)
- return __vsnprintf_internal(NULL, -1, fmt, ap, sio_put_in_string);
-8003b23c: 3c028004 lui v0,0x8004
-8003b240: 2442b1d0 addiu v0,v0,-20016
-8003b244: afa20010 sw v0,16(sp)
-8003b248: 8fc70024 lw a3,36(s8)
-8003b24c: 8fc60020 lw a2,32(s8)
-8003b250: 2405ffff li a1,-1
-8003b254: 00002021 move a0,zero
-8003b258: 0c00e483 jal 8003920c <__vsnprintf_internal>
-8003b25c: 00000000 nop
-}
-8003b260: 03c0e821 move sp,s8
-8003b264: 8fbf001c lw ra,28(sp)
-8003b268: 8fbe0018 lw s8,24(sp)
-8003b26c: 27bd0020 addiu sp,sp,32
-8003b270: 03e00008 jr ra
-8003b274: 00000000 nop
-
-8003b278 <out_put_in_string>:
-
-static int out_put_in_string(char *string, unsigned int sz, char c, int pos)
-{
-8003b278: 27bdffe8 addiu sp,sp,-24
-8003b27c: afbf0014 sw ra,20(sp)
-8003b280: afbe0010 sw s8,16(sp)
-8003b284: 03a0f021 move s8,sp
-8003b288: afc40018 sw a0,24(s8)
-8003b28c: afc5001c sw a1,28(s8)
-8003b290: 00c01021 move v0,a2
-8003b294: afc70024 sw a3,36(s8)
-8003b298: a3c20020 sb v0,32(s8)
- putchar(c);
-8003b29c: 83c20020 lb v0,32(s8)
-8003b2a0: 00000000 nop
-8003b2a4: 00402021 move a0,v0
-8003b2a8: 0c00aa06 jal 8002a818 <putchar>
-8003b2ac: 00000000 nop
-
- return 1;
-8003b2b0: 24020001 li v0,1
-}
-8003b2b4: 03c0e821 move sp,s8
-8003b2b8: 8fbf0014 lw ra,20(sp)
-8003b2bc: 8fbe0010 lw s8,16(sp)
-8003b2c0: 27bd0018 addiu sp,sp,24
-8003b2c4: 03e00008 jr ra
-8003b2c8: 00000000 nop
-
-8003b2cc <vprintf>:
-
-int vprintf(char *fmt, va_list ap)
-{
-8003b2cc: 27bdffe0 addiu sp,sp,-32
-8003b2d0: afbf001c sw ra,28(sp)
-8003b2d4: afbe0018 sw s8,24(sp)
-8003b2d8: 03a0f021 move s8,sp
-8003b2dc: afc40020 sw a0,32(s8)
-8003b2e0: afc50024 sw a1,36(s8)
- return __vsnprintf_internal(NULL, -1, fmt, ap, out_put_in_string);
-8003b2e4: 3c028004 lui v0,0x8004
-8003b2e8: 2442b278 addiu v0,v0,-19848
-8003b2ec: afa20010 sw v0,16(sp)
-8003b2f0: 8fc70024 lw a3,36(s8)
-8003b2f4: 8fc60020 lw a2,32(s8)
-8003b2f8: 2405ffff li a1,-1
-8003b2fc: 00002021 move a0,zero
-8003b300: 0c00e483 jal 8003920c <__vsnprintf_internal>
-8003b304: 00000000 nop
-}
-8003b308: 03c0e821 move sp,s8
-8003b30c: 8fbf001c lw ra,28(sp)
-8003b310: 8fbe0018 lw s8,24(sp)
-8003b314: 27bd0020 addiu sp,sp,32
-8003b318: 03e00008 jr ra
-8003b31c: 00000000 nop
-
-8003b320 <vsprintf>:
-
-int vsprintf(char *string, const char *fmt, va_list ap)
-{
-8003b320: 27bdffe8 addiu sp,sp,-24
-8003b324: afbf0014 sw ra,20(sp)
-8003b328: afbe0010 sw s8,16(sp)
-8003b32c: 03a0f021 move s8,sp
-8003b330: afc40018 sw a0,24(s8)
-8003b334: afc5001c sw a1,28(s8)
-8003b338: afc60020 sw a2,32(s8)
- return vsnprintf(string, 0xffffffff, fmt, ap);
-8003b33c: 8fc70020 lw a3,32(s8)
-8003b340: 8fc6001c lw a2,28(s8)
-8003b344: 2405ffff li a1,-1
-8003b348: 8fc40018 lw a0,24(s8)
-8003b34c: 0c00ec5d jal 8003b174 <vsnprintf>
-8003b350: 00000000 nop
-}
-8003b354: 03c0e821 move sp,s8
-8003b358: 8fbf0014 lw ra,20(sp)
-8003b35c: 8fbe0010 lw s8,16(sp)
-8003b360: 27bd0018 addiu sp,sp,24
-8003b364: 03e00008 jr ra
-8003b368: 00000000 nop
-
-8003b36c <sprintf>:
-
-int sprintf(char *string, const char *fmt, ...)
-{
-8003b36c: 27bdffe0 addiu sp,sp,-32
-8003b370: afbf001c sw ra,28(sp)
-8003b374: afbe0018 sw s8,24(sp)
-8003b378: 03a0f021 move s8,sp
-8003b37c: afc40020 sw a0,32(s8)
-8003b380: afc50024 sw a1,36(s8)
-8003b384: afc60028 sw a2,40(s8)
-8003b388: afc7002c sw a3,44(s8)
- int r;
-
- va_list ap;
-
- va_start(ap, fmt);
-8003b38c: 27c20028 addiu v0,s8,40
-8003b390: afc20014 sw v0,20(s8)
-
- r = vsprintf(string, fmt, ap);
-8003b394: 8fc20014 lw v0,20(s8)
-8003b398: 00000000 nop
-8003b39c: 00403021 move a2,v0
-8003b3a0: 8fc50024 lw a1,36(s8)
-8003b3a4: 8fc40020 lw a0,32(s8)
-8003b3a8: 0c00ecc8 jal 8003b320 <vsprintf>
-8003b3ac: 00000000 nop
-8003b3b0: afc20010 sw v0,16(s8)
-
- va_end(ap);
-
- return r;
-8003b3b4: 8fc20010 lw v0,16(s8)
-}
-8003b3b8: 03c0e821 move sp,s8
-8003b3bc: 8fbf001c lw ra,28(sp)
-8003b3c0: 8fbe0018 lw s8,24(sp)
-8003b3c4: 27bd0020 addiu sp,sp,32
-8003b3c8: 03e00008 jr ra
-8003b3cc: 00000000 nop
-
-8003b3d0 <snprintf>:
-
-int snprintf(char *string, size_t size, const char *fmt, ...)
-{
-8003b3d0: 27bdffe0 addiu sp,sp,-32
-8003b3d4: afbf001c sw ra,28(sp)
-8003b3d8: afbe0018 sw s8,24(sp)
-8003b3dc: 03a0f021 move s8,sp
-8003b3e0: afc40020 sw a0,32(s8)
-8003b3e4: afc50024 sw a1,36(s8)
-8003b3e8: afc60028 sw a2,40(s8)
-8003b3ec: afc7002c sw a3,44(s8)
- int r;
-
- va_list ap;
-
- va_start(ap, fmt);
-8003b3f0: 27c2002c addiu v0,s8,44
-8003b3f4: afc20014 sw v0,20(s8)
-
- r = vsnprintf(string, size, fmt, ap);
-8003b3f8: 8fc20014 lw v0,20(s8)
-8003b3fc: 00000000 nop
-8003b400: 00403821 move a3,v0
-8003b404: 8fc60028 lw a2,40(s8)
-8003b408: 8fc50024 lw a1,36(s8)
-8003b40c: 8fc40020 lw a0,32(s8)
-8003b410: 0c00ec5d jal 8003b174 <vsnprintf>
-8003b414: 00000000 nop
-8003b418: afc20010 sw v0,16(s8)
-
- va_end(ap);
-
- return r;
-8003b41c: 8fc20010 lw v0,16(s8)
-}
-8003b420: 03c0e821 move sp,s8
-8003b424: 8fbf001c lw ra,28(sp)
-8003b428: 8fbe0018 lw s8,24(sp)
-8003b42c: 27bd0020 addiu sp,sp,32
-8003b430: 03e00008 jr ra
-8003b434: 00000000 nop
-
-8003b438 <sio_printf>:
-
-int sio_printf(const char *fmt, ...)
-{
-8003b438: 27bdffe0 addiu sp,sp,-32
-8003b43c: afbf001c sw ra,28(sp)
-8003b440: afbe0018 sw s8,24(sp)
-8003b444: 03a0f021 move s8,sp
-8003b448: afc40020 sw a0,32(s8)
-8003b44c: afc50024 sw a1,36(s8)
-8003b450: afc60028 sw a2,40(s8)
-8003b454: afc7002c sw a3,44(s8)
- int r;
-
- va_list ap;
-
- va_start(ap, fmt);
-8003b458: 27c20024 addiu v0,s8,36
-8003b45c: afc20014 sw v0,20(s8)
-
- r = sio_vprintf(fmt, ap);
-8003b460: 8fc20014 lw v0,20(s8)
-8003b464: 00000000 nop
-8003b468: 00402821 move a1,v0
-8003b46c: 8fc40020 lw a0,32(s8)
-8003b470: 0c00ec89 jal 8003b224 <sio_vprintf>
-8003b474: 00000000 nop
-8003b478: afc20010 sw v0,16(s8)
-
- va_end(ap);
-
- return r;
-8003b47c: 8fc20010 lw v0,16(s8)
-}
-8003b480: 03c0e821 move sp,s8
-8003b484: 8fbf001c lw ra,28(sp)
-8003b488: 8fbe0018 lw s8,24(sp)
-8003b48c: 27bd0020 addiu sp,sp,32
-8003b490: 03e00008 jr ra
-8003b494: 00000000 nop
-
-8003b498 <_internal_cdrom_handler>:
-.global _internal_cdrom_handler
-.set noat
-
-
-_internal_cdrom_handler:
- addi $sp, -112
-8003b498: 23bdff90 afa10000 afa20004 afa30008 ...#............
- sw $at, 0($sp)
- sw $v0, 4($sp)
- sw $v1, 8($sp)
- sw $a0, 12($sp)
-8003b4a8: afa4000c afa50010 afa60014 afa70018 ................
- sw $a1, 16($sp)
- sw $a2, 20($sp)
- sw $a3, 24($sp)
- sw $t0, 28($sp)
-8003b4b8: afa8001c afa90020 afaa0024 afab0028 .... ...$...(...
- sw $t1, 32($sp)
- sw $t2, 36($sp)
- sw $t3, 40($sp)
- sw $t4, 44($sp)
-8003b4c8: afac002c afad0030 afae0034 afaf0038 ,...0...4...8...
- sw $t5, 48($sp)
- sw $t6, 52($sp)
- sw $t7, 56($sp)
- sw $s0, 60($sp)
-8003b4d8: afb0003c afb10040 afb20044 afb30048 <...@...D...H...
- sw $s1, 64($sp)
- sw $s2, 68($sp)
- sw $s3, 72($sp)
- sw $s4, 76($sp)
-8003b4e8: afb4004c afb50050 afb60054 afb70058 L...P...T...X...
- sw $s5, 80($sp)
- sw $s6, 84($sp)
- sw $s7, 88($sp)
- sw $t8, 92($sp)
-8003b4f8: afb8005c afb90060 afbc0064 afbe0068 \...`...d...h...
- sw $t9, 96($sp)
- sw $gp, 100($sp)
- sw $s8, 104($sp)
- sw $ra, 108($sp)
-8003b508: afbf006c 3c081f80 35081074 8d090000 l......<t..5....
-
-# Do not run code if cdrom interrupt is not enabled
-
- li $t0, 0x1f801074
- lw $t1, 0($t0)
-8003b518: 00000000 31290004 1120001e 00000000 ......)1.. .....
- andi $t1, $t1, 4
- beq $t1, $zero, cdrom_handler_end
- nop
-8003b528: 00000000 3c081f80 35081070 8d090000 .......<p..5....
-
-# Do not run code if cdrom interrupt is not pending
-
- li $t0, 0x1f801070
- lw $t1, 0($t0)
-8003b538: 00000000 31290004 11200016 00000000 ......)1.. .....
- andi $t1, $t1, 4
- beq $t1, $zero, cdrom_handler_end
- nop
-8003b548: 00000000 ....
-
-8003b54c <cdrom_check_direct_cmd>:
-# If the CDROM command isn't direct
-# (direct = sent by us and not by the BIOS' ISO9660 routines)
-# exit and let the BIOS do its work.
-
-cdrom_check_direct_cmd:
- la $t0, cdrom_command_direct
-8003b54c: 3c088007 lui t0,0x8007
-8003b550: 25081cc8 addiu t0,t0,7368
- lw $t1, 0($t0)
-8003b554: 8d090000 lw t1,0(t0)
-8003b558: 00000000 nop
- beq $t1, $zero, cdrom_handler_end
-8003b55c: 1120000f beqz t1,8003b59c <cdrom_handler_end>
-8003b560: 00000000 nop
- nop
-8003b564: 00000000 nop
-
-8003b568 <cdrom_fire_user_handler>:
-
-cdrom_fire_user_handler:
- la $t0, cdrom_handler_callback
-8003b568: 3c088007 lui t0,0x8007
-8003b56c: 25081d34 addiu t0,t0,7476
- lw $t1, 0($t0)
-8003b570: 8d090000 lw t1,0(t0)
-8003b574: 00000000 nop
-
- jalr $t1
-8003b578: 0120f809 jalr t1
-8003b57c: 00000000 nop
- nop
-8003b580: 00000000 nop
-
-8003b584 <cdrom_handler_remove_pending>:
-
-# Remove bit for CDROM interrupt (bit 2) from pending interrupts mask.
-
-cdrom_handler_remove_pending:
- li $t0, 0x1f801070
-8003b584: 3c081f80 lui t0,0x1f80
-8003b588: 35081070 ori t0,t0,0x1070
- lw $t1, 0($t0)
-8003b58c: 8d090000 lw t1,0(t0)
-8003b590: 00000000 nop
- xori $t1, $t1, 4
-8003b594: 39290004 xori t1,t1,0x4
- sw $t1, 0($t0)
-8003b598: ad090000 sw t1,0(t0)
-
-8003b59c <cdrom_handler_end>:
-
-cdrom_handler_end:
-
- lw $at, 0($sp)
-8003b59c: 8fa10000 lw at,0(sp)
- lw $v0, 4($sp)
-8003b5a0: 8fa20004 lw v0,4(sp)
- lw $v1, 8($sp)
-8003b5a4: 8fa30008 lw v1,8(sp)
- lw $a0, 12($sp)
-8003b5a8: 8fa4000c lw a0,12(sp)
- lw $a1, 16($sp)
-8003b5ac: 8fa50010 lw a1,16(sp)
- lw $a2, 20($sp)
-8003b5b0: 8fa60014 lw a2,20(sp)
- lw $a3, 24($sp)
-8003b5b4: 8fa70018 lw a3,24(sp)
- lw $t0, 28($sp)
-8003b5b8: 8fa8001c lw t0,28(sp)
- lw $t1, 32($sp)
-8003b5bc: 8fa90020 lw t1,32(sp)
- lw $t2, 36($sp)
-8003b5c0: 8faa0024 lw t2,36(sp)
- lw $t3, 40($sp)
-8003b5c4: 8fab0028 lw t3,40(sp)
- lw $t4, 44($sp)
-8003b5c8: 8fac002c lw t4,44(sp)
- lw $t5, 48($sp)
-8003b5cc: 8fad0030 lw t5,48(sp)
- lw $t6, 52($sp)
-8003b5d0: 8fae0034 lw t6,52(sp)
- lw $t7, 56($sp)
-8003b5d4: 8faf0038 lw t7,56(sp)
- lw $s0, 60($sp)
-8003b5d8: 8fb0003c lw s0,60(sp)
- lw $s1, 64($sp)
-8003b5dc: 8fb10040 lw s1,64(sp)
- lw $s2, 68($sp)
-8003b5e0: 8fb20044 lw s2,68(sp)
- lw $s3, 72($sp)
-8003b5e4: 8fb30048 lw s3,72(sp)
- lw $s4, 76($sp)
-8003b5e8: 8fb4004c lw s4,76(sp)
- lw $s5, 80($sp)
-8003b5ec: 8fb50050 lw s5,80(sp)
- lw $s6, 84($sp)
-8003b5f0: 8fb60054 lw s6,84(sp)
- lw $s7, 88($sp)
-8003b5f4: 8fb70058 lw s7,88(sp)
- lw $t8, 92($sp)
-8003b5f8: 8fb8005c lw t8,92(sp)
- lw $t9, 96($sp)
-8003b5fc: 8fb90060 lw t9,96(sp)
- lw $gp, 100($sp)
-8003b600: 8fbc0064 lw gp,100(sp)
- lw $s8, 104($sp)
-8003b604: 8fbe0068 lw s8,104(sp)
- lw $ra, 108($sp)
-8003b608: 8fbf006c lw ra,108(sp)
- addi $sp, 112
-8003b60c: 23bd0070 addi sp,sp,112
- jr $ra
-8003b610: 03e00008 jr ra
-8003b614: 00000000 nop
- nop
-8003b618: 00000000 nop
-
-8003b61c <bios_putchar>:
-.global printf
-.extern __stdio_direction
-.extern sio_printf
-
-bios_putchar:
- li $9, 0x3c
-8003b61c: 2409003c 08000028 00000000 00000000 <..$(...........
-
-8003b62c <bios_puts>:
- j 0xa0
- nop
-
-bios_puts:
- li $9, 0x3e
-8003b62c: 2409003e 08000028 00000000 00000000 >..$(...........
-
-8003b63c <printf>:
- j 0xa0
- nop
-
-printf:
- la $9, __stdio_direction
-8003b63c: 3c098007 25291cc0 8d2a0000 00000000 ...<..)%..*.....
- lw $10, 0($9)
- beq $10, $0, use_bios_printf
-8003b64c: 11400005 00000000 00000000 0800ed0e ..@.............
- ...
-
-8003b664 <use_bios_printf>:
- nop
- j sio_printf
- nop
-use_bios_printf:
- li $9, 0x3f
-8003b664: 2409003f li t1,63
- j 0xa0
-8003b668: 08000028 j 800000a0 <__scratchpad+0x608000a0>
-8003b66c: 00000000 nop
- nop
-8003b670: 00000000 nop
-
-8003b674 <InitHeap>:
-
-.global InitHeap
-.global FlushCache
-
-InitHeap:
- li $9, 0x39
-8003b674: 24090039 08000028 00000000 00000000 9..$(...........
-
-8003b684 <FlushCache>:
- j 0xa0
- nop
-
-FlushCache:
- li $9, 0x44
-8003b684: 24090044 08000028 00000000 00000000 D..$(...........
-
-8003b694 <GPU_dw>:
-.global GPU_cwb
-.global SendPrimitive
-.global GetGPUStatus
-
-GPU_dw:
- li $9, 0x46
-8003b694: 24090046 08000028 00000000 00000000 F..$(...........
-
-8003b6a4 <mem2vram>:
- j 0xa0
- nop
-
-mem2vram:
- li $9, 0x47
-8003b6a4: 24090047 08000028 00000000 00000000 G..$(...........
-
-8003b6b4 <ResetEntryInt>:
- nop
-
-.global ResetEntryInt
-
-ResetEntryInt:
- li $9, 0x18
-8003b6b4: 24090018 0800002c 00000000 00000000 ...$,...........
-
-8003b6c4 <GetKernelDate>:
-.global GetKernelDate
-.global GetKernelRomVersion
-.global GetRamSize
-
-GetKernelDate:
- li $9, 0xb4
-8003b6c4: 240900b4 24040000 08000028 00000000 ...$...$(.......
- li $4, 0
- j 0xa0
- nop
-8003b6d4: 00000000 ....
-
-8003b6d8 <GetKernelRomVersion>:
-
-GetKernelRomVersion:
- li $9, 0xb4
-8003b6d8: 240900b4 24040002 08000028 00000000 ...$...$(.......
- li $4, 2
- j 0xa0
- nop
-8003b6e8: 00000000 ....
-
-8003b6ec <GetRamSize>:
-
-GetRamSize:
- li $9, 0xb4
-8003b6ec: 240900b4 24040005 08000028 00000000 ...$...$(.......
- li $4, 5
- j 0xa0
- nop
-8003b6fc: 00000000 ....
-
-8003b700 <OpenEvent>:
-.global WaitEvent
-.global TestEvent
-.global DeliverEvent
-
-OpenEvent:
- li $9, 0x08
-8003b700: 24090008 0800002c 00000000 00000000 ...$,...........
-
-8003b710 <EnableEvent>:
- j 0xb0
- nop
-
-EnableEvent:
- li $9, 0x0c
-8003b710: 2409000c 0800002c 00000000 00000000 ...$,...........
-
-8003b720 <CloseEvent>:
- j 0xb0
- nop
-
-CloseEvent:
- li $9, 0x09
-8003b720: 24090009 0800002c 00000000 00000000 ...$,...........
-
-8003b730 <DisableEvent>:
- j 0xb0
- nop
-
-DisableEvent:
- li $9, 0x0d
-8003b730: 2409000d 0800002c 00000000 00000000 ...$,...........
-
-8003b740 <DeliverEvent>:
- j 0xb0
- nop
-
-DeliverEvent:
- li $9, 0x07
-8003b740: 24090007 0800002c 00000000 00000000 ...$,...........
-
-8003b750 <WaitEvent>:
- j 0xb0
- nop
-
-WaitEvent:
- li $9, 0x0a
-8003b750: 2409000a 0800002c 00000000 00000000 ...$,...........
-
-8003b760 <TestEvent>:
- j 0xb0
- nop
-
-TestEvent:
- li $9, 0x0b
-8003b760: 2409000b 0800002c 00000000 00000000 ...$,...........
-
-8003b770 <open>:
-.global nextfile
-.global rename
-.global remove
-
-open:
- li $9, 0x32
-8003b770: 24090032 0800002c 00000000 00000000 2..$,...........
-
-8003b780 <lseek>:
- j 0xb0
- nop
-
-lseek:
- li $9, 0x33
-8003b780: 24090033 0800002c 00000000 00000000 3..$,...........
-
-8003b790 <read>:
- j 0xb0
- nop
-
-read:
- li $9, 0x34
-8003b790: 24090034 0800002c 00000000 00000000 4..$,...........
-
-8003b7a0 <write>:
- j 0xb0
- nop
-
-write:
- li $9, 0x35
-8003b7a0: 24090035 0800002c 00000000 00000000 5..$,...........
-
-8003b7b0 <close>:
- j 0xb0
- nop
-
-close:
- li $9, 0x36
-8003b7b0: 24090036 0800002c 00000000 00000000 6..$,...........
-
-8003b7c0 <cd>:
- j 0xb0
- nop
-
-cd:
- li $9, 0x40
-8003b7c0: 24090040 0800002c 00000000 00000000 @..$,...........
-
-8003b7d0 <firstfile>:
- j 0xb0
- nop
-
-firstfile:
- li $9, 0x42
-8003b7d0: 24090042 0800002c 00000000 00000000 B..$,...........
-
-8003b7e0 <nextfile>:
- j 0xb0
- nop
-
-nextfile:
- li $9, 0x43
-8003b7e0: 24090043 0800002c 00000000 00000000 C..$,...........
-
-8003b7f0 <rename>:
- j 0xb0
- nop
-
-rename:
- li $9, 0x44
-8003b7f0: 24090044 0800002c 00000000 00000000 D..$,...........
-
-8003b800 <remove>:
- j 0xb0
- nop
-
-remove:
- li $9, 0x45
-8003b800: 24090045 0800002c 00000000 00000000 E..$,...........
-
-8003b810 <EnterCriticalSection>:
-.global ExitCriticalSection
-.global SysEnqIntRP
-.global SysDeqIntRP
-
-EnterCriticalSection:
- li $a0, 1
-8003b810: 24040001 0000000c 00000000 03e00008 ...$............
- ...
-
-8003b828 <ExitCriticalSection>:
- nop
- jr $ra
- nop
-
-ExitCriticalSection:
- li $a0, 2
-8003b828: 24040002 0000000c 00000000 03e00008 ...$............
- ...
-
-8003b840 <SysEnqIntRP>:
- nop
- jr $ra
- nop
-
-SysEnqIntRP:
- li $9, 0x02
-8003b840: 24090002 08000030 00000000 00000000 ...$0...........
-
-8003b850 <SysDeqIntRP>:
- j 0xc0
- nop
-
-SysDeqIntRP:
- li $9, 0x03
-8003b850: 24090003 08000030 00000000 00000000 ...$0...........
-
-8003b860 <_96_init>:
-.global _96_init
-.global _96_remove
-.global _bu_init
-
-_96_init:
- li $9, 0x71
-8003b860: 24090071 08000028 00000000 00000000 q..$(...........
-
-8003b870 <_96_remove>:
- j 0xa0
- nop
-
-_96_remove:
- li $9, 0x72
-8003b870: 24090072 08000028 00000000 00000000 r..$(...........
-
-8003b880 <_bu_init>:
- j 0xa0
- nop
-
-_bu_init:
- li $9, 0x70
-8003b880: 24090070 08000028 00000000 00000000 p..$(...........
-
-8003b890 <LoadExec>:
-# Executable loading functions
-
-.global LoadExec
-
-LoadExec:
- li $9, 0x51
-8003b890: 24090051 08000028 00000000 00000000 Q..$(...........
-
-8003b8a0 <InitCARD>:
-.global _card_read
-.global _card_status
-.global _new_card
-
-InitCARD:
- li $9, 0x4a
-8003b8a0: 2409004a 0800002c 00000000 00000000 J..$,...........
-
-8003b8b0 <StartCARD>:
- j 0xb0
- nop
-
-StartCARD:
- li $9, 0x4b
-8003b8b0: 2409004b 0800002c 00000000 00000000 K..$,...........
-
-8003b8c0 <StopCARD>:
- j 0xb0
- nop
-
-StopCARD:
- li $9, 0x4c
-8003b8c0: 2409004c 0800002c 00000000 00000000 L..$,...........
-
-8003b8d0 <_card_info>:
- j 0xb0
- nop
-
-_card_info:
- li $9, 0xab
-8003b8d0: 240900ab 08000028 00000000 00000000 ...$(...........
-
-8003b8e0 <_card_load>:
- j 0xa0
- nop
-
-_card_load:
- li $9, 0xac
-8003b8e0: 240900ac 08000028 00000000 00000000 ...$(...........
-
-8003b8f0 <_card_auto>:
- j 0xa0
- nop
-
-_card_auto:
- li $9, 0xad
-8003b8f0: 240900ad 08000028 00000000 00000000 ...$(...........
-
-8003b900 <_card_write>:
- j 0xa0
- nop
-
-_card_write:
- li $9, 0x4e
-8003b900: 2409004e 0800002c 00000000 00000000 N..$,...........
-
-8003b910 <_card_read>:
- j 0xb0
- nop
-
-_card_read:
- li $9, 0x4f
-8003b910: 2409004f 0800002c 00000000 00000000 O..$,...........
-
-8003b920 <_new_card>:
- j 0xb0
- nop
-
-_new_card:
- li $9, 0x50
-8003b920: 24090050 0800002c 00000000 00000000 P..$,...........
-
-8003b930 <_card_status>:
- j 0xb0
- nop
-
-_card_status:
- li $9, 0x5c
-8003b930: 2409005c 0800002c 00000000 00000000 \..$,...........
-
-8003b940 <PrintInstalledDevices>:
-# Device functions
-
-.global PrintInstalledDevices
-
-PrintInstalledDevices:
- li $9, 0x49
-8003b940: 24090049 0800002c 00000000 00000000 I..$,...........
-
-8003b950 <BIOSWarmReboot>:
- nop
-
-.global BIOSWarmReboot
-
-BIOSWarmReboot:
- li $9, 0xa0
-8003b950: 240900a0 00000000 08000028 00000000 ...$....(.......
-
-8003b960 <SetCDROMHandler>:
-volatile int __psxsdk_gpu_dma_finished;
-
-extern void _internal_cdromlib_callback();
-
-void SetCDROMHandler(void)
-{
-8003b960: 27bdffe8 addiu sp,sp,-24
-8003b964: afbf0014 sw ra,20(sp)
-8003b968: afbe0010 sw s8,16(sp)
-8003b96c: 03a0f021 move s8,sp
- _EXC_cdrom_handler_set = 1;
-8003b970: 3c028007 lui v0,0x8007
-8003b974: 24030001 li v1,1
-8003b978: ac431d84 sw v1,7556(v0)
- _EXC_cdrom_handler = _internal_cdromlib_callback;
-8003b97c: 3c028007 lui v0,0x8007
-8003b980: 3c038003 lui v1,0x8003
-8003b984: 2463ac44 addiu v1,v1,-21436
-8003b988: ac431d80 sw v1,7552(v0)
- IMASK = /* VBLANK */ 1 | /* CDROM */ 4 | /* DMA */8;
-8003b98c: 3c021f80 lui v0,0x1f80
-8003b990: 34421074 ori v0,v0,0x1074
-8003b994: 2403000d li v1,13
-8003b998: ac430000 sw v1,0(v0)
- printf("SetCDROMHandler\n");
-8003b99c: 3c028004 lui v0,0x8004
-8003b9a0: 24440044 addiu a0,v0,68
-8003b9a4: 0c00ed8f jal 8003b63c <printf>
-8003b9a8: 00000000 nop
-}
-8003b9ac: 00000000 nop
-8003b9b0: 03c0e821 move sp,s8
-8003b9b4: 8fbf0014 lw ra,20(sp)
-8003b9b8: 8fbe0010 lw s8,16(sp)
-8003b9bc: 27bd0018 addiu sp,sp,24
-8003b9c0: 03e00008 jr ra
-8003b9c4: 00000000 nop
-
-8003b9c8 <__psxsdk_real_exception_handler>:
-
-void __psxsdk_real_exception_handler()
-{
-8003b9c8: 27bdffd0 addiu sp,sp,-48
-8003b9cc: afbf002c sw ra,44(sp)
-8003b9d0: afbe0028 sw s8,40(sp)
-8003b9d4: 03a0f021 move s8,sp
- unsigned int Cause = get_cop0_register(COP0_CAUSE);
-8003b9d8: 2404000d li a0,13
-8003b9dc: 0c00f00c jal 8003c030 <get_cop0_register>
-8003b9e0: 00000000 nop
-8003b9e4: afc20014 sw v0,20(s8)
- unsigned int Cause_excCode = (Cause >> 2) & 31;
-8003b9e8: 8fc20014 lw v0,20(s8)
-8003b9ec: 00000000 nop
-8003b9f0: 00021082 srl v0,v0,0x2
-8003b9f4: 3042001f andi v0,v0,0x1f
-8003b9f8: afc20018 sw v0,24(s8)
- unsigned int Cause_IP = (Cause >> 8) & 255;
-8003b9fc: 8fc20014 lw v0,20(s8)
-8003ba00: 00000000 nop
-8003ba04: 00021202 srl v0,v0,0x8
-8003ba08: 304200ff andi v0,v0,0xff
-8003ba0c: afc2001c sw v0,28(s8)
- unsigned int SR = get_cop0_register(COP0_SR);
-8003ba10: 2404000c li a0,12
-8003ba14: 0c00f00c jal 8003c030 <get_cop0_register>
-8003ba18: 00000000 nop
-8003ba1c: afc20020 sw v0,32(s8)
- unsigned int SR_IM = (SR >> 8) & 255;
-8003ba20: 8fc20020 lw v0,32(s8)
-8003ba24: 00000000 nop
-8003ba28: 00021202 srl v0,v0,0x8
-8003ba2c: 304200ff andi v0,v0,0xff
-8003ba30: afc20024 sw v0,36(s8)
-/* unsigned int oldSR = SR;
- unsigned int psxIP = IPENDING;
- unsigned int psxIM = IMASK;
- unsigned int sio_data;*/
-
- if(Cause_excCode == 0) // interrupt generated the exception
-8003ba34: 8fc20018 lw v0,24(s8)
-8003ba38: 00000000 nop
-8003ba3c: 14400078 bnez v0,8003bc20 <__psxsdk_real_exception_handler+0x258>
-8003ba40: 00000000 nop
- break;
- }
- }
- }*/
-
- if((Cause_IP & (1<<2)) && (SR_IM & (1<<2)))
-8003ba44: 8fc2001c lw v0,28(s8)
-8003ba48: 00000000 nop
-8003ba4c: 30420004 andi v0,v0,0x4
-8003ba50: 10400073 beqz v0,8003bc20 <__psxsdk_real_exception_handler+0x258>
-8003ba54: 00000000 nop
-8003ba58: 8fc20024 lw v0,36(s8)
-8003ba5c: 00000000 nop
-8003ba60: 30420004 andi v0,v0,0x4
-8003ba64: 1040006e beqz v0,8003bc20 <__psxsdk_real_exception_handler+0x258>
-8003ba68: 00000000 nop
- {
- Cause ^= 1<<10;
-8003ba6c: 8fc20014 lw v0,20(s8)
-8003ba70: 00000000 nop
-8003ba74: 38420400 xori v0,v0,0x400
-8003ba78: afc20014 sw v0,20(s8)
- set_cop0_register(COP0_CAUSE, Cause);
-8003ba7c: 8fc50014 lw a1,20(s8)
-8003ba80: 2404000d li a0,13
-8003ba84: 0c00f072 jal 8003c1c8 <set_cop0_register>
-8003ba88: 00000000 nop
- //SR ^= 1<<10;
- //set_cop0_register(COP0_SR, SR);
-
- //while(IPENDING != 0)
- {
- for(i = 0; i < 11; i++)
-8003ba8c: afc00010 sw zero,16(s8)
-8003ba90: 1000005e b 8003bc0c <__psxsdk_real_exception_handler+0x244>
-8003ba94: 00000000 nop
- {
- if(IPENDING & (1<<i))
-8003ba98: 3c021f80 lui v0,0x1f80
-8003ba9c: 34421070 ori v0,v0,0x1070
-8003baa0: 8c420000 lw v0,0(v0)
-8003baa4: 24040001 li a0,1
-8003baa8: 8fc30010 lw v1,16(s8)
-8003baac: 00000000 nop
-8003bab0: 00641804 sllv v1,a0,v1
-8003bab4: 00431024 and v0,v0,v1
-8003bab8: 10400050 beqz v0,8003bbfc <__psxsdk_real_exception_handler+0x234>
-8003babc: 00000000 nop
-// Very interesting, when reading joypad status the PCSXR emulator sets in IPENDING that IRQ7 is pending even
-// if it is not enabled in IMASK! That is insane, but it can be easily worked around.
-// So we are going to disable pending bits for IRQs in IPENDING in any case, even if the in IRQ at hand was
-// not enabled in IMASK.
-
- IPENDING ^= 1 << i;
-8003bac0: 3c021f80 lui v0,0x1f80
-8003bac4: 34421070 ori v0,v0,0x1070
-8003bac8: 3c031f80 lui v1,0x1f80
-8003bacc: 34631070 ori v1,v1,0x1070
-8003bad0: 8c630000 lw v1,0(v1)
-8003bad4: 24050001 li a1,1
-8003bad8: 8fc40010 lw a0,16(s8)
-8003badc: 00000000 nop
-8003bae0: 00852004 sllv a0,a1,a0
-8003bae4: 00641826 xor v1,v1,a0
-8003bae8: ac430000 sw v1,0(v0)
-
- if(IMASK & (1<<i))
-8003baec: 3c021f80 lui v0,0x1f80
-8003baf0: 34421074 ori v0,v0,0x1074
-8003baf4: 8c420000 lw v0,0(v0)
-8003baf8: 24040001 li a0,1
-8003bafc: 8fc30010 lw v1,16(s8)
-8003bb00: 00000000 nop
-8003bb04: 00641804 sllv v1,a0,v1
-8003bb08: 00431024 and v0,v0,v1
-8003bb0c: 1040003b beqz v0,8003bbfc <__psxsdk_real_exception_handler+0x234>
-8003bb10: 00000000 nop
- {
- // printf("IM = %x\n", IMASK);
-
- switch(i)
-8003bb14: 8fc20010 lw v0,16(s8)
-8003bb18: 00000000 nop
-8003bb1c: 2c420009 sltiu v0,v0,9
-8003bb20: 10400036 beqz v0,8003bbfc <__psxsdk_real_exception_handler+0x234>
-8003bb24: 00000000 nop
-8003bb28: 8fc20010 lw v0,16(s8)
-8003bb2c: 00000000 nop
-8003bb30: 00021880 sll v1,v0,0x2
-8003bb34: 3c028004 lui v0,0x8004
-8003bb38: 24420058 addiu v0,v0,88
-8003bb3c: 00621021 addu v0,v1,v0
-8003bb40: 8c420000 lw v0,0(v0)
-8003bb44: 00000000 nop
-8003bb48: 00400008 jr v0
-8003bb4c: 00000000 nop
- case 0: // VBLANK
- // if(!(GPU_CONTROL_PORT & (1<<0x1c)))
- // GPU_CONTROL_PORT = 0x02000000;
-
- // Execute the user-supplied VBlank handler.
- if(_EXC_vblank_handler_set)
-8003bb50: 3c028007 lui v0,0x8007
-8003bb54: 8c421d74 lw v0,7540(v0)
-8003bb58: 00000000 nop
-8003bb5c: 10400020 beqz v0,8003bbe0 <__psxsdk_real_exception_handler+0x218>
-8003bb60: 00000000 nop
- _EXC_vblank_handler();
-8003bb64: 3c028007 lui v0,0x8007
-8003bb68: 8c421d8c lw v0,7564(v0)
-8003bb6c: 00000000 nop
-8003bb70: 0040f809 jalr v0
-8003bb74: 00000000 nop
- break;
-8003bb78: 10000019 b 8003bbe0 <__psxsdk_real_exception_handler+0x218>
-8003bb7c: 00000000 nop
- case 2:
- dprintf("case 2: CDROM?\n");
- if(_EXC_cdrom_handler_set)
-8003bb80: 3c028007 lui v0,0x8007
-8003bb84: 8c421d84 lw v0,7556(v0)
-8003bb88: 00000000 nop
-8003bb8c: 10400017 beqz v0,8003bbec <__psxsdk_real_exception_handler+0x224>
-8003bb90: 00000000 nop
- _EXC_cdrom_handler();
-8003bb94: 3c028007 lui v0,0x8007
-8003bb98: 8c421d80 lw v0,7552(v0)
-8003bb9c: 00000000 nop
-8003bba0: 0040f809 jalr v0
-8003bba4: 00000000 nop
- break;
-8003bba8: 10000010 b 8003bbec <__psxsdk_real_exception_handler+0x224>
-8003bbac: 00000000 nop
- case 3: // DMA
- // Execute the user-supplied DMA handler.
- dprintf("INT3\n");
- if(_EXC_dma_handler_set)
-8003bbb0: 3c028007 lui v0,0x8007
-8003bbb4: 8c421d78 lw v0,7544(v0)
-8003bbb8: 00000000 nop
-8003bbbc: 1040000e beqz v0,8003bbf8 <__psxsdk_real_exception_handler+0x230>
-8003bbc0: 00000000 nop
- _EXC_dma_handler();
-8003bbc4: 3c028007 lui v0,0x8007
-8003bbc8: 8c421d94 lw v0,7572(v0)
-8003bbcc: 00000000 nop
-8003bbd0: 0040f809 jalr v0
-8003bbd4: 00000000 nop
- break;
-8003bbd8: 10000007 b 8003bbf8 <__psxsdk_real_exception_handler+0x230>
-8003bbdc: 00000000 nop
- // GPU_CONTROL_PORT = 0x02000000;
-
- // Execute the user-supplied VBlank handler.
- if(_EXC_vblank_handler_set)
- _EXC_vblank_handler();
- break;
-8003bbe0: 00000000 nop
-8003bbe4: 10000005 b 8003bbfc <__psxsdk_real_exception_handler+0x234>
-8003bbe8: 00000000 nop
- case 2:
- dprintf("case 2: CDROM?\n");
- if(_EXC_cdrom_handler_set)
- _EXC_cdrom_handler();
- break;
-8003bbec: 00000000 nop
-8003bbf0: 10000002 b 8003bbfc <__psxsdk_real_exception_handler+0x234>
-8003bbf4: 00000000 nop
- case 3: // DMA
- // Execute the user-supplied DMA handler.
- dprintf("INT3\n");
- if(_EXC_dma_handler_set)
- _EXC_dma_handler();
- break;
-8003bbf8: 00000000 nop
- //SR ^= 1<<10;
- //set_cop0_register(COP0_SR, SR);
-
- //while(IPENDING != 0)
- {
- for(i = 0; i < 11; i++)
-8003bbfc: 8fc20010 lw v0,16(s8)
-8003bc00: 00000000 nop
-8003bc04: 24420001 addiu v0,v0,1
-8003bc08: afc20010 sw v0,16(s8)
-8003bc0c: 8fc20010 lw v0,16(s8)
-8003bc10: 00000000 nop
-8003bc14: 2842000b slti v0,v0,11
-8003bc18: 1440ff9f bnez v0,8003ba98 <__psxsdk_real_exception_handler+0xd0>
-8003bc1c: 00000000 nop
- }
- }
- }
- }
- }
-}
-8003bc20: 00000000 nop
-8003bc24: 03c0e821 move sp,s8
-8003bc28: 8fbf002c lw ra,44(sp)
-8003bc2c: 8fbe0028 lw s8,40(sp)
-8003bc30: 27bd0030 addiu sp,sp,48
-8003bc34: 03e00008 jr ra
-8003bc38: 00000000 nop
-
-8003bc3c <__psxsdk_dma_handler>:
-
-static void __psxsdk_dma_handler()
-{
-8003bc3c: 27bdfff0 addiu sp,sp,-16
-8003bc40: afbe000c sw s8,12(sp)
-8003bc44: 03a0f021 move s8,sp
- unsigned int s_dicr = DICR;
-8003bc48: 3c021f80 lui v0,0x1f80
-8003bc4c: 344210f4 ori v0,v0,0x10f4
-8003bc50: 8c420000 lw v0,0(v0)
-8003bc54: 00000000 nop
-8003bc58: afc20000 sw v0,0(s8)
- unsigned char irq = (s_dicr >> 24) & 127;
-8003bc5c: 8fc20000 lw v0,0(s8)
-8003bc60: 00000000 nop
-8003bc64: 00021602 srl v0,v0,0x18
-8003bc68: 304200ff andi v0,v0,0xff
-8003bc6c: 3042007f andi v0,v0,0x7f
-8003bc70: a3c20004 sb v0,4(s8)
-
- if(irq & (1<<2)) // GPU
-8003bc74: 93c20004 lbu v0,4(s8)
-8003bc78: 00000000 nop
-8003bc7c: 30420004 andi v0,v0,0x4
-8003bc80: 10400004 beqz v0,8003bc94 <__psxsdk_dma_handler+0x58>
-8003bc84: 00000000 nop
- __psxsdk_gpu_dma_finished = 1;
-8003bc88: 3c028007 lui v0,0x8007
-8003bc8c: 24030001 li v1,1
-8003bc90: ac431d90 sw v1,7568(v0)
-
- // Acknowledge
- DICR = s_dicr;
-8003bc94: 3c021f80 lui v0,0x1f80
-8003bc98: 344210f4 ori v0,v0,0x10f4
-8003bc9c: 8fc30000 lw v1,0(s8)
-8003bca0: 00000000 nop
-8003bca4: ac430000 sw v1,0(v0)
-
- // Waste some cycles, so that the acknowledgement is reported
-// int x;
-
-// for(x = 0; x < 1000; x++);
-}
-8003bca8: 00000000 nop
-8003bcac: 03c0e821 move sp,s8
-8003bcb0: 8fbe000c lw s8,12(sp)
-8003bcb4: 27bd0010 addiu sp,sp,16
-8003bcb8: 03e00008 jr ra
-8003bcbc: 00000000 nop
-
-8003bcc0 <__PSX_Init_NoBios>:
-
-extern void _internal_cdromlib_callback();
-
- void __PSX_Init_NoBios()
- {
-8003bcc0: 27bdffe8 addiu sp,sp,-24
-8003bcc4: afbf0014 sw ra,20(sp)
-8003bcc8: afbe0010 sw s8,16(sp)
-8003bccc: 03a0f021 move s8,sp
- _EXC_vblank_handler = NULL;
-8003bcd0: 3c028007 lui v0,0x8007
-8003bcd4: ac401d8c sw zero,7564(v0)
- _EXC_cdrom_handler = _internal_cdromlib_callback;
-8003bcd8: 3c028007 lui v0,0x8007
-8003bcdc: 3c038003 lui v1,0x8003
-8003bce0: 2463ac44 addiu v1,v1,-21436
-8003bce4: ac431d80 sw v1,7552(v0)
- _EXC_dma_handler = __psxsdk_dma_handler;
-8003bce8: 3c028007 lui v0,0x8007
-8003bcec: 3c038004 lui v1,0x8004
-8003bcf0: 2463bc3c addiu v1,v1,-17348
-8003bcf4: ac431d94 sw v1,7572(v0)
- _EXC_sio_handler = NULL;
-8003bcf8: 3c028007 lui v0,0x8007
-8003bcfc: ac401d88 sw zero,7560(v0)
-
- _EXC_vblank_handler_set = 0;
-8003bd00: 3c028007 lui v0,0x8007
-8003bd04: ac401d74 sw zero,7540(v0)
- _EXC_cdrom_handler_set = 1;
-8003bd08: 3c028007 lui v0,0x8007
-8003bd0c: 24030001 li v1,1
-8003bd10: ac431d84 sw v1,7556(v0)
- _EXC_dma_handler_set = 1;
-8003bd14: 3c028007 lui v0,0x8007
-8003bd18: 24030001 li v1,1
-8003bd1c: ac431d78 sw v1,7544(v0)
- _EXC_sio_handler_set = 0;
-8003bd20: 3c028007 lui v0,0x8007
-8003bd24: ac401d7c sw zero,7548(v0)
-
- IMASK = 0; // Clear Mask
-8003bd28: 3c021f80 lui v0,0x1f80
-8003bd2c: 34421074 ori v0,v0,0x1074
-8003bd30: ac400000 sw zero,0(v0)
- IPENDING = 0; // Clear pending interrupts
-8003bd34: 3c021f80 lui v0,0x1f80
-8003bd38: 34421070 ori v0,v0,0x1070
-8003bd3c: ac400000 sw zero,0(v0)
-
-// Disable interrupts
-
- set_cop0_register(COP0_SR, 0);
-8003bd40: 00002821 move a1,zero
-8003bd44: 2404000c li a0,12
-8003bd48: 0c00f072 jal 8003c1c8 <set_cop0_register>
-8003bd4c: 00000000 nop
-
-// Change exception vector to point to our exception manager
-
- *((unsigned int*)0x80000080) = 0x08000000 | ((((unsigned int)__psxsdk_exception_manager)>>2) & 0x3FFFFFF);
-8003bd50: 3c028000 lui v0,0x8000
-8003bd54: 34420080 ori v0,v0,0x80
-8003bd58: 3c038004 lui v1,0x8004
-8003bd5c: 2463bdf4 addiu v1,v1,-16908
-8003bd60: 00032082 srl a0,v1,0x2
-8003bd64: 3c0303ff lui v1,0x3ff
-8003bd68: 3463ffff ori v1,v1,0xffff
-8003bd6c: 00832024 and a0,a0,v1
-8003bd70: 3c030800 lui v1,0x800
-8003bd74: 00831825 or v1,a0,v1
-8003bd78: ac430000 sw v1,0(v0)
- *((unsigned int*)0x80000084) = 0;
-8003bd7c: 3c028000 lui v0,0x8000
-8003bd80: 34420084 ori v0,v0,0x84
-8003bd84: ac400000 sw zero,0(v0)
-
-
-// Enable interrupt generation, and interrupt 2 (PlayStation Interrupt Controller)
- set_cop0_register(COP0_SR, (1<<10) | 1);
-8003bd88: 24050401 li a1,1025
-8003bd8c: 2404000c li a0,12
-8003bd90: 0c00f072 jal 8003c1c8 <set_cop0_register>
-8003bd94: 00000000 nop
-
-// Enable VBlank, CDROM and DMA IRQs (on PlayStation Interrupt Controller)
- IMASK = 1 | /* CDROM */ 4 | 8;
-8003bd98: 3c021f80 lui v0,0x1f80
-8003bd9c: 34421074 ori v0,v0,0x1074
-8003bda0: 2403000d li v1,13
-8003bda4: ac430000 sw v1,0(v0)
-
-// Set DMA channel priority
- DPCR = 0x07654321;
-8003bda8: 3c021f80 lui v0,0x1f80
-8003bdac: 344210f0 ori v0,v0,0x10f0
-8003bdb0: 3c030765 lui v1,0x765
-8003bdb4: 34634321 ori v1,v1,0x4321
-8003bdb8: ac430000 sw v1,0(v0)
-
-// Enable DMA IRQ master, and IRQ generation for DMA channel 2 (GPU)
- DICR = (1<<23) | (1<<(16+2));
-8003bdbc: 3c021f80 lui v0,0x1f80
-8003bdc0: 344210f4 ori v0,v0,0x10f4
-8003bdc4: 3c030084 lui v1,0x84
-8003bdc8: ac430000 sw v1,0(v0)
-
-// Setup variables
- __psxsdk_gpu_dma_finished = 1;
-8003bdcc: 3c028007 lui v0,0x8007
-8003bdd0: 24030001 li v1,1
-8003bdd4: ac431d90 sw v1,7568(v0)
-}
-8003bdd8: 00000000 nop
-8003bddc: 03c0e821 move sp,s8
-8003bde0: 8fbf0014 lw ra,20(sp)
-8003bde4: 8fbe0010 lw s8,16(sp)
-8003bde8: 27bd0018 addiu sp,sp,24
-8003bdec: 03e00008 jr ra
-8003bdf0: 00000000 nop
-
-8003bdf4 <__psxsdk_exception_manager>:
-__psxsdk_exception_manager:
-
-# Save registers on stack
-
-.set noat
- addiu $sp, $sp, -112
-8003bdf4: 27bdff90 afa10000 afa20004 afa30008 ...'............
- sw $at, 0($sp)
- sw $v0, 4($sp)
- sw $v1, 8($sp)
- sw $a0, 12($sp)
-8003be04: afa4000c afa50010 afa60014 afa70018 ................
- sw $a1, 16($sp)
- sw $a2, 20($sp)
- sw $a3, 24($sp)
- sw $t0, 28($sp)
-8003be14: afa8001c afa90020 afaa0024 afab0028 .... ...$...(...
- sw $t1, 32($sp)
- sw $t2, 36($sp)
- sw $t3, 40($sp)
- sw $t4, 44($sp)
-8003be24: afac002c afad0030 afae0034 afaf0038 ,...0...4...8...
- sw $t5, 48($sp)
- sw $t6, 52($sp)
- sw $t7, 56($sp)
- sw $s0, 60($sp)
-8003be34: afb0003c afb10040 afb20044 afb30048 <...@...D...H...
- sw $s1, 64($sp)
- sw $s2, 68($sp)
- sw $s3, 72($sp)
- sw $s4, 76($sp)
-8003be44: afb4004c afb50050 afb60054 afb70058 L...P...T...X...
- sw $s5, 80($sp)
- sw $s6, 84($sp)
- sw $s7, 88($sp)
- sw $t8, 92($sp)
-8003be54: afb8005c afb90060 afbc0064 afbe0068 \...`...d...h...
- sw $t9, 96($sp)
- sw $gp, 100($sp)
- sw $fp, 104($sp)
- sw $ra, 108($sp)
-8003be64: afbf006c 0c00ee72 00000000 00000000 l...r...........
- nop
-
-# Load registers from stack
-
-.set noat
- lw $at, 0($sp)
-8003be74: 8fa10000 8fa20004 8fa30008 8fa4000c ................
- lw $v0, 4($sp)
- lw $v1, 8($sp)
- lw $a0, 12($sp)
- lw $a1, 16($sp)
-8003be84: 8fa50010 8fa60014 8fa70018 8fa8001c ................
- lw $a2, 20($sp)
- lw $a3, 24($sp)
- lw $t0, 28($sp)
- lw $t1, 32($sp)
-8003be94: 8fa90020 8faa0024 8fab0028 8fac002c ...$...(...,...
- lw $t2, 36($sp)
- lw $t3, 40($sp)
- lw $t4, 44($sp)
- lw $t5, 48($sp)
-8003bea4: 8fad0030 8fae0034 8faf0038 8fb0003c 0...4...8...<...
- lw $t6, 52($sp)
- lw $t7, 56($sp)
- lw $s0, 60($sp)
- lw $s1, 64($sp)
-8003beb4: 8fb10040 8fb20044 8fb30048 8fb4004c @...D...H...L...
- lw $s2, 68($sp)
- lw $s3, 72($sp)
- lw $s4, 76($sp)
- lw $s5, 80($sp)
-8003bec4: 8fb50050 8fb60054 8fb70058 8fb8005c P...T...X...\...
- lw $s6, 84($sp)
- lw $s7, 88($sp)
- lw $t8, 92($sp)
- lw $t9, 96($sp)
-8003bed4: 8fb90060 8fbc0064 8fbe0068 8fbf006c `...d...h...l...
- lw $gp, 100($sp)
- lw $fp, 104($sp)
- lw $ra, 108($sp)
- addiu $sp, $sp, 112
-8003bee4: 27bd0070 401a7000 00000000 03400008 p..'.p.@......@.
-# Get exception return address..
- mfc0 $k0, $14
-# Exit from exception handler
-.set noreorder # Do not let the assembler fill the delay slot!
- jr $k0
- rfe
-8003bef4: 42000010 ...B
-
-8003bef8 <get_cop_register>:
-#include <psx.h>
-
-unsigned int get_cop_register(unsigned char cop_num,
- unsigned char register_num)
-{
-8003bef8: 27bdffd0 addiu sp,sp,-48
-8003befc: afbf002c sw ra,44(sp)
-8003bf00: afbe0028 sw s8,40(sp)
-8003bf04: 03a0f021 move s8,sp
-8003bf08: 00801821 move v1,a0
-8003bf0c: 00a01021 move v0,a1
-8003bf10: a3c30030 sb v1,48(s8)
-8003bf14: a3c20034 sb v0,52(s8)
-// Workaround for MIPS' simplicistic instruction set...
-
- unsigned int instr[] =
-8003bf18: 3c024002 lui v0,0x4002
-8003bf1c: afc20014 sw v0,20(s8)
-8003bf20: 3c0203e0 lui v0,0x3e0
-8003bf24: 34420008 ori v0,v0,0x8
-8003bf28: afc20018 sw v0,24(s8)
-8003bf2c: afc0001c sw zero,28(s8)
-8003bf30: afc00020 sw zero,32(s8)
- {0x40020000, // cfc $v0, 0
- 0x03E00008, // jr $ra
- 0x00000000, // nop
- 0x00000000}; // nop
-
- int (*rawFunc)() = (void*)instr;
-8003bf34: 27c20014 addiu v0,s8,20
-8003bf38: afc20010 sw v0,16(s8)
-
-// Write coprocessor register number inside instruction
- instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 );
-8003bf3c: 8fc20014 lw v0,20(s8)
-8003bf40: 93c30030 lbu v1,48(s8)
-8003bf44: 00000000 nop
-8003bf48: 30630003 andi v1,v1,0x3
-8003bf4c: 00032680 sll a0,v1,0x1a
-8003bf50: 93c30034 lbu v1,52(s8)
-8003bf54: 00000000 nop
-8003bf58: 00031ac0 sll v1,v1,0xb
-8003bf5c: 3063ffff andi v1,v1,0xffff
-8003bf60: 00831825 or v1,a0,v1
-8003bf64: 00431025 or v0,v0,v1
-8003bf68: afc20014 sw v0,20(s8)
-
-// Execute modified instruction
- return rawFunc();
-8003bf6c: 8fc20010 lw v0,16(s8)
-8003bf70: 00000000 nop
-8003bf74: 0040f809 jalr v0
-8003bf78: 00000000 nop
-}
-8003bf7c: 03c0e821 move sp,s8
-8003bf80: 8fbf002c lw ra,44(sp)
-8003bf84: 8fbe0028 lw s8,40(sp)
-8003bf88: 27bd0030 addiu sp,sp,48
-8003bf8c: 03e00008 jr ra
-8003bf90: 00000000 nop
-
-8003bf94 <get_cop_ctrl_register>:
-
-unsigned int get_cop_ctrl_register(unsigned char cop_num,
- unsigned char register_num)
-{
-8003bf94: 27bdffd0 addiu sp,sp,-48
-8003bf98: afbf002c sw ra,44(sp)
-8003bf9c: afbe0028 sw s8,40(sp)
-8003bfa0: 03a0f021 move s8,sp
-8003bfa4: 00801821 move v1,a0
-8003bfa8: 00a01021 move v0,a1
-8003bfac: a3c30030 sb v1,48(s8)
-8003bfb0: a3c20034 sb v0,52(s8)
-// Workaround for MIPS' simplicistic instruction set...
- unsigned int instr[] =
-8003bfb4: 3c024042 lui v0,0x4042
-8003bfb8: afc20014 sw v0,20(s8)
-8003bfbc: 3c0203e0 lui v0,0x3e0
-8003bfc0: 34420008 ori v0,v0,0x8
-8003bfc4: afc20018 sw v0,24(s8)
-8003bfc8: afc0001c sw zero,28(s8)
-8003bfcc: afc00020 sw zero,32(s8)
- {0x40420000, // mfc $v0, 0
- 0x03E00008, // jr $ra
- 0x00000000, // nop
- 0x00000000}; // nop
-
- int (*rawFunc)() = (void*)instr;
-8003bfd0: 27c20014 addiu v0,s8,20
-8003bfd4: afc20010 sw v0,16(s8)
-
-// Write coprocessor register number inside instruction
- instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 );
-8003bfd8: 8fc20014 lw v0,20(s8)
-8003bfdc: 93c30030 lbu v1,48(s8)
-8003bfe0: 00000000 nop
-8003bfe4: 30630003 andi v1,v1,0x3
-8003bfe8: 00032680 sll a0,v1,0x1a
-8003bfec: 93c30034 lbu v1,52(s8)
-8003bff0: 00000000 nop
-8003bff4: 00031ac0 sll v1,v1,0xb
-8003bff8: 3063ffff andi v1,v1,0xffff
-8003bffc: 00831825 or v1,a0,v1
-8003c000: 00431025 or v0,v0,v1
-8003c004: afc20014 sw v0,20(s8)
-
-// Execute modified instruction
- return rawFunc();
-8003c008: 8fc20010 lw v0,16(s8)
-8003c00c: 00000000 nop
-8003c010: 0040f809 jalr v0
-8003c014: 00000000 nop
-}
-8003c018: 03c0e821 move sp,s8
-8003c01c: 8fbf002c lw ra,44(sp)
-8003c020: 8fbe0028 lw s8,40(sp)
-8003c024: 27bd0030 addiu sp,sp,48
-8003c028: 03e00008 jr ra
-8003c02c: 00000000 nop
-
-8003c030 <get_cop0_register>:
-
-unsigned int get_cop0_register(unsigned char register_num)
-{
-8003c030: 27bdffe8 addiu sp,sp,-24
-8003c034: afbf0014 sw ra,20(sp)
-8003c038: afbe0010 sw s8,16(sp)
-8003c03c: 03a0f021 move s8,sp
-8003c040: 00801021 move v0,a0
-8003c044: a3c20018 sb v0,24(s8)
- return get_cop_register(0, register_num);
-8003c048: 93c20018 lbu v0,24(s8)
-8003c04c: 00000000 nop
-8003c050: 00402821 move a1,v0
-8003c054: 00002021 move a0,zero
-8003c058: 0c00efbe jal 8003bef8 <get_cop_register>
-8003c05c: 00000000 nop
-}
-8003c060: 03c0e821 move sp,s8
-8003c064: 8fbf0014 lw ra,20(sp)
-8003c068: 8fbe0010 lw s8,16(sp)
-8003c06c: 27bd0018 addiu sp,sp,24
-8003c070: 03e00008 jr ra
-8003c074: 00000000 nop
-
-8003c078 <set_cop_register>:
-
-void set_cop_register(unsigned char cop_num,
- unsigned char register_num,
- unsigned int value)
-{
-8003c078: 27bdffd0 addiu sp,sp,-48
-8003c07c: afbf002c sw ra,44(sp)
-8003c080: afbe0028 sw s8,40(sp)
-8003c084: 03a0f021 move s8,sp
-8003c088: 00801821 move v1,a0
-8003c08c: 00a01021 move v0,a1
-8003c090: afc60038 sw a2,56(s8)
-8003c094: a3c30030 sb v1,48(s8)
-8003c098: a3c20034 sb v0,52(s8)
-// Workaround for MIPS' simplicistic instruction set...
- unsigned int instr[] =
-8003c09c: 3c024084 lui v0,0x4084
-8003c0a0: afc20014 sw v0,20(s8)
-8003c0a4: 3c0203e0 lui v0,0x3e0
-8003c0a8: 34420008 ori v0,v0,0x8
-8003c0ac: afc20018 sw v0,24(s8)
-8003c0b0: afc0001c sw zero,28(s8)
-8003c0b4: afc00020 sw zero,32(s8)
- {0x40840000, // mtc $a0, 0
- 0x03E00008, // jr $ra
- 0x00000000, // nop
- 0x00000000}; // nop
-
- void (*rawFunc)(int value) = (void*)instr;
-8003c0b8: 27c20014 addiu v0,s8,20
-8003c0bc: afc20010 sw v0,16(s8)
-
-// Write coprocessor register number inside instruction
- instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 );
-8003c0c0: 8fc20014 lw v0,20(s8)
-8003c0c4: 93c30030 lbu v1,48(s8)
-8003c0c8: 00000000 nop
-8003c0cc: 30630003 andi v1,v1,0x3
-8003c0d0: 00032680 sll a0,v1,0x1a
-8003c0d4: 93c30034 lbu v1,52(s8)
-8003c0d8: 00000000 nop
-8003c0dc: 00031ac0 sll v1,v1,0xb
-8003c0e0: 3063ffff andi v1,v1,0xffff
-8003c0e4: 00831825 or v1,a0,v1
-8003c0e8: 00431025 or v0,v0,v1
-8003c0ec: afc20014 sw v0,20(s8)
-
-// Execute modified instruction
- rawFunc(value);
-8003c0f0: 8fc30038 lw v1,56(s8)
-8003c0f4: 8fc20010 lw v0,16(s8)
-8003c0f8: 00602021 move a0,v1
-8003c0fc: 0040f809 jalr v0
-8003c100: 00000000 nop
-}
-8003c104: 00000000 nop
-8003c108: 03c0e821 move sp,s8
-8003c10c: 8fbf002c lw ra,44(sp)
-8003c110: 8fbe0028 lw s8,40(sp)
-8003c114: 27bd0030 addiu sp,sp,48
-8003c118: 03e00008 jr ra
-8003c11c: 00000000 nop
-
-8003c120 <set_cop_ctrl_register>:
-
-void set_cop_ctrl_register(unsigned char cop_num,
- unsigned char register_num,
- unsigned int value)
-{
-8003c120: 27bdffd0 addiu sp,sp,-48
-8003c124: afbf002c sw ra,44(sp)
-8003c128: afbe0028 sw s8,40(sp)
-8003c12c: 03a0f021 move s8,sp
-8003c130: 00801821 move v1,a0
-8003c134: 00a01021 move v0,a1
-8003c138: afc60038 sw a2,56(s8)
-8003c13c: a3c30030 sb v1,48(s8)
-8003c140: a3c20034 sb v0,52(s8)
-// Workaround for MIPS' simplicistic instruction set...
- unsigned int instr[] =
-8003c144: 3c0240c4 lui v0,0x40c4
-8003c148: afc20014 sw v0,20(s8)
-8003c14c: 3c0203e0 lui v0,0x3e0
-8003c150: 34420008 ori v0,v0,0x8
-8003c154: afc20018 sw v0,24(s8)
-8003c158: afc0001c sw zero,28(s8)
-8003c15c: afc00020 sw zero,32(s8)
- {0x40C40000, // ctc $a0, 0
- 0x03E00008, // jr $ra
- 0x00000000, // nop
- 0x00000000}; // nop
-
- void (*rawFunc)(int value) = (void*)instr;
-8003c160: 27c20014 addiu v0,s8,20
-8003c164: afc20010 sw v0,16(s8)
-
-// Write coprocessor register number inside instruction
- instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 );
-8003c168: 8fc20014 lw v0,20(s8)
-8003c16c: 93c30030 lbu v1,48(s8)
-8003c170: 00000000 nop
-8003c174: 30630003 andi v1,v1,0x3
-8003c178: 00032680 sll a0,v1,0x1a
-8003c17c: 93c30034 lbu v1,52(s8)
-8003c180: 00000000 nop
-8003c184: 00031ac0 sll v1,v1,0xb
-8003c188: 3063ffff andi v1,v1,0xffff
-8003c18c: 00831825 or v1,a0,v1
-8003c190: 00431025 or v0,v0,v1
-8003c194: afc20014 sw v0,20(s8)
-
-// Execute modified instruction
- rawFunc(value);
-8003c198: 8fc30038 lw v1,56(s8)
-8003c19c: 8fc20010 lw v0,16(s8)
-8003c1a0: 00602021 move a0,v1
-8003c1a4: 0040f809 jalr v0
-8003c1a8: 00000000 nop
-}
-8003c1ac: 00000000 nop
-8003c1b0: 03c0e821 move sp,s8
-8003c1b4: 8fbf002c lw ra,44(sp)
-8003c1b8: 8fbe0028 lw s8,40(sp)
-8003c1bc: 27bd0030 addiu sp,sp,48
-8003c1c0: 03e00008 jr ra
-8003c1c4: 00000000 nop
-
-8003c1c8 <set_cop0_register>:
-
-void set_cop0_register(unsigned char register_num,
- unsigned int value)
-{
-8003c1c8: 27bdffe8 addiu sp,sp,-24
-8003c1cc: afbf0014 sw ra,20(sp)
-8003c1d0: afbe0010 sw s8,16(sp)
-8003c1d4: 03a0f021 move s8,sp
-8003c1d8: 00801021 move v0,a0
-8003c1dc: afc5001c sw a1,28(s8)
-8003c1e0: a3c20018 sb v0,24(s8)
- set_cop_register(0, register_num, value);
-8003c1e4: 93c20018 lbu v0,24(s8)
-8003c1e8: 8fc6001c lw a2,28(s8)
-8003c1ec: 00402821 move a1,v0
-8003c1f0: 00002021 move a0,zero
-8003c1f4: 0c00f01e jal 8003c078 <set_cop_register>
-8003c1f8: 00000000 nop
-}
-8003c1fc: 00000000 nop
-8003c200: 03c0e821 move sp,s8
-8003c204: 8fbf0014 lw ra,20(sp)
-8003c208: 8fbe0010 lw s8,16(sp)
-8003c20c: 27bd0018 addiu sp,sp,24
-8003c210: 03e00008 jr ra
-8003c214: 00000000 nop
-
-8003c218 <run_cop_instruction>:
-
-void run_cop_instruction(unsigned char cop_num,
- unsigned int operation)
-{
-8003c218: 27bdffd0 addiu sp,sp,-48
-8003c21c: afbf002c sw ra,44(sp)
-8003c220: afbe0028 sw s8,40(sp)
-8003c224: 03a0f021 move s8,sp
-8003c228: 00801021 move v0,a0
-8003c22c: afc50034 sw a1,52(s8)
-8003c230: a3c20030 sb v0,48(s8)
-// Workaround for MIPS' simplicistic instruction set...
- unsigned int instr[] =
-8003c234: 3c024200 lui v0,0x4200
-8003c238: afc20014 sw v0,20(s8)
-8003c23c: 3c0203e0 lui v0,0x3e0
-8003c240: 34420008 ori v0,v0,0x8
-8003c244: afc20018 sw v0,24(s8)
-8003c248: afc0001c sw zero,28(s8)
-8003c24c: afc00020 sw zero,32(s8)
- {0x42000000, // cop 0
- 0x03E00008, // jr $ra
- 0x00000000, // nop
- 0x00000000}; // nop
-
- void (*rawFunc)(void) = (void*)instr;
-8003c250: 27c20014 addiu v0,s8,20
-8003c254: afc20010 sw v0,16(s8)
-
-// Write coprocessor register number inside instruction
- instr[0] |= ( (cop_num & 3) << 26 ) | (operation & 0x1ffffff);
-8003c258: 8fc30014 lw v1,20(s8)
-8003c25c: 93c20030 lbu v0,48(s8)
-8003c260: 00000000 nop
-8003c264: 30420003 andi v0,v0,0x3
-8003c268: 00021680 sll v0,v0,0x1a
-8003c26c: 00402821 move a1,v0
-8003c270: 8fc40034 lw a0,52(s8)
-8003c274: 3c0201ff lui v0,0x1ff
-8003c278: 3442ffff ori v0,v0,0xffff
-8003c27c: 00821024 and v0,a0,v0
-8003c280: 00a21025 or v0,a1,v0
-8003c284: 00621025 or v0,v1,v0
-8003c288: afc20014 sw v0,20(s8)
-
-// Execute modified instruction
- rawFunc();
-8003c28c: 8fc20010 lw v0,16(s8)
-8003c290: 00000000 nop
-8003c294: 0040f809 jalr v0
-8003c298: 00000000 nop
-}
-8003c29c: 00000000 nop
-8003c2a0: 03c0e821 move sp,s8
-8003c2a4: 8fbf002c lw ra,44(sp)
-8003c2a8: 8fbe0028 lw s8,40(sp)
-8003c2ac: 27bd0030 addiu sp,sp,48
-8003c2b0: 03e00008 jr ra
-8003c2b4: 00000000 nop
-
-8003c2b8 <__udivdi3>:
-8003c2b8: 00c04021 move t0,a2
-8003c2bc: 00804821 move t1,a0
-8003c2c0: 14e00053 bnez a3,8003c410 <__udivdi3+0x158>
-8003c2c4: 00a05021 move t2,a1
-8003c2c8: 00a6102b sltu v0,a1,a2
-8003c2cc: 1040006e beqz v0,8003c488 <__udivdi3+0x1d0>
-8003c2d0: 3c020001 lui v0,0x1
-8003c2d4: 00c2102b sltu v0,a2,v0
-8003c2d8: 10400162 beqz v0,8003c864 <__udivdi3+0x5ac>
-8003c2dc: 3c020100 lui v0,0x100
-8003c2e0: 2cc30100 sltiu v1,a2,256
-8003c2e4: 2c630001 sltiu v1,v1,1
-8003c2e8: 000318c0 sll v1,v1,0x3
-8003c2ec: 3c028004 lui v0,0x8004
-8003c2f0: 00663806 srlv a3,a2,v1
-8003c2f4: 2442f818 addiu v0,v0,-2024
-8003c2f8: 00e21021 addu v0,a3,v0
-8003c2fc: 90420000 lbu v0,0(v0)
-8003c300: 00000000 nop
-8003c304: 00431821 addu v1,v0,v1
-8003c308: 24020020 li v0,32
-8003c30c: 00431023 subu v0,v0,v1
-8003c310: 10400007 beqz v0,8003c330 <__udivdi3+0x78>
-8003c314: 00085c02 srl t3,t0,0x10
-8003c318: 00453804 sllv a3,a1,v0
-8003c31c: 00641806 srlv v1,a0,v1
-8003c320: 00464004 sllv t0,a2,v0
-8003c324: 00675025 or t2,v1,a3
-8003c328: 00444804 sllv t1,a0,v0
-8003c32c: 00085c02 srl t3,t0,0x10
-8003c330: 15600002 bnez t3,8003c33c <__udivdi3+0x84>
-8003c334: 014b001b divu zero,t2,t3
-8003c338: 0007000d break 0x7
-8003c33c: 3104ffff andi a0,t0,0xffff
-8003c340: 00091402 srl v0,t1,0x10
-8003c344: 00001812 mflo v1
-8003c348: 00003010 mfhi a2
-8003c34c: 00063400 sll a2,a2,0x10
-8003c350: 00461025 or v0,v0,a2
-8003c354: 00830018 mult a0,v1
-8003c358: 00002812 mflo a1
-8003c35c: 0045302b sltu a2,v0,a1
-8003c360: 00000000 nop
-8003c364: 15600002 bnez t3,8003c370 <__udivdi3+0xb8>
-8003c368: 014b001b divu zero,t2,t3
-8003c36c: 0007000d break 0x7
-8003c370: 10c00009 beqz a2,8003c398 <__udivdi3+0xe0>
-8003c374: 00000000 nop
-8003c378: 00481021 addu v0,v0,t0
-8003c37c: 0048302b sltu a2,v0,t0
-8003c380: 14c00004 bnez a2,8003c394 <__udivdi3+0xdc>
-8003c384: 2467ffff addiu a3,v1,-1
-8003c388: 0045302b sltu a2,v0,a1
-8003c38c: 14c0015f bnez a2,8003c90c <__udivdi3+0x654>
-8003c390: 2463fffe addiu v1,v1,-2
-8003c394: 00e01821 move v1,a3
-8003c398: 00452823 subu a1,v0,a1
-8003c39c: 3129ffff andi t1,t1,0xffff
-8003c3a0: 15600002 bnez t3,8003c3ac <__udivdi3+0xf4>
-8003c3a4: 00ab001b divu zero,a1,t3
-8003c3a8: 0007000d break 0x7
-8003c3ac: 00001012 mflo v0
-8003c3b0: 00003010 mfhi a2
-8003c3b4: 00063400 sll a2,a2,0x10
-8003c3b8: 01264825 or t1,t1,a2
-8003c3bc: 00820018 mult a0,v0
-8003c3c0: 00002012 mflo a0
-8003c3c4: 0124302b sltu a2,t1,a0
-8003c3c8: 00000000 nop
-8003c3cc: 15600002 bnez t3,8003c3d8 <__udivdi3+0x120>
-8003c3d0: 00ab001b divu zero,a1,t3
-8003c3d4: 0007000d break 0x7
-8003c3d8: 10c00008 beqz a2,8003c3fc <__udivdi3+0x144>
-8003c3dc: 01094821 addu t1,t0,t1
-8003c3e0: 0128402b sltu t0,t1,t0
-8003c3e4: 15000128 bnez t0,8003c888 <__udivdi3+0x5d0>
-8003c3e8: 2445ffff addiu a1,v0,-1
-8003c3ec: 0124482b sltu t1,t1,a0
-8003c3f0: 11200125 beqz t1,8003c888 <__udivdi3+0x5d0>
-8003c3f4: 00000000 nop
-8003c3f8: 2442fffe addiu v0,v0,-2
-8003c3fc: 00031c00 sll v1,v1,0x10
-8003c400: 00621025 or v0,v1,v0
-8003c404: 00001821 move v1,zero
-8003c408: 03e00008 jr ra
-8003c40c: 00000000 nop
-8003c410: 00a7102b sltu v0,a1,a3
-8003c414: 14400070 bnez v0,8003c5d8 <__udivdi3+0x320>
-8003c418: 00001821 move v1,zero
-8003c41c: 3c020001 lui v0,0x1
-8003c420: 00e2102b sltu v0,a3,v0
-8003c424: 1440006f bnez v0,8003c5e4 <__udivdi3+0x32c>
-8003c428: 2ce80100 sltiu t0,a3,256
-8003c42c: 3c020100 lui v0,0x100
-8003c430: 00e2102b sltu v0,a3,v0
-8003c434: 10400002 beqz v0,8003c440 <__udivdi3+0x188>
-8003c438: 24080018 li t0,24
-8003c43c: 24080010 li t0,16
-8003c440: 3c028004 lui v0,0x8004
-8003c444: 01071806 srlv v1,a3,t0
-8003c448: 2442f818 addiu v0,v0,-2024
-8003c44c: 00621021 addu v0,v1,v0
-8003c450: 90430000 lbu v1,0(v0)
-8003c454: 240b0020 li t3,32
-8003c458: 00684021 addu t0,v1,t0
-8003c45c: 01685823 subu t3,t3,t0
-8003c460: 1560006c bnez t3,8003c614 <__udivdi3+0x35c>
-8003c464: 01061006 srlv v0,a2,t0
-8003c468: 00e5382b sltu a3,a3,a1
-8003c46c: 14e00113 bnez a3,8003c8bc <__udivdi3+0x604>
-8003c470: 00000000 nop
-8003c474: 0086102b sltu v0,a0,a2
-8003c478: 38420001 xori v0,v0,0x1
-8003c47c: 00001821 move v1,zero
-8003c480: 03e00008 jr ra
-8003c484: 00000000 nop
-8003c488: 14c00008 bnez a2,8003c4ac <__udivdi3+0x1f4>
-8003c48c: 0102102b sltu v0,t0,v0
-8003c490: 24020001 li v0,1
-8003c494: 14c00002 bnez a2,8003c4a0 <__udivdi3+0x1e8>
-8003c498: 0046001b divu zero,v0,a2
-8003c49c: 0007000d break 0x7
-8003c4a0: 00004012 mflo t0
-8003c4a4: 3c020001 lui v0,0x1
-8003c4a8: 0102102b sltu v0,t0,v0
-8003c4ac: 1440009c bnez v0,8003c720 <__udivdi3+0x468>
-8003c4b0: 2d060100 sltiu a2,t0,256
-8003c4b4: 3c020100 lui v0,0x100
-8003c4b8: 0102102b sltu v0,t0,v0
-8003c4bc: 10400002 beqz v0,8003c4c8 <__udivdi3+0x210>
-8003c4c0: 24060018 li a2,24
-8003c4c4: 24060010 li a2,16
-8003c4c8: 3c028004 lui v0,0x8004
-8003c4cc: 00c81806 srlv v1,t0,a2
-8003c4d0: 2442f818 addiu v0,v0,-2024
-8003c4d4: 00621021 addu v0,v1,v0
-8003c4d8: 90430000 lbu v1,0(v0)
-8003c4dc: 240c0020 li t4,32
-8003c4e0: 00663021 addu a2,v1,a2
-8003c4e4: 01866023 subu t4,t4,a2
-8003c4e8: 15800099 bnez t4,8003c750 <__udivdi3+0x498>
-8003c4ec: 00000000 nop
-8003c4f0: 00a82823 subu a1,a1,t0
-8003c4f4: 00085402 srl t2,t0,0x10
-8003c4f8: 3104ffff andi a0,t0,0xffff
-8003c4fc: 24030001 li v1,1
-8003c500: 15400002 bnez t2,8003c50c <__udivdi3+0x254>
-8003c504: 00aa001b divu zero,a1,t2
-8003c508: 0007000d break 0x7
-8003c50c: 00091402 srl v0,t1,0x10
-8003c510: 00003812 mflo a3
-8003c514: 00003010 mfhi a2
-8003c518: 00063400 sll a2,a2,0x10
-8003c51c: 00461025 or v0,v0,a2
-8003c520: 00e40018 mult a3,a0
-8003c524: 00005812 mflo t3
-8003c528: 004b302b sltu a2,v0,t3
-8003c52c: 00000000 nop
-8003c530: 15400002 bnez t2,8003c53c <__udivdi3+0x284>
-8003c534: 00aa001b divu zero,a1,t2
-8003c538: 0007000d break 0x7
-8003c53c: 10c0000a beqz a2,8003c568 <__udivdi3+0x2b0>
-8003c540: 004b2823 subu a1,v0,t3
-8003c544: 00481021 addu v0,v0,t0
-8003c548: 0048282b sltu a1,v0,t0
-8003c54c: 14a00004 bnez a1,8003c560 <__udivdi3+0x2a8>
-8003c550: 24e6ffff addiu a2,a3,-1
-8003c554: 004b282b sltu a1,v0,t3
-8003c558: 14a000ea bnez a1,8003c904 <__udivdi3+0x64c>
-8003c55c: 24e7fffe addiu a3,a3,-2
-8003c560: 00c03821 move a3,a2
-8003c564: 004b2823 subu a1,v0,t3
-8003c568: 3129ffff andi t1,t1,0xffff
-8003c56c: 15400002 bnez t2,8003c578 <__udivdi3+0x2c0>
-8003c570: 00aa001b divu zero,a1,t2
-8003c574: 0007000d break 0x7
-8003c578: 00001012 mflo v0
-8003c57c: 00003010 mfhi a2
-8003c580: 00063400 sll a2,a2,0x10
-8003c584: 01264825 or t1,t1,a2
-8003c588: 00440018 mult v0,a0
-8003c58c: 00002012 mflo a0
-8003c590: 0124302b sltu a2,t1,a0
-8003c594: 00000000 nop
-8003c598: 15400002 bnez t2,8003c5a4 <__udivdi3+0x2ec>
-8003c59c: 00aa001b divu zero,a1,t2
-8003c5a0: 0007000d break 0x7
-8003c5a4: 10c00008 beqz a2,8003c5c8 <__udivdi3+0x310>
-8003c5a8: 01094821 addu t1,t0,t1
-8003c5ac: 0128402b sltu t0,t1,t0
-8003c5b0: 150000b1 bnez t0,8003c878 <__udivdi3+0x5c0>
-8003c5b4: 2445ffff addiu a1,v0,-1
-8003c5b8: 0124482b sltu t1,t1,a0
-8003c5bc: 112000ae beqz t1,8003c878 <__udivdi3+0x5c0>
-8003c5c0: 00000000 nop
-8003c5c4: 2442fffe addiu v0,v0,-2
-8003c5c8: 00073c00 sll a3,a3,0x10
-8003c5cc: 00e21025 or v0,a3,v0
-8003c5d0: 03e00008 jr ra
-8003c5d4: 00000000 nop
-8003c5d8: 00001021 move v0,zero
-8003c5dc: 03e00008 jr ra
-8003c5e0: 00000000 nop
-8003c5e4: 2d080001 sltiu t0,t0,1
-8003c5e8: 000840c0 sll t0,t0,0x3
-8003c5ec: 3c028004 lui v0,0x8004
-8003c5f0: 01071806 srlv v1,a3,t0
-8003c5f4: 2442f818 addiu v0,v0,-2024
-8003c5f8: 00621021 addu v0,v1,v0
-8003c5fc: 90430000 lbu v1,0(v0)
-8003c600: 240b0020 li t3,32
-8003c604: 00684021 addu t0,v1,t0
-8003c608: 01685823 subu t3,t3,t0
-8003c60c: 1160ff96 beqz t3,8003c468 <__udivdi3+0x1b0>
-8003c610: 01061006 srlv v0,a2,t0
-8003c614: 01673804 sllv a3,a3,t3
-8003c618: 00e23825 or a3,a3,v0
-8003c61c: 01056806 srlv t5,a1,t0
-8003c620: 00076402 srl t4,a3,0x10
-8003c624: 15800002 bnez t4,8003c630 <__udivdi3+0x378>
-8003c628: 01ac001b divu zero,t5,t4
-8003c62c: 0007000d break 0x7
-8003c630: 30eeffff andi t6,a3,0xffff
-8003c634: 01044006 srlv t0,a0,t0
-8003c638: 01652804 sllv a1,a1,t3
-8003c63c: 01052825 or a1,t0,a1
-8003c640: 00055402 srl t2,a1,0x10
-8003c644: 00001812 mflo v1
-8003c648: 00007810 mfhi t7
-8003c64c: 000f4400 sll t0,t7,0x10
-8003c650: 01484025 or t0,t2,t0
-8003c654: 01c30018 mult t6,v1
-8003c658: 00004812 mflo t1
-8003c65c: 0109102b sltu v0,t0,t1
-8003c660: 00000000 nop
-8003c664: 15800002 bnez t4,8003c670 <__udivdi3+0x3b8>
-8003c668: 01ac001b divu zero,t5,t4
-8003c66c: 0007000d break 0x7
-8003c670: 10400006 beqz v0,8003c68c <__udivdi3+0x3d4>
-8003c674: 01663004 sllv a2,a2,t3
-8003c678: 01074021 addu t0,t0,a3
-8003c67c: 0107102b sltu v0,t0,a3
-8003c680: 10400097 beqz v0,8003c8e0 <__udivdi3+0x628>
-8003c684: 246affff addiu t2,v1,-1
-8003c688: 01401821 move v1,t2
-8003c68c: 01094823 subu t1,t0,t1
-8003c690: 30a8ffff andi t0,a1,0xffff
-8003c694: 15800002 bnez t4,8003c6a0 <__udivdi3+0x3e8>
-8003c698: 012c001b divu zero,t1,t4
-8003c69c: 0007000d break 0x7
-8003c6a0: 00001012 mflo v0
-8003c6a4: 00006810 mfhi t5
-8003c6a8: 000d2c00 sll a1,t5,0x10
-8003c6ac: 01052825 or a1,t0,a1
-8003c6b0: 01c20018 mult t6,v0
-8003c6b4: 00005012 mflo t2
-8003c6b8: 00aa402b sltu t0,a1,t2
-8003c6bc: 00000000 nop
-8003c6c0: 15800002 bnez t4,8003c6cc <__udivdi3+0x414>
-8003c6c4: 012c001b divu zero,t1,t4
-8003c6c8: 0007000d break 0x7
-8003c6cc: 11000006 beqz t0,8003c6e8 <__udivdi3+0x430>
-8003c6d0: 00000000 nop
-8003c6d4: 00a72821 addu a1,a1,a3
-8003c6d8: 00a7402b sltu t0,a1,a3
-8003c6dc: 1100007b beqz t0,8003c8cc <__udivdi3+0x614>
-8003c6e0: 2449ffff addiu t1,v0,-1
-8003c6e4: 01201021 move v0,t1
-8003c6e8: 00031c00 sll v1,v1,0x10
-8003c6ec: 00621025 or v0,v1,v0
-8003c6f0: 00aa2823 subu a1,a1,t2
-8003c6f4: 00460019 multu v0,a2
-8003c6f8: 00003810 mfhi a3
-8003c6fc: 00a7182b sltu v1,a1,a3
-8003c700: 00003012 mflo a2
-8003c704: 14600066 bnez v1,8003c8a0 <__udivdi3+0x5e8>
-8003c708: 00000000 nop
-8003c70c: 10a70060 beq a1,a3,8003c890 <__udivdi3+0x5d8>
-8003c710: 00000000 nop
-8003c714: 00001821 move v1,zero
-8003c718: 03e00008 jr ra
-8003c71c: 00000000 nop
-8003c720: 2cc60001 sltiu a2,a2,1
-8003c724: 000630c0 sll a2,a2,0x3
-8003c728: 3c028004 lui v0,0x8004
-8003c72c: 00c81806 srlv v1,t0,a2
-8003c730: 2442f818 addiu v0,v0,-2024
-8003c734: 00621021 addu v0,v1,v0
-8003c738: 90430000 lbu v1,0(v0)
-8003c73c: 240c0020 li t4,32
-8003c740: 00663021 addu a2,v1,a2
-8003c744: 01866023 subu t4,t4,a2
-8003c748: 1180ff69 beqz t4,8003c4f0 <__udivdi3+0x238>
-8003c74c: 00000000 nop
-8003c750: 01884004 sllv t0,t0,t4
-8003c754: 00c56806 srlv t5,a1,a2
-8003c758: 00085402 srl t2,t0,0x10
-8003c75c: 15400002 bnez t2,8003c768 <__udivdi3+0x4b0>
-8003c760: 01aa001b divu zero,t5,t2
-8003c764: 0007000d break 0x7
-8003c768: 310bffff andi t3,t0,0xffff
-8003c76c: 01853804 sllv a3,a1,t4
-8003c770: 01844804 sllv t1,a0,t4
-8003c774: 00c43006 srlv a2,a0,a2
-8003c778: 00c73825 or a3,a2,a3
-8003c77c: 00072c02 srl a1,a3,0x10
-8003c780: 00001812 mflo v1
-8003c784: 00001010 mfhi v0
-8003c788: 00021400 sll v0,v0,0x10
-8003c78c: 00a21025 or v0,a1,v0
-8003c790: 00006012 mflo t4
- ...
-8003c79c: 01630018 mult t3,v1
-8003c7a0: 00002012 mflo a0
-8003c7a4: 0044182b sltu v1,v0,a0
-8003c7a8: 00000000 nop
-8003c7ac: 15400002 bnez t2,8003c7b8 <__udivdi3+0x500>
-8003c7b0: 01aa001b divu zero,t5,t2
-8003c7b4: 0007000d break 0x7
-8003c7b8: 1060000a beqz v1,8003c7e4 <__udivdi3+0x52c>
-8003c7bc: 00000000 nop
-8003c7c0: 00481021 addu v0,v0,t0
-8003c7c4: 0048182b sltu v1,v0,t0
-8003c7c8: 1460004c bnez v1,8003c8fc <__udivdi3+0x644>
-8003c7cc: 2585ffff addiu a1,t4,-1
-8003c7d0: 0044182b sltu v1,v0,a0
-8003c7d4: 10600049 beqz v1,8003c8fc <__udivdi3+0x644>
-8003c7d8: 00000000 nop
-8003c7dc: 258cfffe addiu t4,t4,-2
-8003c7e0: 00481021 addu v0,v0,t0
-8003c7e4: 00442023 subu a0,v0,a0
-8003c7e8: 30e6ffff andi a2,a3,0xffff
-8003c7ec: 15400002 bnez t2,8003c7f8 <__udivdi3+0x540>
-8003c7f0: 008a001b divu zero,a0,t2
-8003c7f4: 0007000d break 0x7
-8003c7f8: 00001812 mflo v1
-8003c7fc: 00001010 mfhi v0
-8003c800: 00021400 sll v0,v0,0x10
-8003c804: 00c21025 or v0,a2,v0
-8003c808: 01630018 mult t3,v1
-8003c80c: 00002812 mflo a1
-8003c810: 0045302b sltu a2,v0,a1
-8003c814: 00000000 nop
-8003c818: 15400002 bnez t2,8003c824 <__udivdi3+0x56c>
-8003c81c: 008a001b divu zero,a0,t2
-8003c820: 0007000d break 0x7
-8003c824: 10c0000a beqz a2,8003c850 <__udivdi3+0x598>
-8003c828: 00000000 nop
-8003c82c: 00481021 addu v0,v0,t0
-8003c830: 0048202b sltu a0,v0,t0
-8003c834: 1480002f bnez a0,8003c8f4 <__udivdi3+0x63c>
-8003c838: 2466ffff addiu a2,v1,-1
-8003c83c: 0045202b sltu a0,v0,a1
-8003c840: 1080002c beqz a0,8003c8f4 <__udivdi3+0x63c>
-8003c844: 00000000 nop
-8003c848: 2463fffe addiu v1,v1,-2
-8003c84c: 00481021 addu v0,v0,t0
-8003c850: 000c6400 sll t4,t4,0x10
-8003c854: 00452823 subu a1,v0,a1
-8003c858: 01831825 or v1,t4,v1
-8003c85c: 1000ff28 b 8003c500 <__udivdi3+0x248>
-8003c860: 01602021 move a0,t3
-8003c864: 00c2102b sltu v0,a2,v0
-8003c868: 10400012 beqz v0,8003c8b4 <__udivdi3+0x5fc>
-8003c86c: 00000000 nop
-8003c870: 1000fe9e b 8003c2ec <__udivdi3+0x34>
-8003c874: 24030010 li v1,16
-8003c878: 00a01021 move v0,a1
-8003c87c: 00073c00 sll a3,a3,0x10
-8003c880: 1000ff53 b 8003c5d0 <__udivdi3+0x318>
-8003c884: 00e21025 or v0,a3,v0
-8003c888: 1000fedc b 8003c3fc <__udivdi3+0x144>
-8003c88c: 00a01021 move v0,a1
-8003c890: 01642004 sllv a0,a0,t3
-8003c894: 0086202b sltu a0,a0,a2
-8003c898: 1080ff9e beqz a0,8003c714 <__udivdi3+0x45c>
-8003c89c: 00000000 nop
-8003c8a0: 2442ffff addiu v0,v0,-1
-8003c8a4: 1000ff9c b 8003c718 <__udivdi3+0x460>
-8003c8a8: 00001821 move v1,zero
-8003c8ac: 1000ff06 b 8003c4c8 <__udivdi3+0x210>
-8003c8b0: 24060018 li a2,24
-8003c8b4: 1000fe8d b 8003c2ec <__udivdi3+0x34>
-8003c8b8: 24030018 li v1,24
-8003c8bc: 00001821 move v1,zero
-8003c8c0: 24020001 li v0,1
-8003c8c4: 03e00008 jr ra
-8003c8c8: 00000000 nop
-8003c8cc: 00aa402b sltu t0,a1,t2
-8003c8d0: 1100ff84 beqz t0,8003c6e4 <__udivdi3+0x42c>
-8003c8d4: 2442fffe addiu v0,v0,-2
-8003c8d8: 1000ff83 b 8003c6e8 <__udivdi3+0x430>
-8003c8dc: 00a72821 addu a1,a1,a3
-8003c8e0: 0109102b sltu v0,t0,t1
-8003c8e4: 1040ff68 beqz v0,8003c688 <__udivdi3+0x3d0>
-8003c8e8: 2463fffe addiu v1,v1,-2
-8003c8ec: 1000ff67 b 8003c68c <__udivdi3+0x3d4>
-8003c8f0: 01074021 addu t0,t0,a3
-8003c8f4: 1000ffd6 b 8003c850 <__udivdi3+0x598>
-8003c8f8: 00c01821 move v1,a2
-8003c8fc: 1000ffb9 b 8003c7e4 <__udivdi3+0x52c>
-8003c900: 00a06021 move t4,a1
-8003c904: 1000ff17 b 8003c564 <__udivdi3+0x2ac>
-8003c908: 00481021 addu v0,v0,t0
-8003c90c: 1000fea2 b 8003c398 <__udivdi3+0xe0>
-8003c910: 00481021 addu v0,v0,t0
-
-8003c914 <__umoddi3>:
-8003c914: 00c04021 move t0,a2
-8003c918: 00806821 move t5,a0
-8003c91c: 14e00052 bnez a3,8003ca68 <__umoddi3+0x154>
-8003c920: 00a01821 move v1,a1
-8003c924: 00a6102b sltu v0,a1,a2
-8003c928: 10400071 beqz v0,8003caf0 <__umoddi3+0x1dc>
-8003c92c: 3c020001 lui v0,0x1
-8003c930: 00c2102b sltu v0,a2,v0
-8003c934: 10400163 beqz v0,8003cec4 <__umoddi3+0x5b0>
-8003c938: 3c020100 lui v0,0x100
-8003c93c: 2ccb0100 sltiu t3,a2,256
-8003c940: 2d6b0001 sltiu t3,t3,1
-8003c944: 000b58c0 sll t3,t3,0x3
-8003c948: 3c028004 lui v0,0x8004
-8003c94c: 01663806 srlv a3,a2,t3
-8003c950: 2442f818 addiu v0,v0,-2024
-8003c954: 00e21021 addu v0,a3,v0
-8003c958: 904a0000 lbu t2,0(v0)
-8003c95c: 24020020 li v0,32
-8003c960: 014b4821 addu t1,t2,t3
-8003c964: 00495823 subu t3,v0,t1
-8003c968: 11600007 beqz t3,8003c988 <__umoddi3+0x74>
-8003c96c: 00086402 srl t4,t0,0x10
-8003c970: 01652804 sllv a1,a1,t3
-8003c974: 01244806 srlv t1,a0,t1
-8003c978: 01664004 sllv t0,a2,t3
-8003c97c: 01251825 or v1,t1,a1
-8003c980: 01646804 sllv t5,a0,t3
-8003c984: 00086402 srl t4,t0,0x10
-8003c988: 15800002 bnez t4,8003c994 <__umoddi3+0x80>
-8003c98c: 006c001b divu zero,v1,t4
-8003c990: 0007000d break 0x7
-8003c994: 3106ffff andi a2,t0,0xffff
-8003c998: 000d5402 srl t2,t5,0x10
-8003c99c: 00007012 mflo t6
-8003c9a0: 00004810 mfhi t1
-8003c9a4: 00094c00 sll t1,t1,0x10
-8003c9a8: 01495025 or t2,t2,t1
-8003c9ac: 00ce0018 mult a2,t6
-8003c9b0: 00007012 mflo t6
-8003c9b4: 014e782b sltu t7,t2,t6
-8003c9b8: 00000000 nop
-8003c9bc: 15800002 bnez t4,8003c9c8 <__umoddi3+0xb4>
-8003c9c0: 006c001b divu zero,v1,t4
-8003c9c4: 0007000d break 0x7
-8003c9c8: 11e00009 beqz t7,8003c9f0 <__umoddi3+0xdc>
-8003c9cc: 014e4823 subu t1,t2,t6
-8003c9d0: 01485021 addu t2,t2,t0
-8003c9d4: 0148102b sltu v0,t2,t0
-8003c9d8: 14400005 bnez v0,8003c9f0 <__umoddi3+0xdc>
-8003c9dc: 014e4823 subu t1,t2,t6
-8003c9e0: 014e102b sltu v0,t2,t6
-8003c9e4: 14400152 bnez v0,8003cf30 <__umoddi3+0x61c>
-8003c9e8: 00000000 nop
-8003c9ec: 014e4823 subu t1,t2,t6
-8003c9f0: 31a7ffff andi a3,t5,0xffff
-8003c9f4: 15800002 bnez t4,8003ca00 <__umoddi3+0xec>
-8003c9f8: 012c001b divu zero,t1,t4
-8003c9fc: 0007000d break 0x7
-8003ca00: 00001812 mflo v1
-8003ca04: 00002810 mfhi a1
-8003ca08: 00052c00 sll a1,a1,0x10
-8003ca0c: 00e52825 or a1,a3,a1
-8003ca10: 00c30018 mult a2,v1
-8003ca14: 00001812 mflo v1
-8003ca18: 00a3102b sltu v0,a1,v1
-8003ca1c: 00000000 nop
-8003ca20: 15800002 bnez t4,8003ca2c <__umoddi3+0x118>
-8003ca24: 012c001b divu zero,t1,t4
-8003ca28: 0007000d break 0x7
-8003ca2c: 10400009 beqz v0,8003ca54 <__umoddi3+0x140>
-8003ca30: 00000000 nop
-8003ca34: 00a82821 addu a1,a1,t0
-8003ca38: 00a8102b sltu v0,a1,t0
-8003ca3c: 14400005 bnez v0,8003ca54 <__umoddi3+0x140>
-8003ca40: 00000000 nop
-8003ca44: 00a3102b sltu v0,a1,v1
-8003ca48: 10400002 beqz v0,8003ca54 <__umoddi3+0x140>
-8003ca4c: 00000000 nop
-8003ca50: 00a82821 addu a1,a1,t0
-8003ca54: 00a31823 subu v1,a1,v1
-8003ca58: 01631006 srlv v0,v1,t3
-8003ca5c: 00001821 move v1,zero
-8003ca60: 03e00008 jr ra
-8003ca64: 00000000 nop
-8003ca68: 00a7102b sltu v0,a1,a3
-8003ca6c: 14400073 bnez v0,8003cc3c <__umoddi3+0x328>
-8003ca70: 00801021 move v0,a0
-8003ca74: 3c020001 lui v0,0x1
-8003ca78: 00e2102b sltu v0,a3,v0
-8003ca7c: 14400072 bnez v0,8003cc48 <__umoddi3+0x334>
-8003ca80: 2ce80100 sltiu t0,a3,256
-8003ca84: 3c020100 lui v0,0x100
-8003ca88: 00e2102b sltu v0,a3,v0
-8003ca8c: 10400002 beqz v0,8003ca98 <__umoddi3+0x184>
-8003ca90: 24080018 li t0,24
-8003ca94: 24080010 li t0,16
-8003ca98: 3c028004 lui v0,0x8004
-8003ca9c: 01074806 srlv t1,a3,t0
-8003caa0: 2442f818 addiu v0,v0,-2024
-8003caa4: 01221021 addu v0,t1,v0
-8003caa8: 90420000 lbu v0,0(v0)
-8003caac: 240f0020 li t7,32
-8003cab0: 00481021 addu v0,v0,t0
-8003cab4: 01e27823 subu t7,t7,v0
-8003cab8: 15e0006f bnez t7,8003cc78 <__umoddi3+0x364>
-8003cabc: 00000000 nop
-8003cac0: 00e5102b sltu v0,a3,a1
-8003cac4: 14400005 bnez v0,8003cadc <__umoddi3+0x1c8>
-8003cac8: 00861023 subu v0,a0,a2
-8003cacc: 0086102b sltu v0,a0,a2
-8003cad0: 14400119 bnez v0,8003cf38 <__umoddi3+0x624>
-8003cad4: 00000000 nop
-8003cad8: 00861023 subu v0,a0,a2
-8003cadc: 00a72823 subu a1,a1,a3
-8003cae0: 0082182b sltu v1,a0,v0
-8003cae4: 00a31823 subu v1,a1,v1
-8003cae8: 03e00008 jr ra
-8003caec: 00000000 nop
-8003caf0: 14c00008 bnez a2,8003cb14 <__umoddi3+0x200>
-8003caf4: 0102102b sltu v0,t0,v0
-8003caf8: 24020001 li v0,1
-8003cafc: 14c00002 bnez a2,8003cb08 <__umoddi3+0x1f4>
-8003cb00: 0046001b divu zero,v0,a2
-8003cb04: 0007000d break 0x7
-8003cb08: 00004012 mflo t0
-8003cb0c: 3c020001 lui v0,0x1
-8003cb10: 0102102b sltu v0,t0,v0
-8003cb14: 144000a5 bnez v0,8003cdac <__umoddi3+0x498>
-8003cb18: 2d090100 sltiu t1,t0,256
-8003cb1c: 3c020100 lui v0,0x100
-8003cb20: 0102102b sltu v0,t0,v0
-8003cb24: 10400002 beqz v0,8003cb30 <__umoddi3+0x21c>
-8003cb28: 24090018 li t1,24
-8003cb2c: 24090010 li t1,16
-8003cb30: 3c028004 lui v0,0x8004
-8003cb34: 01281806 srlv v1,t0,t1
-8003cb38: 2442f818 addiu v0,v0,-2024
-8003cb3c: 00621021 addu v0,v1,v0
-8003cb40: 90460000 lbu a2,0(v0)
-8003cb44: 24020020 li v0,32
-8003cb48: 00c94821 addu t1,a2,t1
-8003cb4c: 00495823 subu t3,v0,t1
-8003cb50: 156000a2 bnez t3,8003cddc <__umoddi3+0x4c8>
-8003cb54: 00000000 nop
-8003cb58: 00a84823 subu t1,a1,t0
-8003cb5c: 00086402 srl t4,t0,0x10
-8003cb60: 3102ffff andi v0,t0,0xffff
-8003cb64: 15800002 bnez t4,8003cb70 <__umoddi3+0x25c>
-8003cb68: 012c001b divu zero,t1,t4
-8003cb6c: 0007000d break 0x7
-8003cb70: 000d5402 srl t2,t5,0x10
-8003cb74: 00003012 mflo a2
-8003cb78: 00001810 mfhi v1
-8003cb7c: 00031c00 sll v1,v1,0x10
-8003cb80: 01435025 or t2,t2,v1
-8003cb84: 00c20018 mult a2,v0
-8003cb88: 00003012 mflo a2
-8003cb8c: 0146202b sltu a0,t2,a2
-8003cb90: 00000000 nop
-8003cb94: 15800002 bnez t4,8003cba0 <__umoddi3+0x28c>
-8003cb98: 012c001b divu zero,t1,t4
-8003cb9c: 0007000d break 0x7
-8003cba0: 10800009 beqz a0,8003cbc8 <__umoddi3+0x2b4>
-8003cba4: 01464823 subu t1,t2,a2
-8003cba8: 01485021 addu t2,t2,t0
-8003cbac: 0148182b sltu v1,t2,t0
-8003cbb0: 14600005 bnez v1,8003cbc8 <__umoddi3+0x2b4>
-8003cbb4: 01464823 subu t1,t2,a2
-8003cbb8: 0146182b sltu v1,t2,a2
-8003cbbc: 146000da bnez v1,8003cf28 <__umoddi3+0x614>
-8003cbc0: 00000000 nop
-8003cbc4: 01464823 subu t1,t2,a2
-8003cbc8: 31aaffff andi t2,t5,0xffff
-8003cbcc: 15800002 bnez t4,8003cbd8 <__umoddi3+0x2c4>
-8003cbd0: 012c001b divu zero,t1,t4
-8003cbd4: 0007000d break 0x7
-8003cbd8: 00001812 mflo v1
-8003cbdc: 00003810 mfhi a3
-8003cbe0: 00073c00 sll a3,a3,0x10
-8003cbe4: 00000000 nop
-8003cbe8: 00620018 mult v1,v0
-8003cbec: 01471825 or v1,t2,a3
-8003cbf0: 00001012 mflo v0
-8003cbf4: 0062202b sltu a0,v1,v0
-8003cbf8: 00000000 nop
-8003cbfc: 15800002 bnez t4,8003cc08 <__umoddi3+0x2f4>
-8003cc00: 012c001b divu zero,t1,t4
-8003cc04: 0007000d break 0x7
-8003cc08: 10800008 beqz a0,8003cc2c <__umoddi3+0x318>
-8003cc0c: 00000000 nop
-8003cc10: 00681821 addu v1,v1,t0
-8003cc14: 0068202b sltu a0,v1,t0
-8003cc18: 14800004 bnez a0,8003cc2c <__umoddi3+0x318>
-8003cc1c: 0062202b sltu a0,v1,v0
-8003cc20: 10800002 beqz a0,8003cc2c <__umoddi3+0x318>
-8003cc24: 00000000 nop
-8003cc28: 00681821 addu v1,v1,t0
-8003cc2c: 00621823 subu v1,v1,v0
-8003cc30: 01631006 srlv v0,v1,t3
-8003cc34: 1000ff8a b 8003ca60 <__umoddi3+0x14c>
-8003cc38: 00001821 move v1,zero
-8003cc3c: 00a01821 move v1,a1
-8003cc40: 03e00008 jr ra
-8003cc44: 00000000 nop
-8003cc48: 2d080001 sltiu t0,t0,1
-8003cc4c: 000840c0 sll t0,t0,0x3
-8003cc50: 3c028004 lui v0,0x8004
-8003cc54: 01074806 srlv t1,a3,t0
-8003cc58: 2442f818 addiu v0,v0,-2024
-8003cc5c: 01221021 addu v0,t1,v0
-8003cc60: 90420000 lbu v0,0(v0)
-8003cc64: 240f0020 li t7,32
-8003cc68: 00481021 addu v0,v0,t0
-8003cc6c: 01e27823 subu t7,t7,v0
-8003cc70: 11e0ff93 beqz t7,8003cac0 <__umoddi3+0x1ac>
-8003cc74: 00000000 nop
-8003cc78: 01e73804 sllv a3,a3,t7
-8003cc7c: 00465006 srlv t2,a2,v0
-8003cc80: 00ea5025 or t2,a3,t2
-8003cc84: 0045c806 srlv t9,a1,v0
-8003cc88: 000ac402 srl t8,t2,0x10
-8003cc8c: 17000002 bnez t8,8003cc98 <__umoddi3+0x384>
-8003cc90: 0338001b divu zero,t9,t8
-8003cc94: 0007000d break 0x7
-8003cc98: 3143ffff andi v1,t2,0xffff
-8003cc9c: 01e53804 sllv a3,a1,t7
-8003cca0: 00444806 srlv t1,a0,v0
-8003cca4: 01274825 or t1,t1,a3
-8003cca8: 00097402 srl t6,t1,0x10
-8003ccac: 01e63804 sllv a3,a2,t7
-8003ccb0: 00005812 mflo t3
-8003ccb4: 00006810 mfhi t5
-8003ccb8: 000d6c00 sll t5,t5,0x10
-8003ccbc: 01cd6825 or t5,t6,t5
-8003ccc0: 006b0018 mult v1,t3
-8003ccc4: 00006012 mflo t4
-8003ccc8: 01ac282b sltu a1,t5,t4
-8003cccc: 00000000 nop
-8003ccd0: 17000002 bnez t8,8003ccdc <__umoddi3+0x3c8>
-8003ccd4: 0338001b divu zero,t9,t8
-8003ccd8: 0007000d break 0x7
-8003ccdc: 10a00006 beqz a1,8003ccf8 <__umoddi3+0x3e4>
-8003cce0: 01e42004 sllv a0,a0,t7
-8003cce4: 01aa6821 addu t5,t5,t2
-8003cce8: 01aa282b sltu a1,t5,t2
-8003ccec: 10a00089 beqz a1,8003cf14 <__umoddi3+0x600>
-8003ccf0: 2566ffff addiu a2,t3,-1
-8003ccf4: 00c05821 move t3,a2
-8003ccf8: 01ac6023 subu t4,t5,t4
-8003ccfc: 3129ffff andi t1,t1,0xffff
-8003cd00: 17000002 bnez t8,8003cd0c <__umoddi3+0x3f8>
-8003cd04: 0198001b divu zero,t4,t8
-8003cd08: 0007000d break 0x7
-8003cd0c: 00002812 mflo a1
-8003cd10: 00004010 mfhi t0
-8003cd14: 00084400 sll t0,t0,0x10
-8003cd18: 01284025 or t0,t1,t0
-8003cd1c: 00650018 mult v1,a1
-8003cd20: 00001812 mflo v1
-8003cd24: 0103302b sltu a2,t0,v1
-8003cd28: 00000000 nop
-8003cd2c: 17000002 bnez t8,8003cd38 <__umoddi3+0x424>
-8003cd30: 0198001b divu zero,t4,t8
-8003cd34: 0007000d break 0x7
-8003cd38: 10c00006 beqz a2,8003cd54 <__umoddi3+0x440>
-8003cd3c: 00000000 nop
-8003cd40: 010a4021 addu t0,t0,t2
-8003cd44: 010a302b sltu a2,t0,t2
-8003cd48: 10c0006d beqz a2,8003cf00 <__umoddi3+0x5ec>
-8003cd4c: 24a9ffff addiu t1,a1,-1
-8003cd50: 01202821 move a1,t1
-8003cd54: 000b4c00 sll t1,t3,0x10
-8003cd58: 01255825 or t3,t1,a1
-8003cd5c: 01034023 subu t0,t0,v1
-8003cd60: 01670019 multu t3,a3
-8003cd64: 00006810 mfhi t5
-8003cd68: 010d282b sltu a1,t0,t5
-8003cd6c: 00006012 mflo t4
-8003cd70: 14a00059 bnez a1,8003ced8 <__umoddi3+0x5c4>
-8003cd74: 00000000 nop
-8003cd78: 110d0072 beq t0,t5,8003cf44 <__umoddi3+0x630>
-8003cd7c: 00000000 nop
-8003cd80: 010d4023 subu t0,t0,t5
-8003cd84: 00003812 mflo a3
-8003cd88: 00873823 subu a3,a0,a3
-8003cd8c: 0087202b sltu a0,a0,a3
-8003cd90: 01044023 subu t0,t0,a0
-8003cd94: 00482004 sllv a0,t0,v0
-8003cd98: 01e73806 srlv a3,a3,t7
-8003cd9c: 00871025 or v0,a0,a3
-8003cda0: 01e81806 srlv v1,t0,t7
-8003cda4: 03e00008 jr ra
-8003cda8: 00000000 nop
-8003cdac: 2d290001 sltiu t1,t1,1
-8003cdb0: 000948c0 sll t1,t1,0x3
-8003cdb4: 3c028004 lui v0,0x8004
-8003cdb8: 01281806 srlv v1,t0,t1
-8003cdbc: 2442f818 addiu v0,v0,-2024
-8003cdc0: 00621021 addu v0,v1,v0
-8003cdc4: 90460000 lbu a2,0(v0)
-8003cdc8: 24020020 li v0,32
-8003cdcc: 00c94821 addu t1,a2,t1
-8003cdd0: 00495823 subu t3,v0,t1
-8003cdd4: 1160ff60 beqz t3,8003cb58 <__umoddi3+0x244>
-8003cdd8: 00000000 nop
-8003cddc: 01684004 sllv t0,t0,t3
-8003cde0: 01257006 srlv t6,a1,t1
-8003cde4: 00086402 srl t4,t0,0x10
-8003cde8: 15800002 bnez t4,8003cdf4 <__umoddi3+0x4e0>
-8003cdec: 01cc001b divu zero,t6,t4
-8003cdf0: 0007000d break 0x7
-8003cdf4: 3102ffff andi v0,t0,0xffff
-8003cdf8: 01652804 sllv a1,a1,t3
-8003cdfc: 01244806 srlv t1,a0,t1
-8003ce00: 01254825 or t1,t1,a1
-8003ce04: 00095402 srl t2,t1,0x10
-8003ce08: 00003012 mflo a2
-8003ce0c: 00003810 mfhi a3
-8003ce10: 00073c00 sll a3,a3,0x10
-8003ce14: 01473825 or a3,t2,a3
-8003ce18: 00460018 mult v0,a2
-8003ce1c: 00003012 mflo a2
-8003ce20: 00e6182b sltu v1,a3,a2
-8003ce24: 00000000 nop
-8003ce28: 15800002 bnez t4,8003ce34 <__umoddi3+0x520>
-8003ce2c: 01cc001b divu zero,t6,t4
-8003ce30: 0007000d break 0x7
-8003ce34: 10600008 beqz v1,8003ce58 <__umoddi3+0x544>
-8003ce38: 01646804 sllv t5,a0,t3
-8003ce3c: 00e83821 addu a3,a3,t0
-8003ce40: 00e8182b sltu v1,a3,t0
-8003ce44: 14600004 bnez v1,8003ce58 <__umoddi3+0x544>
-8003ce48: 00e6182b sltu v1,a3,a2
-8003ce4c: 10600002 beqz v1,8003ce58 <__umoddi3+0x544>
-8003ce50: 00000000 nop
-8003ce54: 00e83821 addu a3,a3,t0
-8003ce58: 00e63023 subu a2,a3,a2
-8003ce5c: 312affff andi t2,t1,0xffff
-8003ce60: 15800002 bnez t4,8003ce6c <__umoddi3+0x558>
-8003ce64: 00cc001b divu zero,a2,t4
-8003ce68: 0007000d break 0x7
-8003ce6c: 00002812 mflo a1
-8003ce70: 00004810 mfhi t1
-8003ce74: 00094c00 sll t1,t1,0x10
-8003ce78: 01495025 or t2,t2,t1
-8003ce7c: 00450018 mult v0,a1
-8003ce80: 00002812 mflo a1
-8003ce84: 0145182b sltu v1,t2,a1
-8003ce88: 00000000 nop
-8003ce8c: 15800002 bnez t4,8003ce98 <__umoddi3+0x584>
-8003ce90: 00cc001b divu zero,a2,t4
-8003ce94: 0007000d break 0x7
-8003ce98: 10600008 beqz v1,8003cebc <__umoddi3+0x5a8>
-8003ce9c: 00000000 nop
-8003cea0: 01485021 addu t2,t2,t0
-8003cea4: 0148182b sltu v1,t2,t0
-8003cea8: 14600004 bnez v1,8003cebc <__umoddi3+0x5a8>
-8003ceac: 0145182b sltu v1,t2,a1
-8003ceb0: 10600002 beqz v1,8003cebc <__umoddi3+0x5a8>
-8003ceb4: 00000000 nop
-8003ceb8: 01485021 addu t2,t2,t0
-8003cebc: 1000ff29 b 8003cb64 <__umoddi3+0x250>
-8003cec0: 01454823 subu t1,t2,a1
-8003cec4: 00c2102b sltu v0,a2,v0
-8003cec8: 1040000b beqz v0,8003cef8 <__umoddi3+0x5e4>
-8003cecc: 00000000 nop
-8003ced0: 1000fe9d b 8003c948 <__umoddi3+0x34>
-8003ced4: 240b0010 li t3,16
-8003ced8: 01873823 subu a3,t4,a3
-8003cedc: 01aa5023 subu t2,t5,t2
-8003cee0: 0187182b sltu v1,t4,a3
-8003cee4: 01431823 subu v1,t2,v1
-8003cee8: 1000ffa7 b 8003cd88 <__umoddi3+0x474>
-8003ceec: 01034023 subu t0,t0,v1
-8003cef0: 1000ff0f b 8003cb30 <__umoddi3+0x21c>
-8003cef4: 24090018 li t1,24
-8003cef8: 1000fe93 b 8003c948 <__umoddi3+0x34>
-8003cefc: 240b0018 li t3,24
-8003cf00: 0103302b sltu a2,t0,v1
-8003cf04: 10c0ff92 beqz a2,8003cd50 <__umoddi3+0x43c>
-8003cf08: 24a5fffe addiu a1,a1,-2
-8003cf0c: 1000ff91 b 8003cd54 <__umoddi3+0x440>
-8003cf10: 010a4021 addu t0,t0,t2
-8003cf14: 01ac282b sltu a1,t5,t4
-8003cf18: 10a0ff76 beqz a1,8003ccf4 <__umoddi3+0x3e0>
-8003cf1c: 256bfffe addiu t3,t3,-2
-8003cf20: 1000ff75 b 8003ccf8 <__umoddi3+0x3e4>
-8003cf24: 01aa6821 addu t5,t5,t2
-8003cf28: 1000ff26 b 8003cbc4 <__umoddi3+0x2b0>
-8003cf2c: 01485021 addu t2,t2,t0
-8003cf30: 1000feae b 8003c9ec <__umoddi3+0xd8>
-8003cf34: 01485021 addu t2,t2,t0
-8003cf38: 00801021 move v0,a0
-8003cf3c: 03e00008 jr ra
-8003cf40: 00000000 nop
-8003cf44: 008c182b sltu v1,a0,t4
-8003cf48: 1460ffe3 bnez v1,8003ced8 <__umoddi3+0x5c4>
-8003cf4c: 00000000 nop
-8003cf50: 00003812 mflo a3
-8003cf54: 1000ff8c b 8003cd88 <__umoddi3+0x474>
-8003cf58: 00004021 move t0,zero
-
-8003cf5c <__adddf3>:
-8003cf5c: 3c08000f lui t0,0xf
-8003cf60: 3508ffff ori t0,t0,0xffff
-8003cf64: 27bdffd8 addiu sp,sp,-40
-8003cf68: 01054824 and t1,t0,a1
-8003cf6c: 01074024 and t0,t0,a3
-8003cf70: 00051502 srl v0,a1,0x14
-8003cf74: 00046742 srl t4,a0,0x1d
-8003cf78: 00065f42 srl t3,a2,0x1d
-8003cf7c: afb10018 sw s1,24(sp)
-8003cf80: 000948c0 sll t1,t1,0x3
-8003cf84: 00075502 srl t2,a3,0x14
-8003cf88: 000840c0 sll t0,t0,0x3
-8003cf8c: 00058fc2 srl s1,a1,0x1f
-8003cf90: 00072fc2 srl a1,a3,0x1f
-8003cf94: afb00014 sw s0,20(sp)
-8003cf98: afbf0024 sw ra,36(sp)
-8003cf9c: 305007ff andi s0,v0,0x7ff
-8003cfa0: afb30020 sw s3,32(sp)
-8003cfa4: afb2001c sw s2,28(sp)
-8003cfa8: 012c1025 or v0,t1,t4
-8003cfac: 000420c0 sll a0,a0,0x3
-8003cfb0: 314a07ff andi t2,t2,0x7ff
-8003cfb4: 010b4025 or t0,t0,t3
-8003cfb8: 12250071 beq s1,a1,8003d180 <__adddf3+0x224>
-8003cfbc: 000630c0 sll a2,a2,0x3
-8003cfc0: 020a4823 subu t1,s0,t2
-8003cfc4: 192000c9 blez t1,8003d2ec <__adddf3+0x390>
-8003cfc8: 00000000 nop
-8003cfcc: 1540000b bnez t2,8003cffc <__adddf3+0xa0>
-8003cfd0: 240307ff li v1,2047
-8003cfd4: 01061825 or v1,t0,a2
-8003cfd8: 1060008e beqz v1,8003d214 <__adddf3+0x2b8>
-8003cfdc: 240307ff li v1,2047
-8003cfe0: 2529ffff addiu t1,t1,-1
-8003cfe4: 15200105 bnez t1,8003d3fc <__adddf3+0x4a0>
-8003cfe8: 00869023 subu s2,a0,a2
-8003cfec: 00481023 subu v0,v0,t0
-8003cff0: 0092202b sltu a0,a0,s2
-8003cff4: 10000015 b 8003d04c <__adddf3+0xf0>
-8003cff8: 00441023 subu v0,v0,a0
-8003cffc: 12030087 beq s0,v1,8003d21c <__adddf3+0x2c0>
-8003d000: 3c030080 lui v1,0x80
-8003d004: 01034025 or t0,t0,v1
-8003d008: 29230039 slti v1,t1,57
-8003d00c: 106000e0 beqz v1,8003d390 <__adddf3+0x434>
-8003d010: 29230020 slti v1,t1,32
-8003d014: 10600108 beqz v1,8003d438 <__adddf3+0x4dc>
-8003d018: 24050020 li a1,32
-8003d01c: 00a92823 subu a1,a1,t1
-8003d020: 01263806 srlv a3,a2,t1
-8003d024: 00a81804 sllv v1,t0,a1
-8003d028: 00a63004 sllv a2,a2,a1
-8003d02c: 00671825 or v1,v1,a3
-8003d030: 0006382b sltu a3,zero,a2
-8003d034: 00673825 or a3,v1,a3
-8003d038: 01284006 srlv t0,t0,t1
-8003d03c: 00879023 subu s2,a0,a3
-8003d040: 00484023 subu t0,v0,t0
-8003d044: 0092202b sltu a0,a0,s2
-8003d048: 01041023 subu v0,t0,a0
-8003d04c: 3c130080 lui s3,0x80
-8003d050: 00531824 and v1,v0,s3
-8003d054: 106000a1 beqz v1,8003d2dc <__adddf3+0x380>
-8003d058: 32430007 andi v1,s2,0x7
-8003d05c: 2673ffff addiu s3,s3,-1
-8003d060: 00539824 and s3,v0,s3
-8003d064: 126000b4 beqz s3,8003d338 <__adddf3+0x3dc>
-8003d068: 00000000 nop
-8003d06c: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003d070: 02602021 move a0,s3
-8003d074: 2446fff8 addiu a2,v0,-8
-8003d078: 28c30020 slti v1,a2,32
-8003d07c: 106000b6 beqz v1,8003d358 <__adddf3+0x3fc>
-8003d080: 2442ffd8 addiu v0,v0,-40
-8003d084: 00061823 negu v1,a2
-8003d088: 00721806 srlv v1,s2,v1
-8003d08c: 00d31004 sllv v0,s3,a2
-8003d090: 00629825 or s3,v1,v0
-8003d094: 00d0102a slt v0,a2,s0
-8003d098: 144000b3 bnez v0,8003d368 <__adddf3+0x40c>
-8003d09c: 00d29004 sllv s2,s2,a2
-8003d0a0: 00d03023 subu a2,a2,s0
-8003d0a4: 24c20001 addiu v0,a2,1
-8003d0a8: 28430020 slti v1,v0,32
-8003d0ac: 106000d7 beqz v1,8003d40c <__adddf3+0x4b0>
-8003d0b0: 24030020 li v1,32
-8003d0b4: 24040020 li a0,32
-8003d0b8: 00822023 subu a0,a0,v0
-8003d0bc: 00521806 srlv v1,s2,v0
-8003d0c0: 00923804 sllv a3,s2,a0
-8003d0c4: 00932004 sllv a0,s3,a0
-8003d0c8: 00832025 or a0,a0,v1
-8003d0cc: 0007382b sltu a3,zero,a3
-8003d0d0: 00879025 or s2,a0,a3
-8003d0d4: 00531006 srlv v0,s3,v0
-8003d0d8: 32430007 andi v1,s2,0x7
-8003d0dc: 00008021 move s0,zero
-8003d0e0: 10600009 beqz v1,8003d108 <__adddf3+0x1ac>
-8003d0e4: 3c030080 lui v1,0x80
-8003d0e8: 3243000f andi v1,s2,0xf
-8003d0ec: 24040004 li a0,4
-8003d0f0: 10640004 beq v1,a0,8003d104 <__adddf3+0x1a8>
-8003d0f4: 26440004 addiu a0,s2,4
-8003d0f8: 0092382b sltu a3,a0,s2
-8003d0fc: 00471021 addu v0,v0,a3
-8003d100: 00809021 move s2,a0
-8003d104: 3c030080 lui v1,0x80
-8003d108: 00431824 and v1,v0,v1
-8003d10c: 10600062 beqz v1,8003d298 <__adddf3+0x33c>
-8003d110: 26060001 addiu a2,s0,1
-8003d114: 240307ff li v1,2047
-8003d118: 10c30099 beq a2,v1,8003d380 <__adddf3+0x424>
-8003d11c: 00000000 nop
-8003d120: 3c04ff7f lui a0,0xff7f
-8003d124: 3484ffff ori a0,a0,0xffff
-8003d128: 00441024 and v0,v0,a0
-8003d12c: 00022740 sll a0,v0,0x1d
-8003d130: 001238c2 srl a3,s2,0x3
-8003d134: 00021240 sll v0,v0,0x9
-8003d138: 00873825 or a3,a0,a3
-8003d13c: 00022302 srl a0,v0,0xc
-8003d140: 30c207ff andi v0,a2,0x7ff
-8003d144: 00023500 sll a2,v0,0x14
-8003d148: 3c02000f lui v0,0xf
-8003d14c: 3442ffff ori v0,v0,0xffff
-8003d150: 8fbf0024 lw ra,36(sp)
-8003d154: 00821024 and v0,a0,v0
-8003d158: 00111fc0 sll v1,s1,0x1f
-8003d15c: 00461025 or v0,v0,a2
-8003d160: 00431825 or v1,v0,v1
-8003d164: 8fb30020 lw s3,32(sp)
-8003d168: 8fb2001c lw s2,28(sp)
-8003d16c: 8fb10018 lw s1,24(sp)
-8003d170: 8fb00014 lw s0,20(sp)
-8003d174: 00e01021 move v0,a3
-8003d178: 03e00008 jr ra
-8003d17c: 27bd0028 addiu sp,sp,40
-8003d180: 020a2823 subu a1,s0,t2
-8003d184: 18a00089 blez a1,8003d3ac <__adddf3+0x450>
-8003d188: 00000000 nop
-8003d18c: 11400034 beqz t2,8003d260 <__adddf3+0x304>
-8003d190: 01061825 or v1,t0,a2
-8003d194: 240307ff li v1,2047
-8003d198: 12030020 beq s0,v1,8003d21c <__adddf3+0x2c0>
-8003d19c: 3c030080 lui v1,0x80
-8003d1a0: 01034025 or t0,t0,v1
-8003d1a4: 28a30039 slti v1,a1,57
-8003d1a8: 146000cd bnez v1,8003d4e0 <__adddf3+0x584>
-8003d1ac: 28a30020 slti v1,a1,32
-8003d1b0: 01063025 or a2,t0,a2
-8003d1b4: 0006382b sltu a3,zero,a2
-8003d1b8: 00004021 move t0,zero
-8003d1bc: 00e49021 addu s2,a3,a0
-8003d1c0: 01024021 addu t0,t0,v0
-8003d1c4: 0244202b sltu a0,s2,a0
-8003d1c8: 00881021 addu v0,a0,t0
-8003d1cc: 3c030080 lui v1,0x80
-8003d1d0: 00431824 and v1,v0,v1
-8003d1d4: 10600041 beqz v1,8003d2dc <__adddf3+0x380>
-8003d1d8: 32430007 andi v1,s2,0x7
-8003d1dc: 26100001 addiu s0,s0,1
-8003d1e0: 240307ff li v1,2047
-8003d1e4: 120300eb beq s0,v1,8003d594 <__adddf3+0x638>
-8003d1e8: 00122042 srl a0,s2,0x1
-8003d1ec: 3c03ff7f lui v1,0xff7f
-8003d1f0: 3463ffff ori v1,v1,0xffff
-8003d1f4: 00431024 and v0,v0,v1
-8003d1f8: 32470001 andi a3,s2,0x1
-8003d1fc: 00879025 or s2,a0,a3
-8003d200: 00023fc0 sll a3,v0,0x1f
-8003d204: 00f29025 or s2,a3,s2
-8003d208: 00021042 srl v0,v0,0x1
-8003d20c: 1000ffb4 b 8003d0e0 <__adddf3+0x184>
-8003d210: 32430007 andi v1,s2,0x7
-8003d214: 1603ffbb bne s0,v1,8003d104 <__adddf3+0x1a8>
-8003d218: 00809021 move s2,a0
-8003d21c: 00441825 or v1,v0,a0
-8003d220: 1460ffb8 bnez v1,8003d104 <__adddf3+0x1a8>
-8003d224: 00809021 move s2,a0
-8003d228: 00003821 move a3,zero
-8003d22c: 00671025 or v0,v1,a3
-8003d230: 10400054 beqz v0,8003d384 <__adddf3+0x428>
-8003d234: 240207ff li v0,2047
-8003d238: 3c040007 lui a0,0x7
-8003d23c: 3484ffff ori a0,a0,0xffff
-8003d240: 00641024 and v0,v1,a0
-8003d244: 00471825 or v1,v0,a3
-8003d248: 14600055 bnez v1,8003d3a0 <__adddf3+0x444>
-8003d24c: 00000000 nop
-8003d250: 00008821 move s1,zero
-8003d254: 240207ff li v0,2047
-8003d258: 1000ffba b 8003d144 <__adddf3+0x1e8>
-8003d25c: 2407ffff li a3,-1
-8003d260: 1060ffec beqz v1,8003d214 <__adddf3+0x2b8>
-8003d264: 240307ff li v1,2047
-8003d268: 24a5ffff addiu a1,a1,-1
-8003d26c: 14a000b0 bnez a1,8003d530 <__adddf3+0x5d4>
-8003d270: 00869021 addu s2,a0,a2
-8003d274: 00481021 addu v0,v0,t0
-8003d278: 0244202b sltu a0,s2,a0
-8003d27c: 1000ffd3 b 8003d1cc <__adddf3+0x270>
-8003d280: 00821021 addu v0,a0,v0
-8003d284: 3c02003f lui v0,0x3f
-8003d288: 00008821 move s1,zero
-8003d28c: 241007ff li s0,2047
-8003d290: 3442ffff ori v0,v0,0xffff
-8003d294: 2412fff8 li s2,-8
-8003d298: 00021f40 sll v1,v0,0x1d
-8003d29c: 001238c2 srl a3,s2,0x3
-8003d2a0: 00e33825 or a3,a3,v1
-8003d2a4: 000218c2 srl v1,v0,0x3
-8003d2a8: 240207ff li v0,2047
-8003d2ac: 1202ffdf beq s0,v0,8003d22c <__adddf3+0x2d0>
-8003d2b0: 00000000 nop
-8003d2b4: 3c06000f lui a2,0xf
-8003d2b8: 34c6ffff ori a2,a2,0xffff
-8003d2bc: 00662024 and a0,v1,a2
-8003d2c0: 1000ffa0 b 8003d144 <__adddf3+0x1e8>
-8003d2c4: 320207ff andi v0,s0,0x7ff
-8003d2c8: 02471825 or v1,s2,a3
-8003d2cc: 1060012f beqz v1,8003d78c <__adddf3+0x830>
-8003d2d0: 00000000 nop
-8003d2d4: 00e01021 move v0,a3
-8003d2d8: 32430007 andi v1,s2,0x7
-8003d2dc: 1460ff82 bnez v1,8003d0e8 <__adddf3+0x18c>
-8003d2e0: 00021f40 sll v1,v0,0x1d
-8003d2e4: 1000ffee b 8003d2a0 <__adddf3+0x344>
-8003d2e8: 001238c2 srl a3,s2,0x3
-8003d2ec: 1520005b bnez t1,8003d45c <__adddf3+0x500>
-8003d2f0: 26030001 addiu v1,s0,1
-8003d2f4: 306307ff andi v1,v1,0x7ff
-8003d2f8: 28630002 slti v1,v1,2
-8003d2fc: 1460009b bnez v1,8003d56c <__adddf3+0x610>
-8003d300: 00869023 subu s2,a0,a2
-8003d304: 0092182b sltu v1,a0,s2
-8003d308: 00489823 subu s3,v0,t0
-8003d30c: 02639823 subu s3,s3,v1
-8003d310: 3c030080 lui v1,0x80
-8003d314: 02631824 and v1,s3,v1
-8003d318: 1060006c beqz v1,8003d4cc <__adddf3+0x570>
-8003d31c: 02531825 or v1,s2,s3
-8003d320: 00c49023 subu s2,a2,a0
-8003d324: 01021023 subu v0,t0,v0
-8003d328: 00d2302b sltu a2,a2,s2
-8003d32c: 00469823 subu s3,v0,a2
-8003d330: 1660ff4e bnez s3,8003d06c <__adddf3+0x110>
-8003d334: 00a08821 move s1,a1
-8003d338: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003d33c: 02402021 move a0,s2
-8003d340: 24420020 addiu v0,v0,32
-8003d344: 2446fff8 addiu a2,v0,-8
-8003d348: 28c30020 slti v1,a2,32
-8003d34c: 1460ff4e bnez v1,8003d088 <__adddf3+0x12c>
-8003d350: 00061823 negu v1,a2
-8003d354: 2442ffd8 addiu v0,v0,-40
-8003d358: 00529804 sllv s3,s2,v0
-8003d35c: 00d0102a slt v0,a2,s0
-8003d360: 1040ff4f beqz v0,8003d0a0 <__adddf3+0x144>
-8003d364: 00009021 move s2,zero
-8003d368: 3c02ff7f lui v0,0xff7f
-8003d36c: 3442ffff ori v0,v0,0xffff
-8003d370: 02068023 subu s0,s0,a2
-8003d374: 02621024 and v0,s3,v0
-8003d378: 1000ff59 b 8003d0e0 <__adddf3+0x184>
-8003d37c: 32430007 andi v1,s2,0x7
-8003d380: 240207ff li v0,2047
-8003d384: 00002021 move a0,zero
-8003d388: 1000ff6e b 8003d144 <__adddf3+0x1e8>
-8003d38c: 00003821 move a3,zero
-8003d390: 01063025 or a2,t0,a2
-8003d394: 0006382b sltu a3,zero,a2
-8003d398: 1000ff28 b 8003d03c <__adddf3+0xe0>
-8003d39c: 00004021 move t0,zero
-8003d3a0: 00402021 move a0,v0
-8003d3a4: 1000ff67 b 8003d144 <__adddf3+0x1e8>
-8003d3a8: 240207ff li v0,2047
-8003d3ac: 14a00086 bnez a1,8003d5c8 <__adddf3+0x66c>
-8003d3b0: 00000000 nop
-8003d3b4: 26050001 addiu a1,s0,1
-8003d3b8: 30a307ff andi v1,a1,0x7ff
-8003d3bc: 28630002 slti v1,v1,2
-8003d3c0: 14600063 bnez v1,8003d550 <__adddf3+0x5f4>
-8003d3c4: 00000000 nop
-8003d3c8: 240307ff li v1,2047
-8003d3cc: 10a30071 beq a1,v1,8003d594 <__adddf3+0x638>
-8003d3d0: 00863021 addu a2,a0,a2
-8003d3d4: 00c4202b sltu a0,a2,a0
-8003d3d8: 00481021 addu v0,v0,t0
-8003d3dc: 00821021 addu v0,a0,v0
-8003d3e0: 00023fc0 sll a3,v0,0x1f
-8003d3e4: 00063042 srl a2,a2,0x1
-8003d3e8: 00e69025 or s2,a3,a2
-8003d3ec: 00021042 srl v0,v0,0x1
-8003d3f0: 32430007 andi v1,s2,0x7
-8003d3f4: 1000ff3a b 8003d0e0 <__adddf3+0x184>
-8003d3f8: 00a08021 move s0,a1
-8003d3fc: 1603ff02 bne s0,v1,8003d008 <__adddf3+0xac>
-8003d400: 00441825 or v1,v0,a0
-8003d404: 1000ff86 b 8003d220 <__adddf3+0x2c4>
-8003d408: 00000000 nop
-8003d40c: 24c6ffe1 addiu a2,a2,-31
-8003d410: 1043004b beq v0,v1,8003d540 <__adddf3+0x5e4>
-8003d414: 00d33006 srlv a2,s3,a2
-8003d418: 00023823 negu a3,v0
-8003d41c: 00f33804 sllv a3,s3,a3
-8003d420: 02473825 or a3,s2,a3
-8003d424: 0007382b sltu a3,zero,a3
-8003d428: 00c79025 or s2,a2,a3
-8003d42c: 00001021 move v0,zero
-8003d430: 1000ffa9 b 8003d2d8 <__adddf3+0x37c>
-8003d434: 00008021 move s0,zero
-8003d438: 11250043 beq t1,a1,8003d548 <__adddf3+0x5ec>
-8003d43c: 01281806 srlv v1,t0,t1
-8003d440: 00093823 negu a3,t1
-8003d444: 00e83804 sllv a3,t0,a3
-8003d448: 00e63025 or a2,a3,a2
-8003d44c: 0006382b sltu a3,zero,a2
-8003d450: 00673825 or a3,v1,a3
-8003d454: 1000fef9 b 8003d03c <__adddf3+0xe0>
-8003d458: 00004021 move t0,zero
-8003d45c: 1200002b beqz s0,8003d50c <__adddf3+0x5b0>
-8003d460: 00441825 or v1,v0,a0
-8003d464: 240307ff li v1,2047
-8003d468: 114300be beq t2,v1,8003d764 <__adddf3+0x808>
-8003d46c: 3c030080 lui v1,0x80
-8003d470: 00094823 negu t1,t1
-8003d474: 00431025 or v0,v0,v1
-8003d478: 29230039 slti v1,t1,57
-8003d47c: 10600077 beqz v1,8003d65c <__adddf3+0x700>
-8003d480: 29230020 slti v1,t1,32
-8003d484: 106000c4 beqz v1,8003d798 <__adddf3+0x83c>
-8003d488: 24030020 li v1,32
-8003d48c: 240b0020 li t3,32
-8003d490: 01695823 subu t3,t3,t1
-8003d494: 01243806 srlv a3,a0,t1
-8003d498: 01621804 sllv v1,v0,t3
-8003d49c: 01642004 sllv a0,a0,t3
-8003d4a0: 00671825 or v1,v1,a3
-8003d4a4: 0004382b sltu a3,zero,a0
-8003d4a8: 00673825 or a3,v1,a3
-8003d4ac: 01224806 srlv t1,v0,t1
-8003d4b0: 00c79023 subu s2,a2,a3
-8003d4b4: 01094823 subu t1,t0,t1
-8003d4b8: 00d2302b sltu a2,a2,s2
-8003d4bc: 01261023 subu v0,t1,a2
-8003d4c0: 01408021 move s0,t2
-8003d4c4: 1000fee1 b 8003d04c <__adddf3+0xf0>
-8003d4c8: 00a08821 move s1,a1
-8003d4cc: 1460fee5 bnez v1,8003d064 <__adddf3+0x108>
-8003d4d0: 00003821 move a3,zero
-8003d4d4: 00008821 move s1,zero
-8003d4d8: 1000ff76 b 8003d2b4 <__adddf3+0x358>
-8003d4dc: 00008021 move s0,zero
-8003d4e0: 1060002f beqz v1,8003d5a0 <__adddf3+0x644>
-8003d4e4: 24090020 li t1,32
-8003d4e8: 01254823 subu t1,t1,a1
-8003d4ec: 00a63806 srlv a3,a2,a1
-8003d4f0: 01281804 sllv v1,t0,t1
-8003d4f4: 01263004 sllv a2,a2,t1
-8003d4f8: 00671825 or v1,v1,a3
-8003d4fc: 0006382b sltu a3,zero,a2
-8003d500: 00673825 or a3,v1,a3
-8003d504: 1000ff2d b 8003d1bc <__adddf3+0x260>
-8003d508: 00a84006 srlv t0,t0,a1
-8003d50c: 14600049 bnez v1,8003d634 <__adddf3+0x6d8>
-8003d510: 00000000 nop
-8003d514: 240207ff li v0,2047
-8003d518: 11420092 beq t2,v0,8003d764 <__adddf3+0x808>
-8003d51c: 01001021 move v0,t0
-8003d520: 00c09021 move s2,a2
-8003d524: 01408021 move s0,t2
-8003d528: 1000fef6 b 8003d104 <__adddf3+0x1a8>
-8003d52c: 00a08821 move s1,a1
-8003d530: 1603ff1c bne s0,v1,8003d1a4 <__adddf3+0x248>
-8003d534: 00441825 or v1,v0,a0
-8003d538: 1000ff39 b 8003d220 <__adddf3+0x2c4>
-8003d53c: 00000000 nop
-8003d540: 1000ffb7 b 8003d420 <__adddf3+0x4c4>
-8003d544: 00003821 move a3,zero
-8003d548: 1000ffbf b 8003d448 <__adddf3+0x4ec>
-8003d54c: 00003821 move a3,zero
-8003d550: 1600006e bnez s0,8003d70c <__adddf3+0x7b0>
-8003d554: 00441825 or v1,v0,a0
-8003d558: 146000a9 bnez v1,8003d800 <__adddf3+0x8a4>
-8003d55c: 01061825 or v1,t0,a2
-8003d560: 01001021 move v0,t0
-8003d564: 1000fee7 b 8003d104 <__adddf3+0x1a8>
-8003d568: 00c09021 move s2,a2
-8003d56c: 16000021 bnez s0,8003d5f4 <__adddf3+0x698>
-8003d570: 00441825 or v1,v0,a0
-8003d574: 14600055 bnez v1,8003d6cc <__adddf3+0x770>
-8003d578: 01061825 or v1,t0,a2
-8003d57c: 10600084 beqz v1,8003d790 <__adddf3+0x834>
-8003d580: 00003821 move a3,zero
-8003d584: 01001021 move v0,t0
-8003d588: 00c09021 move s2,a2
-8003d58c: 1000fedd b 8003d104 <__adddf3+0x1a8>
-8003d590: 00a08821 move s1,a1
-8003d594: 00001821 move v1,zero
-8003d598: 1000ff24 b 8003d22c <__adddf3+0x2d0>
-8003d59c: 00003821 move a3,zero
-8003d5a0: 24070020 li a3,32
-8003d5a4: 10a70077 beq a1,a3,8003d784 <__adddf3+0x828>
-8003d5a8: 00a81806 srlv v1,t0,a1
-8003d5ac: 00053823 negu a3,a1
-8003d5b0: 00e83804 sllv a3,t0,a3
-8003d5b4: 00e63025 or a2,a3,a2
-8003d5b8: 0006382b sltu a3,zero,a2
-8003d5bc: 00673825 or a3,v1,a3
-8003d5c0: 1000fefe b 8003d1bc <__adddf3+0x260>
-8003d5c4: 00004021 move t0,zero
-8003d5c8: 16000028 bnez s0,8003d66c <__adddf3+0x710>
-8003d5cc: 240307ff li v1,2047
-8003d5d0: 00441825 or v1,v0,a0
-8003d5d4: 14600079 bnez v1,8003d7bc <__adddf3+0x860>
-8003d5d8: 00000000 nop
-8003d5dc: 240207ff li v0,2047
-8003d5e0: 1142009a beq t2,v0,8003d84c <__adddf3+0x8f0>
-8003d5e4: 01001021 move v0,t0
-8003d5e8: 00c09021 move s2,a2
-8003d5ec: 1000fec5 b 8003d104 <__adddf3+0x1a8>
-8003d5f0: 01408021 move s0,t2
-8003d5f4: 14600009 bnez v1,8003d61c <__adddf3+0x6c0>
-8003d5f8: 00000000 nop
-8003d5fc: 01061025 or v0,t0,a2
-8003d600: 10400077 beqz v0,8003d7e0 <__adddf3+0x884>
-8003d604: 3c030007 lui v1,0x7
-8003d608: 01001021 move v0,t0
-8003d60c: 00c09021 move s2,a2
-8003d610: 00a08821 move s1,a1
-8003d614: 1000febb b 8003d104 <__adddf3+0x1a8>
-8003d618: 241007ff li s0,2047
-8003d61c: 01063025 or a2,t0,a2
-8003d620: 14c00040 bnez a2,8003d724 <__adddf3+0x7c8>
-8003d624: 000228c2 srl a1,v0,0x3
-8003d628: 00809021 move s2,a0
-8003d62c: 1000feb5 b 8003d104 <__adddf3+0x1a8>
-8003d630: 241007ff li s0,2047
-8003d634: 00094827 nor t1,zero,t1
-8003d638: 15200048 bnez t1,8003d75c <__adddf3+0x800>
-8003d63c: 240307ff li v1,2047
-8003d640: 00c49023 subu s2,a2,a0
-8003d644: 01021023 subu v0,t0,v0
-8003d648: 00d2302b sltu a2,a2,s2
-8003d64c: 00461023 subu v0,v0,a2
-8003d650: 01408021 move s0,t2
-8003d654: 1000fe7d b 8003d04c <__adddf3+0xf0>
-8003d658: 00a08821 move s1,a1
-8003d65c: 00442025 or a0,v0,a0
-8003d660: 0004382b sltu a3,zero,a0
-8003d664: 1000ff92 b 8003d4b0 <__adddf3+0x554>
-8003d668: 00004821 move t1,zero
-8003d66c: 11430077 beq t2,v1,8003d84c <__adddf3+0x8f0>
-8003d670: 3c030080 lui v1,0x80
-8003d674: 00052823 negu a1,a1
-8003d678: 00431025 or v0,v0,v1
-8003d67c: 28a30039 slti v1,a1,57
-8003d680: 1060005b beqz v1,8003d7f0 <__adddf3+0x894>
-8003d684: 28a30020 slti v1,a1,32
-8003d688: 10600075 beqz v1,8003d860 <__adddf3+0x904>
-8003d68c: 24030020 li v1,32
-8003d690: 24090020 li t1,32
-8003d694: 01254823 subu t1,t1,a1
-8003d698: 00a43806 srlv a3,a0,a1
-8003d69c: 01221804 sllv v1,v0,t1
-8003d6a0: 01242004 sllv a0,a0,t1
-8003d6a4: 00671825 or v1,v1,a3
-8003d6a8: 0004382b sltu a3,zero,a0
-8003d6ac: 00673825 or a3,v1,a3
-8003d6b0: 00a21006 srlv v0,v0,a1
-8003d6b4: 00e69021 addu s2,a3,a2
-8003d6b8: 00484021 addu t0,v0,t0
-8003d6bc: 0246302b sltu a2,s2,a2
-8003d6c0: 00c81021 addu v0,a2,t0
-8003d6c4: 1000fec1 b 8003d1cc <__adddf3+0x270>
-8003d6c8: 01408021 move s0,t2
-8003d6cc: 1060fe8d beqz v1,8003d104 <__adddf3+0x1a8>
-8003d6d0: 00809021 move s2,a0
-8003d6d4: 00869023 subu s2,a0,a2
-8003d6d8: 00481823 subu v1,v0,t0
-8003d6dc: 0092382b sltu a3,a0,s2
-8003d6e0: 00673823 subu a3,v1,a3
-8003d6e4: 3c030080 lui v1,0x80
-8003d6e8: 00e31824 and v1,a3,v1
-8003d6ec: 1060fef6 beqz v1,8003d2c8 <__adddf3+0x36c>
-8003d6f0: 01021023 subu v0,t0,v0
-8003d6f4: 00c49023 subu s2,a2,a0
-8003d6f8: 00d2302b sltu a2,a2,s2
-8003d6fc: 00461023 subu v0,v0,a2
-8003d700: 32430007 andi v1,s2,0x7
-8003d704: 1000fe76 b 8003d0e0 <__adddf3+0x184>
-8003d708: 00a08821 move s1,a1
-8003d70c: 1460ffc3 bnez v1,8003d61c <__adddf3+0x6c0>
-8003d710: 00000000 nop
-8003d714: 01001021 move v0,t0
-8003d718: 00c09021 move s2,a2
-8003d71c: 1000fe79 b 8003d104 <__adddf3+0x1a8>
-8003d720: 241007ff li s0,2047
-8003d724: 000818c2 srl v1,t0,0x3
-8003d728: 00651825 or v1,v1,a1
-8003d72c: 3c060008 lui a2,0x8
-8003d730: 00661824 and v1,v1,a2
-8003d734: 1460fed3 bnez v1,8003d284 <__adddf3+0x328>
-8003d738: 00021740 sll v0,v0,0x1d
-8003d73c: 000420c2 srl a0,a0,0x3
-8003d740: 00443825 or a3,v0,a0
-8003d744: 000528c0 sll a1,a1,0x3
-8003d748: 00071742 srl v0,a3,0x1d
-8003d74c: 00451025 or v0,v0,a1
-8003d750: 000790c0 sll s2,a3,0x3
-8003d754: 1000fe6b b 8003d104 <__adddf3+0x1a8>
-8003d758: 241007ff li s0,2047
-8003d75c: 1543ff47 bne t2,v1,8003d47c <__adddf3+0x520>
-8003d760: 29230039 slti v1,t1,57
-8003d764: 01061825 or v1,t0,a2
-8003d768: 10600034 beqz v1,8003d83c <__adddf3+0x8e0>
-8003d76c: 00003821 move a3,zero
-8003d770: 01001021 move v0,t0
-8003d774: 00c09021 move s2,a2
-8003d778: 241007ff li s0,2047
-8003d77c: 1000fe61 b 8003d104 <__adddf3+0x1a8>
-8003d780: 00a08821 move s1,a1
-8003d784: 1000ff8b b 8003d5b4 <__adddf3+0x658>
-8003d788: 00003821 move a3,zero
-8003d78c: 00003821 move a3,zero
-8003d790: 1000fec8 b 8003d2b4 <__adddf3+0x358>
-8003d794: 00008821 move s1,zero
-8003d798: 1123003a beq t1,v1,8003d884 <__adddf3+0x928>
-8003d79c: 01223806 srlv a3,v0,t1
-8003d7a0: 00094823 negu t1,t1
-8003d7a4: 01221804 sllv v1,v0,t1
-8003d7a8: 00642025 or a0,v1,a0
-8003d7ac: 0004182b sltu v1,zero,a0
-8003d7b0: 00e33825 or a3,a3,v1
-8003d7b4: 1000ff3e b 8003d4b0 <__adddf3+0x554>
-8003d7b8: 00004821 move t1,zero
-8003d7bc: 00052827 nor a1,zero,a1
-8003d7c0: 14a00020 bnez a1,8003d844 <__adddf3+0x8e8>
-8003d7c4: 240307ff li v1,2047
-8003d7c8: 00869021 addu s2,a0,a2
-8003d7cc: 00481021 addu v0,v0,t0
-8003d7d0: 0246302b sltu a2,s2,a2
-8003d7d4: 00c21021 addu v0,a2,v0
-8003d7d8: 1000fe7c b 8003d1cc <__adddf3+0x270>
-8003d7dc: 01408021 move s0,t2
-8003d7e0: 3463ffff ori v1,v1,0xffff
-8003d7e4: 2407ffff li a3,-1
-8003d7e8: 1000fe90 b 8003d22c <__adddf3+0x2d0>
-8003d7ec: 00008821 move s1,zero
-8003d7f0: 00441025 or v0,v0,a0
-8003d7f4: 0002382b sltu a3,zero,v0
-8003d7f8: 1000ffae b 8003d6b4 <__adddf3+0x758>
-8003d7fc: 00001021 move v0,zero
-8003d800: 1060fe40 beqz v1,8003d104 <__adddf3+0x1a8>
-8003d804: 00809021 move s2,a0
-8003d808: 00869021 addu s2,a0,a2
-8003d80c: 00481021 addu v0,v0,t0
-8003d810: 0244202b sltu a0,s2,a0
-8003d814: 00821021 addu v0,a0,v0
-8003d818: 3c030080 lui v1,0x80
-8003d81c: 00431824 and v1,v0,v1
-8003d820: 1060fead beqz v1,8003d2d8 <__adddf3+0x37c>
-8003d824: 3c03ff7f lui v1,0xff7f
-8003d828: 3463ffff ori v1,v1,0xffff
-8003d82c: 00431024 and v0,v0,v1
-8003d830: 24100001 li s0,1
-8003d834: 1000fe2a b 8003d0e0 <__adddf3+0x184>
-8003d838: 32430007 andi v1,s2,0x7
-8003d83c: 1000fe7b b 8003d22c <__adddf3+0x2d0>
-8003d840: 00a08821 move s1,a1
-8003d844: 1543ff8e bne t2,v1,8003d680 <__adddf3+0x724>
-8003d848: 28a30039 slti v1,a1,57
-8003d84c: 01061825 or v1,t0,a2
-8003d850: 1460ffb1 bnez v1,8003d718 <__adddf3+0x7bc>
-8003d854: 01001021 move v0,t0
-8003d858: 1000fe74 b 8003d22c <__adddf3+0x2d0>
-8003d85c: 00003821 move a3,zero
-8003d860: 10a3000a beq a1,v1,8003d88c <__adddf3+0x930>
-8003d864: 00a23806 srlv a3,v0,a1
-8003d868: 00052823 negu a1,a1
-8003d86c: 00a21004 sllv v0,v0,a1
-8003d870: 00442025 or a0,v0,a0
-8003d874: 0004102b sltu v0,zero,a0
-8003d878: 00e23825 or a3,a3,v0
-8003d87c: 1000ff8d b 8003d6b4 <__adddf3+0x758>
-8003d880: 00001021 move v0,zero
-8003d884: 1000ffc8 b 8003d7a8 <__adddf3+0x84c>
-8003d888: 00001821 move v1,zero
-8003d88c: 1000fff8 b 8003d870 <__adddf3+0x914>
-8003d890: 00001021 move v0,zero
-
-8003d894 <__divdf3>:
-8003d894: 27bdffc0 addiu sp,sp,-64
-8003d898: afb5002c sw s5,44(sp)
-8003d89c: afb00018 sw s0,24(sp)
-8003d8a0: 0005ad02 srl s5,a1,0x14
-8003d8a4: 3c10000f lui s0,0xf
-8003d8a8: afb40028 sw s4,40(sp)
-8003d8ac: 3610ffff ori s0,s0,0xffff
-8003d8b0: 0005a7c2 srl s4,a1,0x1f
-8003d8b4: 32b507ff andi s5,s5,0x7ff
-8003d8b8: afb70034 sw s7,52(sp)
-8003d8bc: afb1001c sw s1,28(sp)
-8003d8c0: afbf003c sw ra,60(sp)
-8003d8c4: afbe0038 sw s8,56(sp)
-8003d8c8: afb60030 sw s6,48(sp)
-8003d8cc: afb30024 sw s3,36(sp)
-8003d8d0: afb20020 sw s2,32(sp)
-8003d8d4: 00808821 move s1,a0
-8003d8d8: 02058024 and s0,s0,a1
-8003d8dc: 12a00078 beqz s5,8003dac0 <__divdf3+0x22c>
-8003d8e0: 0280b821 move s7,s4
-8003d8e4: 240207ff li v0,2047
-8003d8e8: 12a20026 beq s5,v0,8003d984 <__divdf3+0xf0>
-8003d8ec: 02048825 or s1,s0,a0
-8003d8f0: 3c050010 lui a1,0x10
-8003d8f4: 02058025 or s0,s0,a1
-8003d8f8: 001080c0 sll s0,s0,0x3
-8003d8fc: 00042f42 srl a1,a0,0x1d
-8003d900: 00b08025 or s0,a1,s0
-8003d904: 000490c0 sll s2,a0,0x3
-8003d908: 26b5fc01 addiu s5,s5,-1023
-8003d90c: 00009821 move s3,zero
-8003d910: 0000f021 move s8,zero
-8003d914: 00072d02 srl a1,a3,0x14
-8003d918: 3c11000f lui s1,0xf
-8003d91c: 3631ffff ori s1,s1,0xffff
-8003d920: 30a507ff andi a1,a1,0x7ff
-8003d924: 00c01821 move v1,a2
-8003d928: 02278824 and s1,s1,a3
-8003d92c: 10a00023 beqz a1,8003d9bc <__divdf3+0x128>
-8003d930: 0007b7c2 srl s6,a3,0x1f
-8003d934: 240207ff li v0,2047
-8003d938: 10a2007a beq a1,v0,8003db24 <__divdf3+0x290>
-8003d93c: 3c020010 lui v0,0x10
-8003d940: 02228825 or s1,s1,v0
-8003d944: 001188c0 sll s1,s1,0x3
-8003d948: 00061742 srl v0,a2,0x1d
-8003d94c: 00518825 or s1,v0,s1
-8003d950: 000618c0 sll v1,a2,0x3
-8003d954: 24a5fc01 addiu a1,a1,-1023
-8003d958: 00001021 move v0,zero
-8003d95c: 00532025 or a0,v0,s3
-8003d960: 00043080 sll a2,a0,0x2
-8003d964: 3c048004 lui a0,0x8004
-8003d968: 2484007c addiu a0,a0,124
-8003d96c: 00862021 addu a0,a0,a2
-8003d970: 8c860000 lw a2,0(a0)
-8003d974: 02962026 xor a0,s4,s6
-8003d978: 00803821 move a3,a0
-8003d97c: 00c00008 jr a2
-8003d980: 02a52823 subu a1,s5,a1
-8003d984: 16200077 bnez s1,8003db64 <__divdf3+0x2d0>
-8003d988: 00809021 move s2,a0
-8003d98c: 00072d02 srl a1,a3,0x14
-8003d990: 3c11000f lui s1,0xf
-8003d994: 3631ffff ori s1,s1,0xffff
-8003d998: 30a507ff andi a1,a1,0x7ff
-8003d99c: 24130008 li s3,8
-8003d9a0: 00008021 move s0,zero
-8003d9a4: 00009021 move s2,zero
-8003d9a8: 241e0002 li s8,2
-8003d9ac: 00c01821 move v1,a2
-8003d9b0: 02278824 and s1,s1,a3
-8003d9b4: 14a0ffdf bnez a1,8003d934 <__divdf3+0xa0>
-8003d9b8: 0007b7c2 srl s6,a3,0x1f
-8003d9bc: 02261025 or v0,s1,a2
-8003d9c0: 1040005f beqz v0,8003db40 <__divdf3+0x2ac>
-8003d9c4: 00001821 move v1,zero
-8003d9c8: 12200090 beqz s1,8003dc0c <__divdf3+0x378>
-8003d9cc: 00c02021 move a0,a2
-8003d9d0: 02202021 move a0,s1
-8003d9d4: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003d9d8: afa60010 sw a2,16(sp)
-8003d9dc: 8fa60010 lw a2,16(sp)
-8003d9e0: 2444fff5 addiu a0,v0,-11
-8003d9e4: 2883001d slti v1,a0,29
-8003d9e8: 10600084 beqz v1,8003dbfc <__divdf3+0x368>
-8003d9ec: 00000000 nop
-8003d9f0: 2405001d li a1,29
-8003d9f4: 2443fff8 addiu v1,v0,-8
-8003d9f8: 00a42823 subu a1,a1,a0
-8003d9fc: 00718804 sllv s1,s1,v1
-8003da00: 00a62806 srlv a1,a2,a1
-8003da04: 00b18825 or s1,a1,s1
-8003da08: 00661804 sllv v1,a2,v1
-8003da0c: 2405fc02 li a1,-1022
-8003da10: 00a42823 subu a1,a1,a0
-8003da14: 1000ffd1 b 8003d95c <__divdf3+0xc8>
-8003da18: 00001021 move v0,zero
-8003da1c: 02e03821 move a3,s7
-8003da20: 30e40001 andi a0,a3,0x1
-8003da24: 240307ff li v1,2047
-8003da28: 00002821 move a1,zero
-8003da2c: 00009021 move s2,zero
-8003da30: 3c10000f lui s0,0xf
-8003da34: 3610ffff ori s0,s0,0xffff
-8003da38: 00031d00 sll v1,v1,0x14
-8003da3c: 8fbf003c lw ra,60(sp)
-8003da40: 00b08024 and s0,a1,s0
-8003da44: 02038025 or s0,s0,v1
-8003da48: 000427c0 sll a0,a0,0x1f
-8003da4c: 02041825 or v1,s0,a0
-8003da50: 02401021 move v0,s2
-8003da54: 8fbe0038 lw s8,56(sp)
-8003da58: 8fb70034 lw s7,52(sp)
-8003da5c: 8fb60030 lw s6,48(sp)
-8003da60: 8fb5002c lw s5,44(sp)
-8003da64: 8fb40028 lw s4,40(sp)
-8003da68: 8fb30024 lw s3,36(sp)
-8003da6c: 8fb20020 lw s2,32(sp)
-8003da70: 8fb1001c lw s1,28(sp)
-8003da74: 8fb00018 lw s0,24(sp)
-8003da78: 03e00008 jr ra
-8003da7c: 27bd0040 addiu sp,sp,64
-8003da80: 02c0b821 move s7,s6
-8003da84: 02208021 move s0,s1
-8003da88: 00609021 move s2,v1
-8003da8c: 0040f021 move s8,v0
-8003da90: 24020002 li v0,2
-8003da94: 13c2ffe1 beq s8,v0,8003da1c <__divdf3+0x188>
-8003da98: 24020003 li v0,3
-8003da9c: 13c201a6 beq s8,v0,8003e138 <__divdf3+0x8a4>
-8003daa0: 00000000 nop
-8003daa4: 24020001 li v0,1
-8003daa8: 17c20104 bne s8,v0,8003debc <__divdf3+0x628>
-8003daac: 02e02021 move a0,s7
-8003dab0: 00001821 move v1,zero
-8003dab4: 00002821 move a1,zero
-8003dab8: 1000ffdd b 8003da30 <__divdf3+0x19c>
-8003dabc: 00009021 move s2,zero
-8003dac0: 02041025 or v0,s0,a0
-8003dac4: 10400023 beqz v0,8003db54 <__divdf3+0x2c0>
-8003dac8: 24130004 li s3,4
-8003dacc: afa70014 sw a3,20(sp)
-8003dad0: 12000057 beqz s0,8003dc30 <__divdf3+0x39c>
-8003dad4: afa60010 sw a2,16(sp)
-8003dad8: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003dadc: 02002021 move a0,s0
-8003dae0: 8fa60010 lw a2,16(sp)
-8003dae4: 8fa70014 lw a3,20(sp)
-8003dae8: 2443fff5 addiu v1,v0,-11
-8003daec: 2864001d slti a0,v1,29
-8003daf0: 1080004b beqz a0,8003dc20 <__divdf3+0x38c>
-8003daf4: 2404001d li a0,29
-8003daf8: 2452fff8 addiu s2,v0,-8
-8003dafc: 00832023 subu a0,a0,v1
-8003db00: 02508004 sllv s0,s0,s2
-8003db04: 00912006 srlv a0,s1,a0
-8003db08: 00908025 or s0,a0,s0
-8003db0c: 02519004 sllv s2,s1,s2
-8003db10: 2405fc02 li a1,-1022
-8003db14: 00a3a823 subu s5,a1,v1
-8003db18: 00009821 move s3,zero
-8003db1c: 1000ff7d b 8003d914 <__divdf3+0x80>
-8003db20: 0000f021 move s8,zero
-8003db24: 02263025 or a2,s1,a2
-8003db28: 14c00008 bnez a2,8003db4c <__divdf3+0x2b8>
-8003db2c: 00000000 nop
-8003db30: 00008821 move s1,zero
-8003db34: 00001821 move v1,zero
-8003db38: 1000ff88 b 8003d95c <__divdf3+0xc8>
-8003db3c: 24020002 li v0,2
-8003db40: 00008821 move s1,zero
-8003db44: 1000ff85 b 8003d95c <__divdf3+0xc8>
-8003db48: 24020001 li v0,1
-8003db4c: 1000ff83 b 8003d95c <__divdf3+0xc8>
-8003db50: 24020003 li v0,3
-8003db54: 00008021 move s0,zero
-8003db58: 00009021 move s2,zero
-8003db5c: 1000ff6d b 8003d914 <__divdf3+0x80>
-8003db60: 241e0001 li s8,1
-8003db64: 2413000c li s3,12
-8003db68: 1000ff6a b 8003d914 <__divdf3+0x80>
-8003db6c: 241e0003 li s8,3
-8003db70: 3c100007 lui s0,0x7
-8003db74: 3610ffff ori s0,s0,0xffff
-8003db78: 2412ffff li s2,-1
-8003db7c: 0000b821 move s7,zero
-8003db80: 3c05000f lui a1,0xf
-8003db84: 34a5ffff ori a1,a1,0xffff
-8003db88: 02052824 and a1,s0,a1
-8003db8c: 02e02021 move a0,s7
-8003db90: 1000ffa7 b 8003da30 <__divdf3+0x19c>
-8003db94: 240307ff li v1,2047
-8003db98: 0230102b sltu v0,s1,s0
-8003db9c: 1440002d bnez v0,8003dc54 <__divdf3+0x3c0>
-8003dba0: 00121042 srl v0,s2,0x1
-8003dba4: 12110028 beq s0,s1,8003dc48 <__divdf3+0x3b4>
-8003dba8: 0243102b sltu v0,s2,v1
-8003dbac: 02403021 move a2,s2
-8003dbb0: 24a5ffff addiu a1,a1,-1
-8003dbb4: 1000002b b 8003dc64 <__divdf3+0x3d0>
-8003dbb8: 00009021 move s2,zero
-8003dbbc: 02118825 or s1,s0,s1
-8003dbc0: 3c050008 lui a1,0x8
-8003dbc4: 02258824 and s1,s1,a1
-8003dbc8: 162000b8 bnez s1,8003deac <__divdf3+0x618>
-8003dbcc: 00000000 nop
-8003dbd0: 24a5ffff addiu a1,a1,-1
-8003dbd4: 02058024 and s0,s0,a1
-8003dbd8: 02501025 or v0,s2,s0
-8003dbdc: 1440ffe8 bnez v0,8003db80 <__divdf3+0x2ec>
-8003dbe0: 00000000 nop
-8003dbe4: 3c050007 lui a1,0x7
-8003dbe8: 00002021 move a0,zero
-8003dbec: 240307ff li v1,2047
-8003dbf0: 34a5ffff ori a1,a1,0xffff
-8003dbf4: 1000ff8e b 8003da30 <__divdf3+0x19c>
-8003dbf8: 2412ffff li s2,-1
-8003dbfc: 2442ffd8 addiu v0,v0,-40
-8003dc00: 00468804 sllv s1,a2,v0
-8003dc04: 1000ff81 b 8003da0c <__divdf3+0x178>
-8003dc08: 00001821 move v1,zero
-8003dc0c: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003dc10: afa60010 sw a2,16(sp)
-8003dc14: 8fa60010 lw a2,16(sp)
-8003dc18: 1000ff71 b 8003d9e0 <__divdf3+0x14c>
-8003dc1c: 24420020 addiu v0,v0,32
-8003dc20: 2442ffd8 addiu v0,v0,-40
-8003dc24: 00518004 sllv s0,s1,v0
-8003dc28: 1000ffb9 b 8003db10 <__divdf3+0x27c>
-8003dc2c: 00009021 move s2,zero
-8003dc30: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003dc34: 00000000 nop
-8003dc38: 8fa70014 lw a3,20(sp)
-8003dc3c: 8fa60010 lw a2,16(sp)
-8003dc40: 1000ffa9 b 8003dae8 <__divdf3+0x254>
-8003dc44: 24420020 addiu v0,v0,32
-8003dc48: 1440ffd9 bnez v0,8003dbb0 <__divdf3+0x31c>
-8003dc4c: 02403021 move a2,s2
-8003dc50: 00121042 srl v0,s2,0x1
-8003dc54: 001037c0 sll a2,s0,0x1f
-8003dc58: 00c23025 or a2,a2,v0
-8003dc5c: 00108042 srl s0,s0,0x1
-8003dc60: 001297c0 sll s2,s2,0x1f
-8003dc64: 00032602 srl a0,v1,0x18
-8003dc68: 00118a00 sll s1,s1,0x8
-8003dc6c: 02248825 or s1,s1,a0
-8003dc70: 00115402 srl t2,s1,0x10
-8003dc74: 15400002 bnez t2,8003dc80 <__divdf3+0x3ec>
-8003dc78: 020a001b divu zero,s0,t2
-8003dc7c: 0007000d break 0x7
-8003dc80: 322bffff andi t3,s1,0xffff
-8003dc84: 00064c02 srl t1,a2,0x10
-8003dc88: 00001012 mflo v0
-8003dc8c: 00006010 mfhi t4
-8003dc90: 000c6400 sll t4,t4,0x10
-8003dc94: 012c4025 or t0,t1,t4
-8003dc98: 01620018 mult t3,v0
-8003dc9c: 00008012 mflo s0
-8003dca0: 0110202b sltu a0,t0,s0
-8003dca4: 1080000a beqz a0,8003dcd0 <__divdf3+0x43c>
-8003dca8: 00031a00 sll v1,v1,0x8
-8003dcac: 01114021 addu t0,t0,s1
-8003dcb0: 0111202b sltu a0,t0,s1
-8003dcb4: 148000b0 bnez a0,8003df78 <__divdf3+0x6e4>
-8003dcb8: 2449ffff addiu t1,v0,-1
-8003dcbc: 0110202b sltu a0,t0,s0
-8003dcc0: 108000ad beqz a0,8003df78 <__divdf3+0x6e4>
-8003dcc4: 00000000 nop
-8003dcc8: 2442fffe addiu v0,v0,-2
-8003dccc: 01114021 addu t0,t0,s1
-8003dcd0: 01104023 subu t0,t0,s0
-8003dcd4: 15400002 bnez t2,8003dce0 <__divdf3+0x44c>
-8003dcd8: 010a001b divu zero,t0,t2
-8003dcdc: 0007000d break 0x7
-8003dce0: 30c6ffff andi a2,a2,0xffff
-8003dce4: 00008012 mflo s0
-8003dce8: 00004010 mfhi t0
-8003dcec: 00084400 sll t0,t0,0x10
-8003dcf0: 00c82025 or a0,a2,t0
-8003dcf4: 01700018 mult t3,s0
-8003dcf8: 00006012 mflo t4
-8003dcfc: 008c302b sltu a2,a0,t4
-8003dd00: 10c0000a beqz a2,8003dd2c <__divdf3+0x498>
-8003dd04: 00000000 nop
-8003dd08: 00912021 addu a0,a0,s1
-8003dd0c: 0091302b sltu a2,a0,s1
-8003dd10: 14c00097 bnez a2,8003df70 <__divdf3+0x6dc>
-8003dd14: 2608ffff addiu t0,s0,-1
-8003dd18: 008c302b sltu a2,a0,t4
-8003dd1c: 10c00094 beqz a2,8003df70 <__divdf3+0x6dc>
-8003dd20: 00000000 nop
-8003dd24: 2610fffe addiu s0,s0,-2
-8003dd28: 00912021 addu a0,a0,s1
-8003dd2c: 00021400 sll v0,v0,0x10
-8003dd30: 00508025 or s0,v0,s0
-8003dd34: 02030019 multu s0,v1
-8003dd38: 008c2023 subu a0,a0,t4
-8003dd3c: 00004810 mfhi t1
-8003dd40: 0089102b sltu v0,a0,t1
-8003dd44: 00004012 mflo t0
-8003dd48: 14400049 bnez v0,8003de70 <__divdf3+0x5dc>
-8003dd4c: 01206021 move t4,t1
-8003dd50: 10890045 beq a0,t1,8003de68 <__divdf3+0x5d4>
-8003dd54: 0248102b sltu v0,s2,t0
-8003dd58: 00892023 subu a0,a0,t1
-8003dd5c: 02484023 subu t0,s2,t0
-8003dd60: 0248902b sltu s2,s2,t0
-8003dd64: 00922023 subu a0,a0,s2
-8003dd68: 122400af beq s1,a0,8003e028 <__divdf3+0x794>
-8003dd6c: 00081402 srl v0,t0,0x10
-8003dd70: 15400002 bnez t2,8003dd7c <__divdf3+0x4e8>
-8003dd74: 008a001b divu zero,a0,t2
-8003dd78: 0007000d break 0x7
-8003dd7c: 00002012 mflo a0
-8003dd80: 00003010 mfhi a2
-8003dd84: 00063400 sll a2,a2,0x10
-8003dd88: 00463025 or a2,v0,a2
-8003dd8c: 01640018 mult t3,a0
-8003dd90: 00009012 mflo s2
-8003dd94: 00d2102b sltu v0,a2,s2
-8003dd98: 1040000a beqz v0,8003ddc4 <__divdf3+0x530>
-8003dd9c: 00000000 nop
-8003dda0: 00d13021 addu a2,a2,s1
-8003dda4: 00d1102b sltu v0,a2,s1
-8003dda8: 144000a1 bnez v0,8003e030 <__divdf3+0x79c>
-8003ddac: 2489ffff addiu t1,a0,-1
-8003ddb0: 00d2102b sltu v0,a2,s2
-8003ddb4: 1040009e beqz v0,8003e030 <__divdf3+0x79c>
-8003ddb8: 00000000 nop
-8003ddbc: 2484fffe addiu a0,a0,-2
-8003ddc0: 00d13021 addu a2,a2,s1
-8003ddc4: 00d23023 subu a2,a2,s2
-8003ddc8: 15400002 bnez t2,8003ddd4 <__divdf3+0x540>
-8003ddcc: 00ca001b divu zero,a2,t2
-8003ddd0: 0007000d break 0x7
-8003ddd4: 3109ffff andi t1,t0,0xffff
-8003ddd8: 00005012 mflo t2
-8003dddc: 00003010 mfhi a2
-8003dde0: 00063400 sll a2,a2,0x10
-8003dde4: 01264025 or t0,t1,a2
-8003dde8: 016a0018 mult t3,t2
-8003ddec: 00005812 mflo t3
-8003ddf0: 010b102b sltu v0,t0,t3
-8003ddf4: 1040000a beqz v0,8003de20 <__divdf3+0x58c>
-8003ddf8: 00000000 nop
-8003ddfc: 01114021 addu t0,t0,s1
-8003de00: 0111102b sltu v0,t0,s1
-8003de04: 1440008c bnez v0,8003e038 <__divdf3+0x7a4>
-8003de08: 2546ffff addiu a2,t2,-1
-8003de0c: 010b102b sltu v0,t0,t3
-8003de10: 10400089 beqz v0,8003e038 <__divdf3+0x7a4>
-8003de14: 00000000 nop
-8003de18: 254afffe addiu t2,t2,-2
-8003de1c: 01114021 addu t0,t0,s1
-8003de20: 00042400 sll a0,a0,0x10
-8003de24: 008a9025 or s2,a0,t2
-8003de28: 00720019 multu v1,s2
-8003de2c: 010b4023 subu t0,t0,t3
-8003de30: 00006810 mfhi t5
-8003de34: 010d202b sltu a0,t0,t5
-8003de38: 00006012 mflo t4
-8003de3c: 00003012 mflo a2
-8003de40: 1080003e beqz a0,8003df3c <__divdf3+0x6a8>
-8003de44: 01a01021 move v0,t5
-8003de48: 02284021 addu t0,s1,t0
-8003de4c: 0111482b sltu t1,t0,s1
-8003de50: 1120007b beqz t1,8003e040 <__divdf3+0x7ac>
-8003de54: 2644ffff addiu a0,s2,-1
-8003de58: 1102004d beq t0,v0,8003df90 <__divdf3+0x6fc>
-8003de5c: 00809021 move s2,a0
-8003de60: 10000017 b 8003dec0 <__divdf3+0x62c>
-8003de64: 36520001 ori s2,s2,0x1
-8003de68: 10400050 beqz v0,8003dfac <__divdf3+0x718>
-8003de6c: 00000000 nop
-8003de70: 02439021 addu s2,s2,v1
-8003de74: 0243302b sltu a2,s2,v1
-8003de78: 00d11021 addu v0,a2,s1
-8003de7c: 00442021 addu a0,v0,a0
-8003de80: 0224102b sltu v0,s1,a0
-8003de84: 10400033 beqz v0,8003df54 <__divdf3+0x6c0>
-8003de88: 260dffff addiu t5,s0,-1
-8003de8c: 0089102b sltu v0,a0,t1
-8003de90: 1440007b bnez v0,8003e080 <__divdf3+0x7ec>
-8003de94: 00000000 nop
-8003de98: 11840041 beq t4,a0,8003dfa0 <__divdf3+0x70c>
-8003de9c: 0248102b sltu v0,s2,t0
-8003dea0: 00892023 subu a0,a0,t1
-8003dea4: 1000ffad b 8003dd5c <__divdf3+0x4c8>
-8003dea8: 01a08021 move s0,t5
-8003deac: 24b0ffff addiu s0,a1,-1
-8003deb0: 2412ffff li s2,-1
-8003deb4: 1000ff32 b 8003db80 <__divdf3+0x2ec>
-8003deb8: 0000b821 move s7,zero
-8003debc: 02e03821 move a3,s7
-8003dec0: 24a303ff addiu v1,a1,1023
-8003dec4: 1860003b blez v1,8003dfb4 <__divdf3+0x720>
-8003dec8: 00000000 nop
-8003decc: 32420007 andi v0,s2,0x7
-8003ded0: 10400009 beqz v0,8003def8 <__divdf3+0x664>
-8003ded4: 3c020100 lui v0,0x100
-8003ded8: 3242000f andi v0,s2,0xf
-8003dedc: 24040004 li a0,4
-8003dee0: 10440004 beq v0,a0,8003def4 <__divdf3+0x660>
-8003dee4: 26420004 addiu v0,s2,4
-8003dee8: 0052902b sltu s2,v0,s2
-8003deec: 02128021 addu s0,s0,s2
-8003def0: 00409021 move s2,v0
-8003def4: 3c020100 lui v0,0x100
-8003def8: 02021024 and v0,s0,v0
-8003defc: 10400006 beqz v0,8003df18 <__divdf3+0x684>
-8003df00: 286207ff slti v0,v1,2047
-8003df04: 3c02feff lui v0,0xfeff
-8003df08: 3442ffff ori v0,v0,0xffff
-8003df0c: 02028024 and s0,s0,v0
-8003df10: 24a30400 addiu v1,a1,1024
-8003df14: 286207ff slti v0,v1,2047
-8003df18: 1040fec1 beqz v0,8003da20 <__divdf3+0x18c>
-8003df1c: 00101740 sll v0,s0,0x1d
-8003df20: 001290c2 srl s2,s2,0x3
-8003df24: 00108240 sll s0,s0,0x9
-8003df28: 00529025 or s2,v0,s2
-8003df2c: 00102b02 srl a1,s0,0xc
-8003df30: 306307ff andi v1,v1,0x7ff
-8003df34: 1000febe b 8003da30 <__divdf3+0x19c>
-8003df38: 30e40001 andi a0,a3,0x1
-8003df3c: 150dffc8 bne t0,t5,8003de60 <__divdf3+0x5cc>
-8003df40: 00000000 nop
-8003df44: 1180ffde beqz t4,8003dec0 <__divdf3+0x62c>
-8003df48: 02284021 addu t0,s1,t0
-8003df4c: 1000ffc0 b 8003de50 <__divdf3+0x5bc>
-8003df50: 0111482b sltu t1,t0,s1
-8003df54: 1624ffd2 bne s1,a0,8003dea0 <__divdf3+0x60c>
-8003df58: 00000000 nop
-8003df5c: 10c0ffcc beqz a2,8003de90 <__divdf3+0x5fc>
-8003df60: 0089102b sltu v0,a0,t1
-8003df64: 02292023 subu a0,s1,t1
-8003df68: 1000ff7c b 8003dd5c <__divdf3+0x4c8>
-8003df6c: 01a08021 move s0,t5
-8003df70: 1000ff6e b 8003dd2c <__divdf3+0x498>
-8003df74: 01008021 move s0,t0
-8003df78: 1000ff55 b 8003dcd0 <__divdf3+0x43c>
-8003df7c: 01201021 move v0,t1
-8003df80: 006c602b sltu t4,v1,t4
-8003df84: 15800045 bnez t4,8003e09c <__divdf3+0x808>
-8003df88: 00034840 sll t1,v1,0x1
-8003df8c: 00809021 move s2,a0
-8003df90: 1066ffcc beq v1,a2,8003dec4 <__divdf3+0x630>
-8003df94: 24a303ff addiu v1,a1,1023
-8003df98: 1000ffca b 8003dec4 <__divdf3+0x630>
-8003df9c: 36520001 ori s2,s2,0x1
-8003dfa0: 14400037 bnez v0,8003e080 <__divdf3+0x7ec>
-8003dfa4: 00000000 nop
-8003dfa8: 01a08021 move s0,t5
-8003dfac: 1000ff6b b 8003dd5c <__divdf3+0x4c8>
-8003dfb0: 00002021 move a0,zero
-8003dfb4: 1460002a bnez v1,8003e060 <__divdf3+0x7cc>
-8003dfb8: 24020001 li v0,1
-8003dfbc: 24030020 li v1,32
-8003dfc0: 00621823 subu v1,v1,v0
-8003dfc4: 00702004 sllv a0,s0,v1
-8003dfc8: 00522806 srlv a1,s2,v0
-8003dfcc: 00721804 sllv v1,s2,v1
-8003dfd0: 0003182b sltu v1,zero,v1
-8003dfd4: 00852025 or a0,a0,a1
-8003dfd8: 00832025 or a0,a0,v1
-8003dfdc: 30830007 andi v1,a0,0x7
-8003dfe0: 10600008 beqz v1,8003e004 <__divdf3+0x770>
-8003dfe4: 00501006 srlv v0,s0,v0
-8003dfe8: 3083000f andi v1,a0,0xf
-8003dfec: 24050004 li a1,4
-8003dff0: 10650004 beq v1,a1,8003e004 <__divdf3+0x770>
-8003dff4: 00801821 move v1,a0
-8003dff8: 24640004 addiu a0,v1,4
-8003dffc: 0083182b sltu v1,a0,v1
-8003e000: 00431021 addu v0,v0,v1
-8003e004: 3c030080 lui v1,0x80
-8003e008: 00431824 and v1,v0,v1
-8003e00c: 1060002a beqz v1,8003e0b8 <__divdf3+0x824>
-8003e010: 00000000 nop
-8003e014: 24030001 li v1,1
-8003e018: 00002821 move a1,zero
-8003e01c: 00009021 move s2,zero
-8003e020: 1000fe83 b 8003da30 <__divdf3+0x19c>
-8003e024: 30e40001 andi a0,a3,0x1
-8003e028: 1000ffa5 b 8003dec0 <__divdf3+0x62c>
-8003e02c: 2412ffff li s2,-1
-8003e030: 1000ff64 b 8003ddc4 <__divdf3+0x530>
-8003e034: 01202021 move a0,t1
-8003e038: 1000ff79 b 8003de20 <__divdf3+0x58c>
-8003e03c: 00c05021 move t2,a2
-8003e040: 010d482b sltu t1,t0,t5
-8003e044: 15200014 bnez t1,8003e098 <__divdf3+0x804>
-8003e048: 00000000 nop
-8003e04c: 1048ffcc beq v0,t0,8003df80 <__divdf3+0x6ec>
-8003e050: 00000000 nop
-8003e054: 00809021 move s2,a0
-8003e058: 1000ff99 b 8003dec0 <__divdf3+0x62c>
-8003e05c: 36520001 ori s2,s2,0x1
-8003e060: 00431023 subu v0,v0,v1
-8003e064: 28440039 slti a0,v0,57
-8003e068: 1480001c bnez a0,8003e0dc <__divdf3+0x848>
-8003e06c: 30e40001 andi a0,a3,0x1
-8003e070: 00001821 move v1,zero
-8003e074: 00002821 move a1,zero
-8003e078: 1000fe6d b 8003da30 <__divdf3+0x19c>
-8003e07c: 00009021 move s2,zero
-8003e080: 02439021 addu s2,s2,v1
-8003e084: 0243302b sltu a2,s2,v1
-8003e088: 00d13021 addu a2,a2,s1
-8003e08c: 00c42021 addu a0,a2,a0
-8003e090: 1000ff31 b 8003dd58 <__divdf3+0x4c4>
-8003e094: 2610fffe addiu s0,s0,-2
-8003e098: 00034840 sll t1,v1,0x1
-8003e09c: 0123182b sltu v1,t1,v1
-8003e0a0: 00718821 addu s1,v1,s1
-8003e0a4: 2644fffe addiu a0,s2,-2
-8003e0a8: 01114021 addu t0,t0,s1
-8003e0ac: 1000ff6a b 8003de58 <__divdf3+0x5c4>
-8003e0b0: 01201821 move v1,t1
-8003e0b4: 00602021 move a0,v1
-8003e0b8: 00022a40 sll a1,v0,0x9
-8003e0bc: 00052b02 srl a1,a1,0xc
-8003e0c0: 00021740 sll v0,v0,0x1d
-8003e0c4: 00801821 move v1,a0
-8003e0c8: 000318c2 srl v1,v1,0x3
-8003e0cc: 00629025 or s2,v1,v0
-8003e0d0: 30e40001 andi a0,a3,0x1
-8003e0d4: 1000fe56 b 8003da30 <__divdf3+0x19c>
-8003e0d8: 00001821 move v1,zero
-8003e0dc: 28440020 slti a0,v0,32
-8003e0e0: 1480ffb6 bnez a0,8003dfbc <__divdf3+0x728>
-8003e0e4: 2404ffe1 li a0,-31
-8003e0e8: 00831823 subu v1,a0,v1
-8003e0ec: 24040020 li a0,32
-8003e0f0: 1044000f beq v0,a0,8003e130 <__divdf3+0x89c>
-8003e0f4: 00701806 srlv v1,s0,v1
-8003e0f8: 00021023 negu v0,v0
-8003e0fc: 00501004 sllv v0,s0,v0
-8003e100: 00521025 or v0,v0,s2
-8003e104: 0002102b sltu v0,zero,v0
-8003e108: 00621825 or v1,v1,v0
-8003e10c: 30620007 andi v0,v1,0x7
-8003e110: 1040ffed beqz v0,8003e0c8 <__divdf3+0x834>
-8003e114: 00002821 move a1,zero
-8003e118: 3062000f andi v0,v1,0xf
-8003e11c: 24040004 li a0,4
-8003e120: 1044ffe4 beq v0,a0,8003e0b4 <__divdf3+0x820>
-8003e124: 00001021 move v0,zero
-8003e128: 1000ffb4 b 8003dffc <__divdf3+0x768>
-8003e12c: 24640004 addiu a0,v1,4
-8003e130: 1000fff3 b 8003e100 <__divdf3+0x86c>
-8003e134: 00001021 move v0,zero
-8003e138: 3c050007 lui a1,0x7
-8003e13c: 34a5ffff ori a1,a1,0xffff
-8003e140: 02058024 and s0,s0,a1
-8003e144: 1000fea5 b 8003dbdc <__divdf3+0x348>
-8003e148: 02501025 or v0,s2,s0
-
-8003e14c <__muldf3>:
-8003e14c: 27bdffc0 addiu sp,sp,-64
-8003e150: 00054502 srl t0,a1,0x14
-8003e154: afb20020 sw s2,32(sp)
-8003e158: afb1001c sw s1,28(sp)
-8003e15c: 00809021 move s2,a0
-8003e160: 00808821 move s1,a0
-8003e164: 3c04000f lui a0,0xf
-8003e168: afb70034 sw s7,52(sp)
-8003e16c: afb40028 sw s4,40(sp)
-8003e170: 3484ffff ori a0,a0,0xffff
-8003e174: 0005a7c2 srl s4,a1,0x1f
-8003e178: 311707ff andi s7,t0,0x7ff
-8003e17c: afb60030 sw s6,48(sp)
-8003e180: afb5002c sw s5,44(sp)
-8003e184: afbf003c sw ra,60(sp)
-8003e188: afbe0038 sw s8,56(sp)
-8003e18c: afb30024 sw s3,36(sp)
-8003e190: afb00018 sw s0,24(sp)
-8003e194: 0085b024 and s6,a0,a1
-8003e198: 12e00072 beqz s7,8003e364 <__muldf3+0x218>
-8003e19c: 0280a821 move s5,s4
-8003e1a0: 240207ff li v0,2047
-8003e1a4: 12e20029 beq s7,v0,8003e24c <__muldf3+0x100>
-8003e1a8: 3c040010 lui a0,0x10
-8003e1ac: 02c42825 or a1,s6,a0
-8003e1b0: 000520c0 sll a0,a1,0x3
-8003e1b4: 00122f42 srl a1,s2,0x1d
-8003e1b8: 001288c0 sll s1,s2,0x3
-8003e1bc: 00a4b025 or s6,a1,a0
-8003e1c0: 26f7fc01 addiu s7,s7,-1023
-8003e1c4: 00009021 move s2,zero
-8003e1c8: 0000f021 move s8,zero
-8003e1cc: 00074d02 srl t1,a3,0x14
-8003e1d0: 3c10000f lui s0,0xf
-8003e1d4: 3610ffff ori s0,s0,0xffff
-8003e1d8: 312807ff andi t0,t1,0x7ff
-8003e1dc: 00c02021 move a0,a2
-8003e1e0: 02078024 and s0,s0,a3
-8003e1e4: 11000028 beqz t0,8003e288 <__muldf3+0x13c>
-8003e1e8: 00079fc2 srl s3,a3,0x1f
-8003e1ec: 240207ff li v0,2047
-8003e1f0: 11020076 beq t0,v0,8003e3cc <__muldf3+0x280>
-8003e1f4: 3c020010 lui v0,0x10
-8003e1f8: 02028025 or s0,s0,v0
-8003e1fc: 001080c0 sll s0,s0,0x3
-8003e200: 00061742 srl v0,a2,0x1d
-8003e204: 00508025 or s0,v0,s0
-8003e208: 000620c0 sll a0,a2,0x3
-8003e20c: 2508fc01 addiu t0,t0,-1023
-8003e210: 00001021 move v0,zero
-8003e214: 00523025 or a2,v0,s2
-8003e218: 02e84021 addu t0,s7,t0
-8003e21c: 2cc50010 sltiu a1,a2,16
-8003e220: 02931826 xor v1,s4,s3
-8003e224: 10a00092 beqz a1,8003e470 <__muldf3+0x324>
-8003e228: 25070001 addiu a3,t0,1
-8003e22c: 3c098004 lui t1,0x8004
-8003e230: 00063080 sll a2,a2,0x2
-8003e234: 252900bc addiu t1,t1,188
-8003e238: 01263021 addu a2,t1,a2
-8003e23c: 8cc50000 lw a1,0(a2)
-8003e240: 00000000 nop
-8003e244: 00a00008 jr a1
-8003e248: 00000000 nop
-8003e24c: 02d29025 or s2,s6,s2
-8003e250: 16400072 bnez s2,8003e41c <__muldf3+0x2d0>
-8003e254: 2412000c li s2,12
-8003e258: 00074d02 srl t1,a3,0x14
-8003e25c: 3c10000f lui s0,0xf
-8003e260: 3610ffff ori s0,s0,0xffff
-8003e264: 312807ff andi t0,t1,0x7ff
-8003e268: 24120008 li s2,8
-8003e26c: 0000b021 move s6,zero
-8003e270: 00008821 move s1,zero
-8003e274: 241e0002 li s8,2
-8003e278: 00c02021 move a0,a2
-8003e27c: 02078024 and s0,s0,a3
-8003e280: 1500ffda bnez t0,8003e1ec <__muldf3+0xa0>
-8003e284: 00079fc2 srl s3,a3,0x1f
-8003e288: 02061025 or v0,s0,a2
-8003e28c: 1040005a beqz v0,8003e3f8 <__muldf3+0x2ac>
-8003e290: 00002021 move a0,zero
-8003e294: 120000db beqz s0,8003e604 <__muldf3+0x4b8>
-8003e298: 00c02021 move a0,a2
-8003e29c: 02002021 move a0,s0
-8003e2a0: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003e2a4: afa60010 sw a2,16(sp)
-8003e2a8: 8fa60010 lw a2,16(sp)
-8003e2ac: 2448fff5 addiu t0,v0,-11
-8003e2b0: 2903001d slti v1,t0,29
-8003e2b4: 106000cf beqz v1,8003e5f4 <__muldf3+0x4a8>
-8003e2b8: 2403001d li v1,29
-8003e2bc: 2444fff8 addiu a0,v0,-8
-8003e2c0: 00681823 subu v1,v1,t0
-8003e2c4: 00908004 sllv s0,s0,a0
-8003e2c8: 00661806 srlv v1,a2,v1
-8003e2cc: 00708025 or s0,v1,s0
-8003e2d0: 00862004 sllv a0,a2,a0
-8003e2d4: 2406fc02 li a2,-1022
-8003e2d8: 00c84023 subu t0,a2,t0
-8003e2dc: 1000ffcd b 8003e214 <__muldf3+0xc8>
-8003e2e0: 00001021 move v0,zero
-8003e2e4: 02601821 move v1,s3
-8003e2e8: 24050002 li a1,2
-8003e2ec: 1045003e beq v0,a1,8003e3e8 <__muldf3+0x29c>
-8003e2f0: 24050003 li a1,3
-8003e2f4: 10450113 beq v0,a1,8003e744 <__muldf3+0x5f8>
-8003e2f8: 3c050007 lui a1,0x7
-8003e2fc: 24050001 li a1,1
-8003e300: 1445008d bne v0,a1,8003e538 <__muldf3+0x3ec>
-8003e304: 00e04021 move t0,a3
-8003e308: 00008021 move s0,zero
-8003e30c: 00002021 move a0,zero
-8003e310: 00008821 move s1,zero
-8003e314: 00101500 sll v0,s0,0x14
-8003e318: 3c10000f lui s0,0xf
-8003e31c: 3610ffff ori s0,s0,0xffff
-8003e320: 8fbf003c lw ra,60(sp)
-8003e324: 00908024 and s0,a0,s0
-8003e328: 02028025 or s0,s0,v0
-8003e32c: 00031fc0 sll v1,v1,0x1f
-8003e330: 02031825 or v1,s0,v1
-8003e334: 02201021 move v0,s1
-8003e338: 8fbe0038 lw s8,56(sp)
-8003e33c: 8fb70034 lw s7,52(sp)
-8003e340: 8fb60030 lw s6,48(sp)
-8003e344: 8fb5002c lw s5,44(sp)
-8003e348: 8fb40028 lw s4,40(sp)
-8003e34c: 8fb30024 lw s3,36(sp)
-8003e350: 8fb20020 lw s2,32(sp)
-8003e354: 8fb1001c lw s1,28(sp)
-8003e358: 8fb00018 lw s0,24(sp)
-8003e35c: 03e00008 jr ra
-8003e360: 27bd0040 addiu sp,sp,64
-8003e364: 02d21025 or v0,s6,s2
-8003e368: 10400028 beqz v0,8003e40c <__muldf3+0x2c0>
-8003e36c: 00008821 move s1,zero
-8003e370: afa70014 sw a3,20(sp)
-8003e374: 12c000ab beqz s6,8003e624 <__muldf3+0x4d8>
-8003e378: afa60010 sw a2,16(sp)
-8003e37c: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003e380: 02c02021 move a0,s6
-8003e384: 8fa60010 lw a2,16(sp)
-8003e388: 8fa70014 lw a3,20(sp)
-8003e38c: 2443fff5 addiu v1,v0,-11
-8003e390: 2864001d slti a0,v1,29
-8003e394: 108000a0 beqz a0,8003e618 <__muldf3+0x4cc>
-8003e398: 2445ffd8 addiu a1,v0,-40
-8003e39c: 2408001d li t0,29
-8003e3a0: 2451fff8 addiu s1,v0,-8
-8003e3a4: 01034023 subu t0,t0,v1
-8003e3a8: 02362804 sllv a1,s6,s1
-8003e3ac: 01124006 srlv t0,s2,t0
-8003e3b0: 0105b025 or s6,t0,a1
-8003e3b4: 02328804 sllv s1,s2,s1
-8003e3b8: 2408fc02 li t0,-1022
-8003e3bc: 0103b823 subu s7,t0,v1
-8003e3c0: 00009021 move s2,zero
-8003e3c4: 1000ff81 b 8003e1cc <__muldf3+0x80>
-8003e3c8: 0000f021 move s8,zero
-8003e3cc: 02063025 or a2,s0,a2
-8003e3d0: 14c0000c bnez a2,8003e404 <__muldf3+0x2b8>
-8003e3d4: 00000000 nop
-8003e3d8: 00008021 move s0,zero
-8003e3dc: 00002021 move a0,zero
-8003e3e0: 1000ff8c b 8003e214 <__muldf3+0xc8>
-8003e3e4: 24020002 li v0,2
-8003e3e8: 241007ff li s0,2047
-8003e3ec: 00002021 move a0,zero
-8003e3f0: 1000ffc8 b 8003e314 <__muldf3+0x1c8>
-8003e3f4: 00008821 move s1,zero
-8003e3f8: 00008021 move s0,zero
-8003e3fc: 1000ff85 b 8003e214 <__muldf3+0xc8>
-8003e400: 24020001 li v0,1
-8003e404: 1000ff83 b 8003e214 <__muldf3+0xc8>
-8003e408: 24020003 li v0,3
-8003e40c: 24120004 li s2,4
-8003e410: 0000b021 move s6,zero
-8003e414: 1000ff6d b 8003e1cc <__muldf3+0x80>
-8003e418: 241e0001 li s8,1
-8003e41c: 1000ff6b b 8003e1cc <__muldf3+0x80>
-8003e420: 241e0003 li s8,3
-8003e424: 3c100007 lui s0,0x7
-8003e428: 3605ffff ori a1,s0,0xffff
-8003e42c: 2411ffff li s1,-1
-8003e430: 0000a821 move s5,zero
-8003e434: 3c10000f lui s0,0xf
-8003e438: 3610ffff ori s0,s0,0xffff
-8003e43c: 00b02024 and a0,a1,s0
-8003e440: 32a30001 andi v1,s5,0x1
-8003e444: 1000ffb3 b 8003e314 <__muldf3+0x1c8>
-8003e448: 241007ff li s0,2047
-8003e44c: 02c08021 move s0,s6
-8003e450: 02202021 move a0,s1
-8003e454: 1000ffa4 b 8003e2e8 <__muldf3+0x19c>
-8003e458: 03c01021 move v0,s8
-8003e45c: 02c08021 move s0,s6
-8003e460: 02202021 move a0,s1
-8003e464: 02801821 move v1,s4
-8003e468: 1000ff9f b 8003e2e8 <__muldf3+0x19c>
-8003e46c: 03c01021 move v0,s8
-8003e470: 02300019 multu s1,s0
-8003e474: 00007012 mflo t6
-8003e478: 00007810 mfhi t7
- ...
-8003e484: 02240019 multu s1,a0
-8003e488: 00006012 mflo t4
-8003e48c: 00006810 mfhi t5
-8003e490: 01ae5021 addu t2,t5,t6
-8003e494: 014e102b sltu v0,t2,t6
-8003e498: 02160019 multu s0,s6
-8003e49c: 00008012 mflo s0
-8003e4a0: 01f03021 addu a2,t7,s0
-8003e4a4: 00464821 addu t1,v0,a2
-8003e4a8: 00008810 mfhi s1
-8003e4ac: 0122102b sltu v0,t1,v0
-8003e4b0: 00cf302b sltu a2,a2,t7
-8003e4b4: 00960019 multu a0,s6
-8003e4b8: 00c23025 or a2,a2,v0
-8003e4bc: 00d13021 addu a2,a2,s1
-8003e4c0: 3c020100 lui v0,0x100
-8003e4c4: 00002012 mflo a0
-8003e4c8: 01445021 addu t2,t2,a0
-8003e4cc: 0144802b sltu s0,t2,a0
-8003e4d0: 00002810 mfhi a1
-8003e4d4: 01254821 addu t1,t1,a1
-8003e4d8: 0209b021 addu s6,s0,t1
-8003e4dc: 02d0802b sltu s0,s6,s0
-8003e4e0: 0125482b sltu t1,t1,a1
-8003e4e4: 01308025 or s0,t1,s0
-8003e4e8: 00d08021 addu s0,a2,s0
-8003e4ec: 000a8a40 sll s1,t2,0x9
-8003e4f0: 00102a40 sll a1,s0,0x9
-8003e4f4: 022c8825 or s1,s1,t4
-8003e4f8: 001685c2 srl s0,s6,0x17
-8003e4fc: 0011202b sltu a0,zero,s1
-8003e500: 00b08025 or s0,a1,s0
-8003e504: 000a55c2 srl t2,t2,0x17
-8003e508: 008a5025 or t2,a0,t2
-8003e50c: 02021024 and v0,s0,v0
-8003e510: 00162240 sll a0,s6,0x9
-8003e514: 10400008 beqz v0,8003e538 <__muldf3+0x3ec>
-8003e518: 01442025 or a0,t2,a0
-8003e51c: 00041042 srl v0,a0,0x1
-8003e520: 30840001 andi a0,a0,0x1
-8003e524: 00102fc0 sll a1,s0,0x1f
-8003e528: 00442025 or a0,v0,a0
-8003e52c: 00a42025 or a0,a1,a0
-8003e530: 00108042 srl s0,s0,0x1
-8003e534: 00e04021 move t0,a3
-8003e538: 250203ff addiu v0,t0,1023
-8003e53c: 18400042 blez v0,8003e648 <__muldf3+0x4fc>
-8003e540: 00000000 nop
-8003e544: 30850007 andi a1,a0,0x7
-8003e548: 10a00009 beqz a1,8003e570 <__muldf3+0x424>
-8003e54c: 3c050100 lui a1,0x100
-8003e550: 3085000f andi a1,a0,0xf
-8003e554: 24060004 li a2,4
-8003e558: 10a60004 beq a1,a2,8003e56c <__muldf3+0x420>
-8003e55c: 24850004 addiu a1,a0,4
-8003e560: 00a4202b sltu a0,a1,a0
-8003e564: 02048021 addu s0,s0,a0
-8003e568: 00a02021 move a0,a1
-8003e56c: 3c050100 lui a1,0x100
-8003e570: 02052824 and a1,s0,a1
-8003e574: 10a00006 beqz a1,8003e590 <__muldf3+0x444>
-8003e578: 284507ff slti a1,v0,2047
-8003e57c: 3c02feff lui v0,0xfeff
-8003e580: 3442ffff ori v0,v0,0xffff
-8003e584: 02028024 and s0,s0,v0
-8003e588: 25020400 addiu v0,t0,1024
-8003e58c: 284507ff slti a1,v0,2047
-8003e590: 10a0ff95 beqz a1,8003e3e8 <__muldf3+0x29c>
-8003e594: 00000000 nop
-8003e598: 000420c2 srl a0,a0,0x3
-8003e59c: 00108f40 sll s1,s0,0x1d
-8003e5a0: 00108240 sll s0,s0,0x9
-8003e5a4: 02248825 or s1,s1,a0
-8003e5a8: 00102302 srl a0,s0,0xc
-8003e5ac: 1000ff59 b 8003e314 <__muldf3+0x1c8>
-8003e5b0: 305007ff andi s0,v0,0x7ff
-8003e5b4: 02d08025 or s0,s6,s0
-8003e5b8: 3c040008 lui a0,0x8
-8003e5bc: 02048024 and s0,s0,a0
-8003e5c0: 1600001e bnez s0,8003e63c <__muldf3+0x4f0>
-8003e5c4: 2485ffff addiu a1,a0,-1
-8003e5c8: 2484ffff addiu a0,a0,-1
-8003e5cc: 02c42824 and a1,s6,a0
-8003e5d0: 02251025 or v0,s1,a1
-8003e5d4: 1440ff97 bnez v0,8003e434 <__muldf3+0x2e8>
-8003e5d8: 00000000 nop
-8003e5dc: 3c040007 lui a0,0x7
-8003e5e0: 00001821 move v1,zero
-8003e5e4: 241007ff li s0,2047
-8003e5e8: 3484ffff ori a0,a0,0xffff
-8003e5ec: 1000ff49 b 8003e314 <__muldf3+0x1c8>
-8003e5f0: 2411ffff li s1,-1
-8003e5f4: 2442ffd8 addiu v0,v0,-40
-8003e5f8: 00468004 sllv s0,a2,v0
-8003e5fc: 1000ff35 b 8003e2d4 <__muldf3+0x188>
-8003e600: 00002021 move a0,zero
-8003e604: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003e608: afa60010 sw a2,16(sp)
-8003e60c: 8fa60010 lw a2,16(sp)
-8003e610: 1000ff26 b 8003e2ac <__muldf3+0x160>
-8003e614: 24420020 addiu v0,v0,32
-8003e618: 00b2b004 sllv s6,s2,a1
-8003e61c: 1000ff66 b 8003e3b8 <__muldf3+0x26c>
-8003e620: 00008821 move s1,zero
-8003e624: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003e628: 02402021 move a0,s2
-8003e62c: 8fa70014 lw a3,20(sp)
-8003e630: 8fa60010 lw a2,16(sp)
-8003e634: 1000ff55 b 8003e38c <__muldf3+0x240>
-8003e638: 24420020 addiu v0,v0,32
-8003e63c: 2411ffff li s1,-1
-8003e640: 1000ff7c b 8003e434 <__muldf3+0x2e8>
-8003e644: 0000a821 move s5,zero
-8003e648: 1440001b bnez v0,8003e6b8 <__muldf3+0x56c>
-8003e64c: 24050001 li a1,1
-8003e650: 24020020 li v0,32
-8003e654: 00451023 subu v0,v0,a1
-8003e658: 00503004 sllv a2,s0,v0
-8003e65c: 00a43806 srlv a3,a0,a1
-8003e660: 00441004 sllv v0,a0,v0
-8003e664: 0002102b sltu v0,zero,v0
-8003e668: 00c73025 or a2,a2,a3
-8003e66c: 00c23025 or a2,a2,v0
-8003e670: 30c20007 andi v0,a2,0x7
-8003e674: 10400008 beqz v0,8003e698 <__muldf3+0x54c>
-8003e678: 00b02806 srlv a1,s0,a1
-8003e67c: 30c2000f andi v0,a2,0xf
-8003e680: 24040004 li a0,4
-8003e684: 10440004 beq v0,a0,8003e698 <__muldf3+0x54c>
-8003e688: 00c01021 move v0,a2
-8003e68c: 24460004 addiu a2,v0,4
-8003e690: 00c2102b sltu v0,a2,v0
-8003e694: 00a22821 addu a1,a1,v0
-8003e698: 3c020080 lui v0,0x80
-8003e69c: 00a21024 and v0,a1,v0
-8003e6a0: 1040001d beqz v0,8003e718 <__muldf3+0x5cc>
-8003e6a4: 00000000 nop
-8003e6a8: 24100001 li s0,1
-8003e6ac: 00002021 move a0,zero
-8003e6b0: 1000ff18 b 8003e314 <__muldf3+0x1c8>
-8003e6b4: 00008821 move s1,zero
-8003e6b8: 00a22823 subu a1,a1,v0
-8003e6bc: 28a60039 slti a2,a1,57
-8003e6c0: 10c0ff11 beqz a2,8003e308 <__muldf3+0x1bc>
-8003e6c4: 28a60020 slti a2,a1,32
-8003e6c8: 14c0ffe1 bnez a2,8003e650 <__muldf3+0x504>
-8003e6cc: 2406ffe1 li a2,-31
-8003e6d0: 00c21023 subu v0,a2,v0
-8003e6d4: 00503006 srlv a2,s0,v0
-8003e6d8: 24020020 li v0,32
-8003e6dc: 10a20003 beq a1,v0,8003e6ec <__muldf3+0x5a0>
-8003e6e0: 00001021 move v0,zero
-8003e6e4: 00051023 negu v0,a1
-8003e6e8: 00501004 sllv v0,s0,v0
-8003e6ec: 00441025 or v0,v0,a0
-8003e6f0: 0002102b sltu v0,zero,v0
-8003e6f4: 00c21025 or v0,a2,v0
-8003e6f8: 30450007 andi a1,v0,0x7
-8003e6fc: 14a0000b bnez a1,8003e72c <__muldf3+0x5e0>
-8003e700: 00002021 move a0,zero
-8003e704: 000210c2 srl v0,v0,0x3
-8003e708: 00a28825 or s1,a1,v0
-8003e70c: 1000ff01 b 8003e314 <__muldf3+0x1c8>
-8003e710: 00008021 move s0,zero
-8003e714: 00002821 move a1,zero
-8003e718: 00052240 sll a0,a1,0x9
-8003e71c: 00042302 srl a0,a0,0xc
-8003e720: 00052f40 sll a1,a1,0x1d
-8003e724: 1000fff7 b 8003e704 <__muldf3+0x5b8>
-8003e728: 00c01021 move v0,a2
-8003e72c: 3044000f andi a0,v0,0xf
-8003e730: 24050004 li a1,4
-8003e734: 1085fff7 beq a0,a1,8003e714 <__muldf3+0x5c8>
-8003e738: 00403021 move a2,v0
-8003e73c: 1000ffd3 b 8003e68c <__muldf3+0x540>
-8003e740: 00002821 move a1,zero
-8003e744: 34a5ffff ori a1,a1,0xffff
-8003e748: 02052824 and a1,s0,a1
-8003e74c: 00851025 or v0,a0,a1
-8003e750: 00808821 move s1,a0
-8003e754: 1000ff9f b 8003e5d4 <__muldf3+0x488>
-8003e758: 0060a821 move s5,v1
-
-8003e75c <__subdf3>:
-8003e75c: 3c08000f lui t0,0xf
-8003e760: 3508ffff ori t0,t0,0xffff
-8003e764: 01054824 and t1,t0,a1
-8003e768: 00075502 srl t2,a3,0x14
-8003e76c: 01074024 and t0,t0,a3
-8003e770: 27bdffd8 addiu sp,sp,-40
-8003e774: 00051502 srl v0,a1,0x14
-8003e778: 00046742 srl t4,a0,0x1d
-8003e77c: 00065f42 srl t3,a2,0x1d
-8003e780: 000948c0 sll t1,t1,0x3
-8003e784: 000840c0 sll t0,t0,0x3
-8003e788: 314a07ff andi t2,t2,0x7ff
-8003e78c: 240307ff li v1,2047
-8003e790: 000420c0 sll a0,a0,0x3
-8003e794: afb10018 sw s1,24(sp)
-8003e798: afb00014 sw s0,20(sp)
-8003e79c: 305107ff andi s1,v0,0x7ff
-8003e7a0: afbf0024 sw ra,36(sp)
-8003e7a4: afb30020 sw s3,32(sp)
-8003e7a8: afb2001c sw s2,28(sp)
-8003e7ac: 000587c2 srl s0,a1,0x1f
-8003e7b0: 012c1025 or v0,t1,t4
-8003e7b4: 00073fc2 srl a3,a3,0x1f
-8003e7b8: 010b4025 or t0,t0,t3
-8003e7bc: 11430012 beq t2,v1,8003e808 <__subdf3+0xac>
-8003e7c0: 000630c0 sll a2,a2,0x3
-8003e7c4: 38e70001 xori a3,a3,0x1
-8003e7c8: 10f00066 beq a3,s0,8003e964 <__subdf3+0x208>
-8003e7cc: 022a2823 subu a1,s1,t2
-8003e7d0: 18a000d3 blez a1,8003eb20 <__subdf3+0x3c4>
-8003e7d4: 00000000 nop
-8003e7d8: 15400010 bnez t2,8003e81c <__subdf3+0xc0>
-8003e7dc: 240307ff li v1,2047
-8003e7e0: 01061825 or v1,t0,a2
-8003e7e4: 10600085 beqz v1,8003e9fc <__subdf3+0x2a0>
-8003e7e8: 240307ff li v1,2047
-8003e7ec: 24a5ffff addiu a1,a1,-1
-8003e7f0: 14a000ad bnez a1,8003eaa8 <__subdf3+0x34c>
-8003e7f4: 00869023 subu s2,a0,a2
-8003e7f8: 00481023 subu v0,v0,t0
-8003e7fc: 0092202b sltu a0,a0,s2
-8003e800: 1000001a b 8003e86c <__subdf3+0x110>
-8003e804: 00441023 subu v0,v0,a0
-8003e808: 01061825 or v1,t0,a2
-8003e80c: 1460ffee bnez v1,8003e7c8 <__subdf3+0x6c>
-8003e810: 00000000 nop
-8003e814: 1000ffec b 8003e7c8 <__subdf3+0x6c>
-8003e818: 38e70001 xori a3,a3,0x1
-8003e81c: 122300a4 beq s1,v1,8003eab0 <__subdf3+0x354>
-8003e820: 3c030080 lui v1,0x80
-8003e824: 01034025 or t0,t0,v1
-8003e828: 28a30039 slti v1,a1,57
-8003e82c: 106000e6 beqz v1,8003ebc8 <__subdf3+0x46c>
-8003e830: 28a30020 slti v1,a1,32
-8003e834: 1060010a beqz v1,8003ec60 <__subdf3+0x504>
-8003e838: 24070020 li a3,32
-8003e83c: 00e53823 subu a3,a3,a1
-8003e840: 00a69006 srlv s2,a2,a1
-8003e844: 00e81804 sllv v1,t0,a3
-8003e848: 00e63004 sllv a2,a2,a3
-8003e84c: 00721825 or v1,v1,s2
-8003e850: 0006902b sltu s2,zero,a2
-8003e854: 00729025 or s2,v1,s2
-8003e858: 00a84006 srlv t0,t0,a1
-8003e85c: 00929023 subu s2,a0,s2
-8003e860: 00484023 subu t0,v0,t0
-8003e864: 0092202b sltu a0,a0,s2
-8003e868: 01041023 subu v0,t0,a0
-8003e86c: 3c130080 lui s3,0x80
-8003e870: 00531824 and v1,v0,s3
-8003e874: 106000a6 beqz v1,8003eb10 <__subdf3+0x3b4>
-8003e878: 32430007 andi v1,s2,0x7
-8003e87c: 2673ffff addiu s3,s3,-1
-8003e880: 00539824 and s3,v0,s3
-8003e884: 126000b9 beqz s3,8003eb6c <__subdf3+0x410>
-8003e888: 00000000 nop
-8003e88c: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003e890: 02602021 move a0,s3
-8003e894: 2446fff8 addiu a2,v0,-8
-8003e898: 28c30020 slti v1,a2,32
-8003e89c: 106000bb beqz v1,8003eb8c <__subdf3+0x430>
-8003e8a0: 2442ffd8 addiu v0,v0,-40
-8003e8a4: 00061823 negu v1,a2
-8003e8a8: 00721806 srlv v1,s2,v1
-8003e8ac: 00d31004 sllv v0,s3,a2
-8003e8b0: 00629825 or s3,v1,v0
-8003e8b4: 00d1102a slt v0,a2,s1
-8003e8b8: 144000b8 bnez v0,8003eb9c <__subdf3+0x440>
-8003e8bc: 00d29004 sllv s2,s2,a2
-8003e8c0: 00d13023 subu a2,a2,s1
-8003e8c4: 24c20001 addiu v0,a2,1
-8003e8c8: 28430020 slti v1,v0,32
-8003e8cc: 106000d9 beqz v1,8003ec34 <__subdf3+0x4d8>
-8003e8d0: 24030020 li v1,32
-8003e8d4: 00621823 subu v1,v1,v0
-8003e8d8: 00522006 srlv a0,s2,v0
-8003e8dc: 00724004 sllv t0,s2,v1
-8003e8e0: 00731804 sllv v1,s3,v1
-8003e8e4: 00641825 or v1,v1,a0
-8003e8e8: 0008402b sltu t0,zero,t0
-8003e8ec: 00689025 or s2,v1,t0
-8003e8f0: 00531006 srlv v0,s3,v0
-8003e8f4: 32430007 andi v1,s2,0x7
-8003e8f8: 00008821 move s1,zero
-8003e8fc: 10600043 beqz v1,8003ea0c <__subdf3+0x2b0>
-8003e900: 3c030080 lui v1,0x80
-8003e904: 3243000f andi v1,s2,0xf
-8003e908: 24040004 li a0,4
-8003e90c: 1064003e beq v1,a0,8003ea08 <__subdf3+0x2ac>
-8003e910: 26430004 addiu v1,s2,4
-8003e914: 0072402b sltu t0,v1,s2
-8003e918: 00481021 addu v0,v0,t0
-8003e91c: 00609021 move s2,v1
-8003e920: 3c030080 lui v1,0x80
-8003e924: 00431824 and v1,v0,v1
-8003e928: 1460003b bnez v1,8003ea18 <__subdf3+0x2bc>
-8003e92c: 00000000 nop
-8003e930: 00021f40 sll v1,v0,0x1d
-8003e934: 001240c2 srl t0,s2,0x3
-8003e938: 01034025 or t0,t0,v1
-8003e93c: 000218c2 srl v1,v0,0x3
-8003e940: 240207ff li v0,2047
-8003e944: 12220060 beq s1,v0,8003eac8 <__subdf3+0x36c>
-8003e948: 00000000 nop
-8003e94c: 3c06000f lui a2,0xf
-8003e950: 34c6ffff ori a2,a2,0xffff
-8003e954: 00662024 and a0,v1,a2
-8003e958: 322207ff andi v0,s1,0x7ff
-8003e95c: 1000003c b 8003ea50 <__subdf3+0x2f4>
-8003e960: 32030001 andi v1,s0,0x1
-8003e964: 022a1823 subu v1,s1,t2
-8003e968: 1860009f blez v1,8003ebe8 <__subdf3+0x48c>
-8003e96c: 00000000 nop
-8003e970: 11400046 beqz t2,8003ea8c <__subdf3+0x330>
-8003e974: 01062825 or a1,t0,a2
-8003e978: 240507ff li a1,2047
-8003e97c: 122500e7 beq s1,a1,8003ed1c <__subdf3+0x5c0>
-8003e980: 3c050080 lui a1,0x80
-8003e984: 01054025 or t0,t0,a1
-8003e988: 28650039 slti a1,v1,57
-8003e98c: 14a000e9 bnez a1,8003ed34 <__subdf3+0x5d8>
-8003e990: 28650020 slti a1,v1,32
-8003e994: 01063025 or a2,t0,a2
-8003e998: 0006902b sltu s2,zero,a2
-8003e99c: 00004021 move t0,zero
-8003e9a0: 02449021 addu s2,s2,a0
-8003e9a4: 01024021 addu t0,t0,v0
-8003e9a8: 0244202b sltu a0,s2,a0
-8003e9ac: 00881021 addu v0,a0,t0
-8003e9b0: 3c030080 lui v1,0x80
-8003e9b4: 00431824 and v1,v0,v1
-8003e9b8: 10600101 beqz v1,8003edc0 <__subdf3+0x664>
-8003e9bc: 240307ff li v1,2047
-8003e9c0: 26310001 addiu s1,s1,1
-8003e9c4: 12230109 beq s1,v1,8003edec <__subdf3+0x690>
-8003e9c8: 00000000 nop
-8003e9cc: 3c03ff7f lui v1,0xff7f
-8003e9d0: 3463ffff ori v1,v1,0xffff
-8003e9d4: 00431024 and v0,v0,v1
-8003e9d8: 32480001 andi t0,s2,0x1
-8003e9dc: 00121842 srl v1,s2,0x1
-8003e9e0: 00684025 or t0,v1,t0
-8003e9e4: 000297c0 sll s2,v0,0x1f
-8003e9e8: 02489025 or s2,s2,t0
-8003e9ec: 00021042 srl v0,v0,0x1
-8003e9f0: 32430007 andi v1,s2,0x7
-8003e9f4: 1000ffc1 b 8003e8fc <__subdf3+0x1a0>
-8003e9f8: 00e08021 move s0,a3
-8003e9fc: 1223002d beq s1,v1,8003eab4 <__subdf3+0x358>
-8003ea00: 00441825 or v1,v0,a0
-8003ea04: 00809021 move s2,a0
-8003ea08: 3c030080 lui v1,0x80
-8003ea0c: 00431824 and v1,v0,v1
-8003ea10: 1060ffc8 beqz v1,8003e934 <__subdf3+0x1d8>
-8003ea14: 00021f40 sll v1,v0,0x1d
-8003ea18: 26260001 addiu a2,s1,1
-8003ea1c: 240307ff li v1,2047
-8003ea20: 10c30065 beq a2,v1,8003ebb8 <__subdf3+0x45c>
-8003ea24: 32030001 andi v1,s0,0x1
-8003ea28: 3c04ff7f lui a0,0xff7f
-8003ea2c: 3484ffff ori a0,a0,0xffff
-8003ea30: 00441024 and v0,v0,a0
-8003ea34: 00021f40 sll v1,v0,0x1d
-8003ea38: 001240c2 srl t0,s2,0x3
-8003ea3c: 00021240 sll v0,v0,0x9
-8003ea40: 00684025 or t0,v1,t0
-8003ea44: 00022302 srl a0,v0,0xc
-8003ea48: 32030001 andi v1,s0,0x1
-8003ea4c: 30c207ff andi v0,a2,0x7ff
-8003ea50: 00023500 sll a2,v0,0x14
-8003ea54: 3c02000f lui v0,0xf
-8003ea58: 3442ffff ori v0,v0,0xffff
-8003ea5c: 8fbf0024 lw ra,36(sp)
-8003ea60: 00821024 and v0,a0,v0
-8003ea64: 00461025 or v0,v0,a2
-8003ea68: 00031fc0 sll v1,v1,0x1f
-8003ea6c: 00431825 or v1,v0,v1
-8003ea70: 8fb30020 lw s3,32(sp)
-8003ea74: 8fb2001c lw s2,28(sp)
-8003ea78: 8fb10018 lw s1,24(sp)
-8003ea7c: 8fb00014 lw s0,20(sp)
-8003ea80: 01001021 move v0,t0
-8003ea84: 03e00008 jr ra
-8003ea88: 27bd0028 addiu sp,sp,40
-8003ea8c: 14a0009e bnez a1,8003ed08 <__subdf3+0x5ac>
-8003ea90: 2463ffff addiu v1,v1,-1
-8003ea94: 240307ff li v1,2047
-8003ea98: 1623ffdb bne s1,v1,8003ea08 <__subdf3+0x2ac>
-8003ea9c: 00809021 move s2,a0
-8003eaa0: 1000009f b 8003ed20 <__subdf3+0x5c4>
-8003eaa4: 00441825 or v1,v0,a0
-8003eaa8: 1623ff60 bne s1,v1,8003e82c <__subdf3+0xd0>
-8003eaac: 28a30039 slti v1,a1,57
-8003eab0: 00441825 or v1,v0,a0
-8003eab4: 1460ffd4 bnez v1,8003ea08 <__subdf3+0x2ac>
-8003eab8: 00809021 move s2,a0
-8003eabc: 02003821 move a3,s0
-8003eac0: 00004021 move t0,zero
-8003eac4: 00e08021 move s0,a3
-8003eac8: 00681025 or v0,v1,t0
-8003eacc: 10400039 beqz v0,8003ebb4 <__subdf3+0x458>
-8003ead0: 00000000 nop
-8003ead4: 3c040007 lui a0,0x7
-8003ead8: 3484ffff ori a0,a0,0xffff
-8003eadc: 00641024 and v0,v1,a0
-8003eae0: 00481825 or v1,v0,t0
-8003eae4: 1460003c bnez v1,8003ebd8 <__subdf3+0x47c>
-8003eae8: 00000000 nop
-8003eaec: 00001821 move v1,zero
-8003eaf0: 240207ff li v0,2047
-8003eaf4: 1000ffd6 b 8003ea50 <__subdf3+0x2f4>
-8003eaf8: 2408ffff li t0,-1
-8003eafc: 02451825 or v1,s2,a1
-8003eb00: 10600133 beqz v1,8003efd0 <__subdf3+0x874>
-8003eb04: 00004021 move t0,zero
-8003eb08: 00a01021 move v0,a1
-8003eb0c: 32430007 andi v1,s2,0x7
-8003eb10: 1460ff7c bnez v1,8003e904 <__subdf3+0x1a8>
-8003eb14: 00021f40 sll v1,v0,0x1d
-8003eb18: 1000ff87 b 8003e938 <__subdf3+0x1dc>
-8003eb1c: 001240c2 srl t0,s2,0x3
-8003eb20: 14a00058 bnez a1,8003ec84 <__subdf3+0x528>
-8003eb24: 26230001 addiu v1,s1,1
-8003eb28: 306307ff andi v1,v1,0x7ff
-8003eb2c: 28630002 slti v1,v1,2
-8003eb30: 146000a5 bnez v1,8003edc8 <__subdf3+0x66c>
-8003eb34: 00869023 subu s2,a0,a2
-8003eb38: 0092182b sltu v1,a0,s2
-8003eb3c: 00489823 subu s3,v0,t0
-8003eb40: 02639823 subu s3,s3,v1
-8003eb44: 3c030080 lui v1,0x80
-8003eb48: 02631824 and v1,s3,v1
-8003eb4c: 10600069 beqz v1,8003ecf4 <__subdf3+0x598>
-8003eb50: 02531825 or v1,s2,s3
-8003eb54: 00c49023 subu s2,a2,a0
-8003eb58: 01021023 subu v0,t0,v0
-8003eb5c: 00d2302b sltu a2,a2,s2
-8003eb60: 00469823 subu s3,v0,a2
-8003eb64: 1660ff49 bnez s3,8003e88c <__subdf3+0x130>
-8003eb68: 00e08021 move s0,a3
-8003eb6c: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003eb70: 02402021 move a0,s2
-8003eb74: 24420020 addiu v0,v0,32
-8003eb78: 2446fff8 addiu a2,v0,-8
-8003eb7c: 28c30020 slti v1,a2,32
-8003eb80: 1460ff49 bnez v1,8003e8a8 <__subdf3+0x14c>
-8003eb84: 00061823 negu v1,a2
-8003eb88: 2442ffd8 addiu v0,v0,-40
-8003eb8c: 00529804 sllv s3,s2,v0
-8003eb90: 00d1102a slt v0,a2,s1
-8003eb94: 1040ff4a beqz v0,8003e8c0 <__subdf3+0x164>
-8003eb98: 00009021 move s2,zero
-8003eb9c: 3c02ff7f lui v0,0xff7f
-8003eba0: 3442ffff ori v0,v0,0xffff
-8003eba4: 02268823 subu s1,s1,a2
-8003eba8: 02621024 and v0,s3,v0
-8003ebac: 1000ff53 b 8003e8fc <__subdf3+0x1a0>
-8003ebb0: 32430007 andi v1,s2,0x7
-8003ebb4: 32030001 andi v1,s0,0x1
-8003ebb8: 240207ff li v0,2047
-8003ebbc: 00002021 move a0,zero
-8003ebc0: 1000ffa3 b 8003ea50 <__subdf3+0x2f4>
-8003ebc4: 00004021 move t0,zero
-8003ebc8: 01064025 or t0,t0,a2
-8003ebcc: 0008902b sltu s2,zero,t0
-8003ebd0: 1000ff22 b 8003e85c <__subdf3+0x100>
-8003ebd4: 00004021 move t0,zero
-8003ebd8: 00402021 move a0,v0
-8003ebdc: 32030001 andi v1,s0,0x1
-8003ebe0: 1000ff9b b 8003ea50 <__subdf3+0x2f4>
-8003ebe4: 240207ff li v0,2047
-8003ebe8: 1460008d bnez v1,8003ee20 <__subdf3+0x6c4>
-8003ebec: 26250001 addiu a1,s1,1
-8003ebf0: 30a307ff andi v1,a1,0x7ff
-8003ebf4: 28630002 slti v1,v1,2
-8003ebf8: 1460006a bnez v1,8003eda4 <__subdf3+0x648>
-8003ebfc: 00000000 nop
-8003ec00: 240307ff li v1,2047
-8003ec04: 10a30079 beq a1,v1,8003edec <__subdf3+0x690>
-8003ec08: 00481021 addu v0,v0,t0
-8003ec0c: 00863021 addu a2,a0,a2
-8003ec10: 00c4202b sltu a0,a2,a0
-8003ec14: 00821021 addu v0,a0,v0
-8003ec18: 000247c0 sll t0,v0,0x1f
-8003ec1c: 00063042 srl a2,a2,0x1
-8003ec20: 01069025 or s2,t0,a2
-8003ec24: 00021042 srl v0,v0,0x1
-8003ec28: 32430007 andi v1,s2,0x7
-8003ec2c: 1000ff33 b 8003e8fc <__subdf3+0x1a0>
-8003ec30: 00a08821 move s1,a1
-8003ec34: 24c6ffe1 addiu a2,a2,-31
-8003ec38: 10430056 beq v0,v1,8003ed94 <__subdf3+0x638>
-8003ec3c: 00d33006 srlv a2,s3,a2
-8003ec40: 00024023 negu t0,v0
-8003ec44: 01134004 sllv t0,s3,t0
-8003ec48: 02484025 or t0,s2,t0
-8003ec4c: 0008402b sltu t0,zero,t0
-8003ec50: 00c89025 or s2,a2,t0
-8003ec54: 00001021 move v0,zero
-8003ec58: 1000ffac b 8003eb0c <__subdf3+0x3b0>
-8003ec5c: 00008821 move s1,zero
-8003ec60: 10a7004e beq a1,a3,8003ed9c <__subdf3+0x640>
-8003ec64: 00a81806 srlv v1,t0,a1
-8003ec68: 00059023 negu s2,a1
-8003ec6c: 02489004 sllv s2,t0,s2
-8003ec70: 02463025 or a2,s2,a2
-8003ec74: 0006902b sltu s2,zero,a2
-8003ec78: 00729025 or s2,v1,s2
-8003ec7c: 1000fef7 b 8003e85c <__subdf3+0x100>
-8003ec80: 00004021 move t0,zero
-8003ec84: 12200036 beqz s1,8003ed60 <__subdf3+0x604>
-8003ec88: 00441825 or v1,v0,a0
-8003ec8c: 240307ff li v1,2047
-8003ec90: 114300c5 beq t2,v1,8003efa8 <__subdf3+0x84c>
-8003ec94: 3c030080 lui v1,0x80
-8003ec98: 00052823 negu a1,a1
-8003ec9c: 00431025 or v0,v0,v1
-8003eca0: 28a30039 slti v1,a1,57
-8003eca4: 1060007e beqz v1,8003eea0 <__subdf3+0x744>
-8003eca8: 28a30020 slti v1,a1,32
-8003ecac: 106000ca beqz v1,8003efd8 <__subdf3+0x87c>
-8003ecb0: 24030020 li v1,32
-8003ecb4: 24090020 li t1,32
-8003ecb8: 01254823 subu t1,t1,a1
-8003ecbc: 00a49006 srlv s2,a0,a1
-8003ecc0: 01221804 sllv v1,v0,t1
-8003ecc4: 01242004 sllv a0,a0,t1
-8003ecc8: 00721825 or v1,v1,s2
-8003eccc: 0004902b sltu s2,zero,a0
-8003ecd0: 00729025 or s2,v1,s2
-8003ecd4: 00a21006 srlv v0,v0,a1
-8003ecd8: 00d29023 subu s2,a2,s2
-8003ecdc: 01021023 subu v0,t0,v0
-8003ece0: 00d2302b sltu a2,a2,s2
-8003ece4: 00461023 subu v0,v0,a2
-8003ece8: 01408821 move s1,t2
-8003ecec: 1000fedf b 8003e86c <__subdf3+0x110>
-8003ecf0: 00e08021 move s0,a3
-8003ecf4: 1460fee3 bnez v1,8003e884 <__subdf3+0x128>
-8003ecf8: 00004021 move t0,zero
-8003ecfc: 00008021 move s0,zero
-8003ed00: 1000ff12 b 8003e94c <__subdf3+0x1f0>
-8003ed04: 00008821 move s1,zero
-8003ed08: 1060001e beqz v1,8003ed84 <__subdf3+0x628>
-8003ed0c: 00869021 addu s2,a0,a2
-8003ed10: 240507ff li a1,2047
-8003ed14: 1625ff1d bne s1,a1,8003e98c <__subdf3+0x230>
-8003ed18: 28650039 slti a1,v1,57
-8003ed1c: 00441825 or v1,v0,a0
-8003ed20: 1460ff39 bnez v1,8003ea08 <__subdf3+0x2ac>
-8003ed24: 00809021 move s2,a0
-8003ed28: 00004021 move t0,zero
-8003ed2c: 1000ff66 b 8003eac8 <__subdf3+0x36c>
-8003ed30: 00e08021 move s0,a3
-8003ed34: 10a00031 beqz a1,8003edfc <__subdf3+0x6a0>
-8003ed38: 24090020 li t1,32
-8003ed3c: 01234823 subu t1,t1,v1
-8003ed40: 00669006 srlv s2,a2,v1
-8003ed44: 01282804 sllv a1,t0,t1
-8003ed48: 01263004 sllv a2,a2,t1
-8003ed4c: 00b22825 or a1,a1,s2
-8003ed50: 0006902b sltu s2,zero,a2
-8003ed54: 00b29025 or s2,a1,s2
-8003ed58: 1000ff11 b 8003e9a0 <__subdf3+0x244>
-8003ed5c: 00684006 srlv t0,t0,v1
-8003ed60: 1460004a bnez v1,8003ee8c <__subdf3+0x730>
-8003ed64: 00000000 nop
-8003ed68: 240207ff li v0,2047
-8003ed6c: 1142008e beq t2,v0,8003efa8 <__subdf3+0x84c>
-8003ed70: 01001021 move v0,t0
-8003ed74: 00c09021 move s2,a2
-8003ed78: 01408821 move s1,t2
-8003ed7c: 1000ff22 b 8003ea08 <__subdf3+0x2ac>
-8003ed80: 00e08021 move s0,a3
-8003ed84: 00481021 addu v0,v0,t0
-8003ed88: 0244202b sltu a0,s2,a0
-8003ed8c: 1000ff08 b 8003e9b0 <__subdf3+0x254>
-8003ed90: 00821021 addu v0,a0,v0
-8003ed94: 1000ffac b 8003ec48 <__subdf3+0x4ec>
-8003ed98: 00004021 move t0,zero
-8003ed9c: 1000ffb4 b 8003ec70 <__subdf3+0x514>
-8003eda0: 00009021 move s2,zero
-8003eda4: 1620006a bnez s1,8003ef50 <__subdf3+0x7f4>
-8003eda8: 00441825 or v1,v0,a0
-8003edac: 146000a4 bnez v1,8003f040 <__subdf3+0x8e4>
-8003edb0: 01061825 or v1,t0,a2
-8003edb4: 01001021 move v0,t0
-8003edb8: 1000ff13 b 8003ea08 <__subdf3+0x2ac>
-8003edbc: 00c09021 move s2,a2
-8003edc0: 1000ff52 b 8003eb0c <__subdf3+0x3b0>
-8003edc4: 00e08021 move s0,a3
-8003edc8: 16200020 bnez s1,8003ee4c <__subdf3+0x6f0>
-8003edcc: 00441825 or v1,v0,a0
-8003edd0: 1460004f bnez v1,8003ef10 <__subdf3+0x7b4>
-8003edd4: 01061825 or v1,t0,a2
-8003edd8: 1060007c beqz v1,8003efcc <__subdf3+0x870>
-8003eddc: 00c09021 move s2,a2
-8003ede0: 01001021 move v0,t0
-8003ede4: 1000ff08 b 8003ea08 <__subdf3+0x2ac>
-8003ede8: 00e08021 move s0,a3
-8003edec: 00001821 move v1,zero
-8003edf0: 00004021 move t0,zero
-8003edf4: 1000ff34 b 8003eac8 <__subdf3+0x36c>
-8003edf8: 00e08021 move s0,a3
-8003edfc: 10690071 beq v1,t1,8003efc4 <__subdf3+0x868>
-8003ee00: 00682806 srlv a1,t0,v1
-8003ee04: 00039023 negu s2,v1
-8003ee08: 02489004 sllv s2,t0,s2
-8003ee0c: 02463025 or a2,s2,a2
-8003ee10: 0006902b sltu s2,zero,a2
-8003ee14: 00b29025 or s2,a1,s2
-8003ee18: 1000fee1 b 8003e9a0 <__subdf3+0x244>
-8003ee1c: 00004021 move t0,zero
-8003ee20: 16200023 bnez s1,8003eeb0 <__subdf3+0x754>
-8003ee24: 240507ff li a1,2047
-8003ee28: 00442825 or a1,v0,a0
-8003ee2c: 14a00073 bnez a1,8003effc <__subdf3+0x8a0>
-8003ee30: 00031827 nor v1,zero,v1
-8003ee34: 240207ff li v0,2047
-8003ee38: 11420098 beq t2,v0,8003f09c <__subdf3+0x940>
-8003ee3c: 01001021 move v0,t0
-8003ee40: 00c09021 move s2,a2
-8003ee44: 1000fef0 b 8003ea08 <__subdf3+0x2ac>
-8003ee48: 01408821 move s1,t2
-8003ee4c: 14600009 bnez v1,8003ee74 <__subdf3+0x718>
-8003ee50: 00000000 nop
-8003ee54: 01061025 or v0,t0,a2
-8003ee58: 10400070 beqz v0,8003f01c <__subdf3+0x8c0>
-8003ee5c: 3c030007 lui v1,0x7
-8003ee60: 01001021 move v0,t0
-8003ee64: 00c09021 move s2,a2
-8003ee68: 00e08021 move s0,a3
-8003ee6c: 1000fee6 b 8003ea08 <__subdf3+0x2ac>
-8003ee70: 241107ff li s1,2047
-8003ee74: 01063025 or a2,t0,a2
-8003ee78: 14c0003b bnez a2,8003ef68 <__subdf3+0x80c>
-8003ee7c: 000228c2 srl a1,v0,0x3
-8003ee80: 00809021 move s2,a0
-8003ee84: 1000fee0 b 8003ea08 <__subdf3+0x2ac>
-8003ee88: 241107ff li s1,2047
-8003ee8c: 00052827 nor a1,zero,a1
-8003ee90: 14a00043 bnez a1,8003efa0 <__subdf3+0x844>
-8003ee94: 240307ff li v1,2047
-8003ee98: 1000ff90 b 8003ecdc <__subdf3+0x580>
-8003ee9c: 00c49023 subu s2,a2,a0
-8003eea0: 00441025 or v0,v0,a0
-8003eea4: 0002902b sltu s2,zero,v0
-8003eea8: 1000ff8b b 8003ecd8 <__subdf3+0x57c>
-8003eeac: 00001021 move v0,zero
-8003eeb0: 1145007a beq t2,a1,8003f09c <__subdf3+0x940>
-8003eeb4: 3c050080 lui a1,0x80
-8003eeb8: 00031823 negu v1,v1
-8003eebc: 00451025 or v0,v0,a1
-8003eec0: 28650039 slti a1,v1,57
-8003eec4: 10a0005a beqz a1,8003f030 <__subdf3+0x8d4>
-8003eec8: 28650020 slti a1,v1,32
-8003eecc: 10a00078 beqz a1,8003f0b0 <__subdf3+0x954>
-8003eed0: 24050020 li a1,32
-8003eed4: 24090020 li t1,32
-8003eed8: 01234823 subu t1,t1,v1
-8003eedc: 00649006 srlv s2,a0,v1
-8003eee0: 01222804 sllv a1,v0,t1
-8003eee4: 01242004 sllv a0,a0,t1
-8003eee8: 00b22825 or a1,a1,s2
-8003eeec: 0004902b sltu s2,zero,a0
-8003eef0: 00b29025 or s2,a1,s2
-8003eef4: 00621006 srlv v0,v0,v1
-8003eef8: 02469021 addu s2,s2,a2
-8003eefc: 00484021 addu t0,v0,t0
-8003ef00: 0246302b sltu a2,s2,a2
-8003ef04: 00c81021 addu v0,a2,t0
-8003ef08: 1000fea9 b 8003e9b0 <__subdf3+0x254>
-8003ef0c: 01408821 move s1,t2
-8003ef10: 1060febd beqz v1,8003ea08 <__subdf3+0x2ac>
-8003ef14: 00809021 move s2,a0
-8003ef18: 00869023 subu s2,a0,a2
-8003ef1c: 00481823 subu v1,v0,t0
-8003ef20: 0092282b sltu a1,a0,s2
-8003ef24: 00652823 subu a1,v1,a1
-8003ef28: 3c030080 lui v1,0x80
-8003ef2c: 00a31824 and v1,a1,v1
-8003ef30: 1060fef2 beqz v1,8003eafc <__subdf3+0x3a0>
-8003ef34: 01021023 subu v0,t0,v0
-8003ef38: 00c49023 subu s2,a2,a0
-8003ef3c: 00d2302b sltu a2,a2,s2
-8003ef40: 00461023 subu v0,v0,a2
-8003ef44: 32430007 andi v1,s2,0x7
-8003ef48: 1000fe6c b 8003e8fc <__subdf3+0x1a0>
-8003ef4c: 00e08021 move s0,a3
-8003ef50: 1460ffc8 bnez v1,8003ee74 <__subdf3+0x718>
-8003ef54: 00000000 nop
-8003ef58: 01001021 move v0,t0
-8003ef5c: 00c09021 move s2,a2
-8003ef60: 1000fea9 b 8003ea08 <__subdf3+0x2ac>
-8003ef64: 241107ff li s1,2047
-8003ef68: 000818c2 srl v1,t0,0x3
-8003ef6c: 00651825 or v1,v1,a1
-8003ef70: 3c060008 lui a2,0x8
-8003ef74: 00661824 and v1,v1,a2
-8003ef78: 14600040 bnez v1,8003f07c <__subdf3+0x920>
-8003ef7c: 000420c2 srl a0,a0,0x3
-8003ef80: 00021740 sll v0,v0,0x1d
-8003ef84: 00444025 or t0,v0,a0
-8003ef88: 000528c0 sll a1,a1,0x3
-8003ef8c: 00081742 srl v0,t0,0x1d
-8003ef90: 00451025 or v0,v0,a1
-8003ef94: 000890c0 sll s2,t0,0x3
-8003ef98: 1000fe9b b 8003ea08 <__subdf3+0x2ac>
-8003ef9c: 241107ff li s1,2047
-8003efa0: 1543ff40 bne t2,v1,8003eca4 <__subdf3+0x548>
-8003efa4: 28a30039 slti v1,a1,57
-8003efa8: 01061825 or v1,t0,a2
-8003efac: 1060ff5e beqz v1,8003ed28 <__subdf3+0x5cc>
-8003efb0: 01001021 move v0,t0
-8003efb4: 00c09021 move s2,a2
-8003efb8: 241107ff li s1,2047
-8003efbc: 1000fe92 b 8003ea08 <__subdf3+0x2ac>
-8003efc0: 00e08021 move s0,a3
-8003efc4: 1000ff91 b 8003ee0c <__subdf3+0x6b0>
-8003efc8: 00009021 move s2,zero
-8003efcc: 00004021 move t0,zero
-8003efd0: 1000fe5e b 8003e94c <__subdf3+0x1f0>
-8003efd4: 00008021 move s0,zero
-8003efd8: 10a3003e beq a1,v1,8003f0d4 <__subdf3+0x978>
-8003efdc: 00a29006 srlv s2,v0,a1
-8003efe0: 00052823 negu a1,a1
-8003efe4: 00a21004 sllv v0,v0,a1
-8003efe8: 00442025 or a0,v0,a0
-8003efec: 0004102b sltu v0,zero,a0
-8003eff0: 02429025 or s2,s2,v0
-8003eff4: 1000ff38 b 8003ecd8 <__subdf3+0x57c>
-8003eff8: 00001021 move v0,zero
-8003effc: 14600025 bnez v1,8003f094 <__subdf3+0x938>
-8003f000: 240507ff li a1,2047
-8003f004: 00869021 addu s2,a0,a2
-8003f008: 00481021 addu v0,v0,t0
-8003f00c: 0246302b sltu a2,s2,a2
-8003f010: 00c21021 addu v0,a2,v0
-8003f014: 1000fe66 b 8003e9b0 <__subdf3+0x254>
-8003f018: 01408821 move s1,t2
-8003f01c: 00003821 move a3,zero
-8003f020: 3463ffff ori v1,v1,0xffff
-8003f024: 2408ffff li t0,-1
-8003f028: 1000fea7 b 8003eac8 <__subdf3+0x36c>
-8003f02c: 00e08021 move s0,a3
-8003f030: 00441025 or v0,v0,a0
-8003f034: 0002902b sltu s2,zero,v0
-8003f038: 1000ffaf b 8003eef8 <__subdf3+0x79c>
-8003f03c: 00001021 move v0,zero
-8003f040: 1060fe71 beqz v1,8003ea08 <__subdf3+0x2ac>
-8003f044: 00809021 move s2,a0
-8003f048: 00869021 addu s2,a0,a2
-8003f04c: 00481021 addu v0,v0,t0
-8003f050: 0244202b sltu a0,s2,a0
-8003f054: 00821021 addu v0,a0,v0
-8003f058: 3c030080 lui v1,0x80
-8003f05c: 00431824 and v1,v0,v1
-8003f060: 1060feaa beqz v1,8003eb0c <__subdf3+0x3b0>
-8003f064: 3c03ff7f lui v1,0xff7f
-8003f068: 3463ffff ori v1,v1,0xffff
-8003f06c: 00431024 and v0,v0,v1
-8003f070: 24110001 li s1,1
-8003f074: 1000fe21 b 8003e8fc <__subdf3+0x1a0>
-8003f078: 32430007 andi v1,s2,0x7
-8003f07c: 3c02003f lui v0,0x3f
-8003f080: 00008021 move s0,zero
-8003f084: 241107ff li s1,2047
-8003f088: 3442ffff ori v0,v0,0xffff
-8003f08c: 1000fe28 b 8003e930 <__subdf3+0x1d4>
-8003f090: 2412fff8 li s2,-8
-8003f094: 1545ff8b bne t2,a1,8003eec4 <__subdf3+0x768>
-8003f098: 28650039 slti a1,v1,57
-8003f09c: 01061825 or v1,t0,a2
-8003f0a0: 1460ffae bnez v1,8003ef5c <__subdf3+0x800>
-8003f0a4: 01001021 move v0,t0
-8003f0a8: 1000ff20 b 8003ed2c <__subdf3+0x5d0>
-8003f0ac: 00004021 move t0,zero
-8003f0b0: 1065000a beq v1,a1,8003f0dc <__subdf3+0x980>
-8003f0b4: 00629006 srlv s2,v0,v1
-8003f0b8: 00031823 negu v1,v1
-8003f0bc: 00621004 sllv v0,v0,v1
-8003f0c0: 00442025 or a0,v0,a0
-8003f0c4: 0004102b sltu v0,zero,a0
-8003f0c8: 02429025 or s2,s2,v0
-8003f0cc: 1000ff8a b 8003eef8 <__subdf3+0x79c>
-8003f0d0: 00001021 move v0,zero
-8003f0d4: 1000ffc4 b 8003efe8 <__subdf3+0x88c>
-8003f0d8: 00001021 move v0,zero
-8003f0dc: 1000fff8 b 8003f0c0 <__subdf3+0x964>
-8003f0e0: 00001021 move v0,zero
-
-8003f0e4 <__fixdfsi>:
-8003f0e4: 00053502 srl a2,a1,0x14
-8003f0e8: 30c607ff andi a2,a2,0x7ff
-8003f0ec: 3c03000f lui v1,0xf
-8003f0f0: 3463ffff ori v1,v1,0xffff
-8003f0f4: 28c703ff slti a3,a2,1023
-8003f0f8: 00651824 and v1,v1,a1
-8003f0fc: 14e00015 bnez a3,8003f154 <__fixdfsi+0x70>
-8003f100: 00052fc2 srl a1,a1,0x1f
-8003f104: 28c2041e slti v0,a2,1054
-8003f108: 1040000e beqz v0,8003f144 <__fixdfsi+0x60>
-8003f10c: 24070433 li a3,1075
-8003f110: 00e63823 subu a3,a3,a2
-8003f114: 3c020010 lui v0,0x10
-8003f118: 28e80020 slti t0,a3,32
-8003f11c: 11000010 beqz t0,8003f160 <__fixdfsi+0x7c>
-8003f120: 00621825 or v1,v1,v0
-8003f124: 24c6fbed addiu a2,a2,-1043
-8003f128: 00e41006 srlv v0,a0,a3
-8003f12c: 00c31804 sllv v1,v1,a2
-8003f130: 00621025 or v0,v1,v0
-8003f134: 10a00008 beqz a1,8003f158 <__fixdfsi+0x74>
-8003f138: 00000000 nop
-8003f13c: 03e00008 jr ra
-8003f140: 00021023 negu v0,v0
-8003f144: 3c027fff lui v0,0x7fff
-8003f148: 3442ffff ori v0,v0,0xffff
-8003f14c: 03e00008 jr ra
-8003f150: 00a21021 addu v0,a1,v0
-8003f154: 00001021 move v0,zero
-8003f158: 03e00008 jr ra
-8003f15c: 00000000 nop
-8003f160: 24020413 li v0,1043
-8003f164: 00461023 subu v0,v0,a2
-8003f168: 1000fff2 b 8003f134 <__fixdfsi+0x50>
-8003f16c: 00431006 srlv v0,v1,v0
-
-8003f170 <__floatsidf>:
-8003f170: 27bdffe0 addiu sp,sp,-32
-8003f174: afbf001c sw ra,28(sp)
-8003f178: afb10018 sw s1,24(sp)
-8003f17c: 1080002a beqz a0,8003f228 <__floatsidf+0xb8>
-8003f180: afb00014 sw s0,20(sp)
-8003f184: 00808021 move s0,a0
-8003f188: 0480002c bltz a0,8003f23c <__floatsidf+0xcc>
-8003f18c: 00048fc2 srl s1,a0,0x1f
-8003f190: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003f194: 02002021 move a0,s0
-8003f198: 2403041e li v1,1054
-8003f19c: 00621823 subu v1,v1,v0
-8003f1a0: 24050433 li a1,1075
-8003f1a4: 00a32823 subu a1,a1,v1
-8003f1a8: 28a40020 slti a0,a1,32
-8003f1ac: 14800016 bnez a0,8003f208 <__floatsidf+0x98>
-8003f1b0: 2404000b li a0,11
-8003f1b4: 24020413 li v0,1043
-8003f1b8: 00431023 subu v0,v0,v1
-8003f1bc: 3c04000f lui a0,0xf
-8003f1c0: 00501004 sllv v0,s0,v0
-8003f1c4: 3484ffff ori a0,a0,0xffff
-8003f1c8: 00441024 and v0,v0,a0
-8003f1cc: 00008021 move s0,zero
-8003f1d0: 306407ff andi a0,v1,0x7ff
-8003f1d4: 3c03000f lui v1,0xf
-8003f1d8: 3463ffff ori v1,v1,0xffff
-8003f1dc: 00431024 and v0,v0,v1
-8003f1e0: 8fbf001c lw ra,28(sp)
-8003f1e4: 00042500 sll a0,a0,0x14
-8003f1e8: 00111fc0 sll v1,s1,0x1f
-8003f1ec: 00441025 or v0,v0,a0
-8003f1f0: 00431825 or v1,v0,v1
-8003f1f4: 8fb10018 lw s1,24(sp)
-8003f1f8: 02001021 move v0,s0
-8003f1fc: 8fb00014 lw s0,20(sp)
-8003f200: 03e00008 jr ra
-8003f204: 27bd0020 addiu sp,sp,32
-8003f208: 00821023 subu v0,a0,v0
-8003f20c: 3c04000f lui a0,0xf
-8003f210: 00501006 srlv v0,s0,v0
-8003f214: 3484ffff ori a0,a0,0xffff
-8003f218: 00441024 and v0,v0,a0
-8003f21c: 00b08004 sllv s0,s0,a1
-8003f220: 1000ffec b 8003f1d4 <__floatsidf+0x64>
-8003f224: 306407ff andi a0,v1,0x7ff
-8003f228: 00008821 move s1,zero
-8003f22c: 00002021 move a0,zero
-8003f230: 00001021 move v0,zero
-8003f234: 1000ffe7 b 8003f1d4 <__floatsidf+0x64>
-8003f238: 00008021 move s0,zero
-8003f23c: 00048023 negu s0,a0
-8003f240: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003f244: 02002021 move a0,s0
-8003f248: 2403041e li v1,1054
-8003f24c: 00621823 subu v1,v1,v0
-8003f250: 24050433 li a1,1075
-8003f254: 00a32823 subu a1,a1,v1
-8003f258: 28a40020 slti a0,a1,32
-8003f25c: 1080ffd5 beqz a0,8003f1b4 <__floatsidf+0x44>
-8003f260: 2404000b li a0,11
-8003f264: 1000ffe9 b 8003f20c <__floatsidf+0x9c>
-8003f268: 00821023 subu v0,a0,v0
-
-8003f26c <__floatdidf>:
-8003f26c: 27bdffd8 addiu sp,sp,-40
-8003f270: 00851025 or v0,a0,a1
-8003f274: afbf0024 sw ra,36(sp)
-8003f278: afb30020 sw s3,32(sp)
-8003f27c: afb2001c sw s2,28(sp)
-8003f280: afb10018 sw s1,24(sp)
-8003f284: 10400051 beqz v0,8003f3cc <__floatdidf+0x160>
-8003f288: afb00014 sw s0,20(sp)
-8003f28c: 00808821 move s1,a0
-8003f290: 00a09021 move s2,a1
-8003f294: 04a10005 bgez a1,8003f2ac <__floatdidf+0x40>
-8003f298: 000587c2 srl s0,a1,0x1f
-8003f29c: 00048823 negu s1,a0
-8003f2a0: 0011302b sltu a2,zero,s1
-8003f2a4: 00052823 negu a1,a1
-8003f2a8: 00a69023 subu s2,a1,a2
-8003f2ac: 12400019 beqz s2,8003f314 <__floatdidf+0xa8>
-8003f2b0: 02409821 move s3,s2
-8003f2b4: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003f2b8: 02402021 move a0,s2
-8003f2bc: 2403043e li v1,1086
-8003f2c0: 00624023 subu t0,v1,v0
-8003f2c4: 29030434 slti v1,t0,1076
-8003f2c8: 1060001b beqz v1,8003f338 <__floatdidf+0xcc>
-8003f2cc: 29030437 slti v1,t0,1079
-8003f2d0: 24070433 li a3,1075
-8003f2d4: 00e83823 subu a3,a3,t0
-8003f2d8: 10e00078 beqz a3,8003f4bc <__floatdidf+0x250>
-8003f2dc: 00000000 nop
-8003f2e0: 28e30020 slti v1,a3,32
-8003f2e4: 10600060 beqz v1,8003f468 <__floatdidf+0x1fc>
-8003f2e8: 2406002b li a2,43
-8003f2ec: 00c21023 subu v0,a2,v0
-8003f2f0: 00511006 srlv v0,s1,v0
-8003f2f4: 00f22804 sllv a1,s2,a3
-8003f2f8: 00451025 or v0,v0,a1
-8003f2fc: 3c05000f lui a1,0xf
-8003f300: 34a5ffff ori a1,a1,0xffff
-8003f304: 00f18804 sllv s1,s1,a3
-8003f308: 00452824 and a1,v0,a1
-8003f30c: 10000033 b 8003f3dc <__floatdidf+0x170>
-8003f310: 310307ff andi v1,t0,0x7ff
-8003f314: 0c00a2d8 jal 80028b60 <__clzsi2>
-8003f318: 02202021 move a0,s1
-8003f31c: 24420020 addiu v0,v0,32
-8003f320: 2403043e li v1,1086
-8003f324: 00624023 subu t0,v1,v0
-8003f328: 29030434 slti v1,t0,1076
-8003f32c: 1460ffe9 bnez v1,8003f2d4 <__floatdidf+0x68>
-8003f330: 24070433 li a3,1075
-8003f334: 29030437 slti v1,t0,1079
-8003f338: 10600038 beqz v1,8003f41c <__floatdidf+0x1b0>
-8003f33c: 24060436 li a2,1078
-8003f340: 00c83023 subu a2,a2,t0
-8003f344: 10c00006 beqz a2,8003f360 <__floatdidf+0xf4>
-8003f348: 00d22804 sllv a1,s2,a2
-8003f34c: 24130028 li s3,40
-8003f350: 02629823 subu s3,s3,v0
-8003f354: 02713806 srlv a3,s1,s3
-8003f358: 00e59825 or s3,a3,a1
-8003f35c: 00d18804 sllv s1,s1,a2
-8003f360: 3c03ff7f lui v1,0xff7f
-8003f364: 3463ffff ori v1,v1,0xffff
-8003f368: 32240007 andi a0,s1,0x7
-8003f36c: 10800008 beqz a0,8003f390 <__floatdidf+0x124>
-8003f370: 02631824 and v1,s3,v1
-8003f374: 3224000f andi a0,s1,0xf
-8003f378: 24050004 li a1,4
-8003f37c: 10850004 beq a0,a1,8003f390 <__floatdidf+0x124>
-8003f380: 26240004 addiu a0,s1,4
-8003f384: 0091882b sltu s1,a0,s1
-8003f388: 00711821 addu v1,v1,s1
-8003f38c: 00808821 move s1,a0
-8003f390: 3c040080 lui a0,0x80
-8003f394: 00642024 and a0,v1,a0
-8003f398: 10800005 beqz a0,8003f3b0 <__floatdidf+0x144>
-8003f39c: 3c04ff7f lui a0,0xff7f
-8003f3a0: 3484ffff ori a0,a0,0xffff
-8003f3a4: 2408043f li t0,1087
-8003f3a8: 00641824 and v1,v1,a0
-8003f3ac: 01024023 subu t0,t0,v0
-8003f3b0: 00031740 sll v0,v1,0x1d
-8003f3b4: 00032a40 sll a1,v1,0x9
-8003f3b8: 001188c2 srl s1,s1,0x3
-8003f3bc: 00518825 or s1,v0,s1
-8003f3c0: 00052b02 srl a1,a1,0xc
-8003f3c4: 10000005 b 8003f3dc <__floatdidf+0x170>
-8003f3c8: 310307ff andi v1,t0,0x7ff
-8003f3cc: 00008021 move s0,zero
-8003f3d0: 00001821 move v1,zero
-8003f3d4: 00002821 move a1,zero
-8003f3d8: 00008821 move s1,zero
-8003f3dc: 3c02000f lui v0,0xf
-8003f3e0: 3442ffff ori v0,v0,0xffff
-8003f3e4: 00031d00 sll v1,v1,0x14
-8003f3e8: 00a21024 and v0,a1,v0
-8003f3ec: 00432825 or a1,v0,v1
-8003f3f0: 001087c0 sll s0,s0,0x1f
-8003f3f4: 8fbf0024 lw ra,36(sp)
-8003f3f8: 00b02825 or a1,a1,s0
-8003f3fc: 02201021 move v0,s1
-8003f400: 8fb30020 lw s3,32(sp)
-8003f404: 8fb2001c lw s2,28(sp)
-8003f408: 8fb10018 lw s1,24(sp)
-8003f40c: 8fb00014 lw s0,20(sp)
-8003f410: 00a01821 move v1,a1
-8003f414: 03e00008 jr ra
-8003f418: 27bd0028 addiu sp,sp,40
-8003f41c: 24130008 li s3,8
-8003f420: 02629823 subu s3,s3,v0
-8003f424: 32630020 andi v1,s3,0x20
-8003f428: 1060001e beqz v1,8003f4a4 <__floatdidf+0x238>
-8003f42c: 00121840 sll v1,s2,0x1
-8003f430: 02723006 srlv a2,s2,s3
-8003f434: 00001821 move v1,zero
-8003f438: 24040476 li a0,1142
-8003f43c: 00882023 subu a0,a0,t0
-8003f440: 30850020 andi a1,a0,0x20
-8003f444: 10a00011 beqz a1,8003f48c <__floatdidf+0x220>
-8003f448: 00112842 srl a1,s1,0x1
-8003f44c: 00912804 sllv a1,s1,a0
-8003f450: 00002021 move a0,zero
-8003f454: 00852025 or a0,a0,a1
-8003f458: 0004202b sltu a0,zero,a0
-8003f45c: 00c48825 or s1,a2,a0
-8003f460: 1000ffbf b 8003f360 <__floatdidf+0xf4>
-8003f464: 00609821 move s3,v1
-8003f468: 24050413 li a1,1043
-8003f46c: 00a82823 subu a1,a1,t0
-8003f470: 3c02000f lui v0,0xf
-8003f474: 00b12804 sllv a1,s1,a1
-8003f478: 3442ffff ori v0,v0,0xffff
-8003f47c: 00a22824 and a1,a1,v0
-8003f480: 310307ff andi v1,t0,0x7ff
-8003f484: 1000ffd5 b 8003f3dc <__floatdidf+0x170>
-8003f488: 00008821 move s1,zero
-8003f48c: 00043827 nor a3,zero,a0
-8003f490: 00e53806 srlv a3,a1,a3
-8003f494: 00922804 sllv a1,s2,a0
-8003f498: 00e52825 or a1,a3,a1
-8003f49c: 1000ffed b 8003f454 <__floatdidf+0x1e8>
-8003f4a0: 00912004 sllv a0,s1,a0
-8003f4a4: 00132027 nor a0,zero,s3
-8003f4a8: 00831804 sllv v1,v1,a0
-8003f4ac: 02713006 srlv a2,s1,s3
-8003f4b0: 00663025 or a2,v1,a2
-8003f4b4: 1000ffe0 b 8003f438 <__floatdidf+0x1cc>
-8003f4b8: 02721806 srlv v1,s2,s3
-8003f4bc: 3c02000f lui v0,0xf
-8003f4c0: 3442ffff ori v0,v0,0xffff
-8003f4c4: 02422824 and a1,s2,v0
-8003f4c8: 1000ffc4 b 8003f3dc <__floatdidf+0x170>
-8003f4cc: 310307ff andi v1,t0,0x7ff
-
-8003f4d0 <__truncdfsf2>:
-8003f4d0: 00053d02 srl a3,a1,0x14
-8003f4d4: 30e707ff andi a3,a3,0x7ff
-8003f4d8: 3c02000f lui v0,0xf
-8003f4dc: 24e60001 addiu a2,a3,1
-8003f4e0: 3442ffff ori v0,v0,0xffff
-8003f4e4: 00451024 and v0,v0,a1
-8003f4e8: 30c607ff andi a2,a2,0x7ff
-8003f4ec: 00052fc2 srl a1,a1,0x1f
-8003f4f0: 000210c0 sll v0,v0,0x3
-8003f4f4: 00041f42 srl v1,a0,0x1d
-8003f4f8: 28c60002 slti a2,a2,2
-8003f4fc: 00a04021 move t0,a1
-8003f500: 00621825 or v1,v1,v0
-8003f504: 14c0003d bnez a2,8003f5fc <__truncdfsf2+0x12c>
-8003f508: 000448c0 sll t1,a0,0x3
-8003f50c: 24e2fc80 addiu v0,a3,-896
-8003f510: 284600ff slti a2,v0,255
-8003f514: 10c00049 beqz a2,8003f63c <__truncdfsf2+0x16c>
-8003f518: 00000000 nop
-8003f51c: 1840001e blez v0,8003f598 <__truncdfsf2+0xc8>
-8003f520: 00043180 sll a2,a0,0x6
-8003f524: 0006302b sltu a2,zero,a2
-8003f528: 000318c0 sll v1,v1,0x3
-8003f52c: 00c31825 or v1,a2,v1
-8003f530: 00092742 srl a0,t1,0x1d
-8003f534: 00642025 or a0,v1,a0
-8003f538: 30830007 andi v1,a0,0x7
-8003f53c: 10600005 beqz v1,8003f554 <__truncdfsf2+0x84>
-8003f540: 3083000f andi v1,a0,0xf
-8003f544: 24060004 li a2,4
-8003f548: 10660003 beq v1,a2,8003f558 <__truncdfsf2+0x88>
-8003f54c: 3c030400 lui v1,0x400
-8003f550: 24840004 addiu a0,a0,4
-8003f554: 3c030400 lui v1,0x400
-8003f558: 00831824 and v1,a0,v1
-8003f55c: 10600013 beqz v1,8003f5ac <__truncdfsf2+0xdc>
-8003f560: 240300ff li v1,255
-8003f564: 24420001 addiu v0,v0,1
-8003f568: 10430034 beq v0,v1,8003f63c <__truncdfsf2+0x16c>
-8003f56c: 00042180 sll a0,a0,0x6
-8003f570: 00042242 srl a0,a0,0x9
-8003f574: 304200ff andi v0,v0,0xff
-8003f578: 00021dc0 sll v1,v0,0x17
-8003f57c: 3c02007f lui v0,0x7f
-8003f580: 3442ffff ori v0,v0,0xffff
-8003f584: 00822024 and a0,a0,v0
-8003f588: 00832025 or a0,a0,v1
-8003f58c: 000517c0 sll v0,a1,0x1f
-8003f590: 03e00008 jr ra
-8003f594: 00821025 or v0,a0,v0
-8003f598: 2844ffe9 slti a0,v0,-23
-8003f59c: 10800041 beqz a0,8003f6a4 <__truncdfsf2+0x1d4>
-8003f5a0: 240a001e li t2,30
-8003f5a4: 00001021 move v0,zero
-8003f5a8: 24040005 li a0,5
-8003f5ac: 240300ff li v1,255
-8003f5b0: 14430016 bne v0,v1,8003f60c <__truncdfsf2+0x13c>
-8003f5b4: 000420c2 srl a0,a0,0x3
-8003f5b8: 10800020 beqz a0,8003f63c <__truncdfsf2+0x16c>
-8003f5bc: 3c03003f lui v1,0x3f
-8003f5c0: 3463ffff ori v1,v1,0xffff
-8003f5c4: 00832024 and a0,a0,v1
-8003f5c8: 14800034 bnez a0,8003f69c <__truncdfsf2+0x1cc>
-8003f5cc: 01002821 move a1,t0
-8003f5d0: 240200ff li v0,255
-8003f5d4: 00602021 move a0,v1
-8003f5d8: 00021dc0 sll v1,v0,0x17
-8003f5dc: 3c02007f lui v0,0x7f
-8003f5e0: 3442ffff ori v0,v0,0xffff
-8003f5e4: 00002821 move a1,zero
-8003f5e8: 00822024 and a0,a0,v0
-8003f5ec: 00832025 or a0,a0,v1
-8003f5f0: 000517c0 sll v0,a1,0x1f
-8003f5f4: 03e00008 jr ra
-8003f5f8: 00821025 or v0,a0,v0
-8003f5fc: 14e00019 bnez a3,8003f664 <__truncdfsf2+0x194>
-8003f600: 00692025 or a0,v1,t1
-8003f604: 1480ffe8 bnez a0,8003f5a8 <__truncdfsf2+0xd8>
-8003f608: 00001021 move v0,zero
-8003f60c: 3c03007f lui v1,0x7f
-8003f610: 3463ffff ori v1,v1,0xffff
-8003f614: 304200ff andi v0,v0,0xff
-8003f618: 00832024 and a0,a0,v1
-8003f61c: 00021dc0 sll v1,v0,0x17
-8003f620: 3c02007f lui v0,0x7f
-8003f624: 3442ffff ori v0,v0,0xffff
-8003f628: 00822024 and a0,a0,v0
-8003f62c: 00832025 or a0,a0,v1
-8003f630: 000517c0 sll v0,a1,0x1f
-8003f634: 03e00008 jr ra
-8003f638: 00821025 or v0,a0,v0
-8003f63c: 240200ff li v0,255
-8003f640: 00021dc0 sll v1,v0,0x17
-8003f644: 3c02007f lui v0,0x7f
-8003f648: 3442ffff ori v0,v0,0xffff
-8003f64c: 00002021 move a0,zero
-8003f650: 00822024 and a0,a0,v0
-8003f654: 00832025 or a0,a0,v1
-8003f658: 000517c0 sll v0,a1,0x1f
-8003f65c: 03e00008 jr ra
-8003f660: 00821025 or v0,a0,v0
-8003f664: 00691025 or v0,v1,t1
-8003f668: 1040fff4 beqz v0,8003f63c <__truncdfsf2+0x16c>
-8003f66c: 000318c0 sll v1,v1,0x3
-8003f670: 00092742 srl a0,t1,0x1d
-8003f674: 00832025 or a0,a0,v1
-8003f678: 3c0301ff lui v1,0x1ff
-8003f67c: 3463fff8 ori v1,v1,0xfff8
-8003f680: 00832024 and a0,a0,v1
-8003f684: 14800015 bnez a0,8003f6dc <__truncdfsf2+0x20c>
-8003f688: 00000000 nop
-8003f68c: 3c04003f lui a0,0x3f
-8003f690: 00004021 move t0,zero
-8003f694: 3484ffff ori a0,a0,0xffff
-8003f698: 01002821 move a1,t0
-8003f69c: 1000ffb6 b 8003f578 <__truncdfsf2+0xa8>
-8003f6a0: 240200ff li v0,255
-8003f6a4: 01425023 subu t2,t2,v0
-8003f6a8: 3c040080 lui a0,0x80
-8003f6ac: 294b0020 slti t3,t2,32
-8003f6b0: 1160000c beqz t3,8003f6e4 <__truncdfsf2+0x214>
-8003f6b4: 00641825 or v1,v1,a0
-8003f6b8: 24e6fc82 addiu a2,a3,-894
-8003f6bc: 00c93804 sllv a3,t1,a2
-8003f6c0: 0007382b sltu a3,zero,a3
-8003f6c4: 00c31804 sllv v1,v1,a2
-8003f6c8: 00e33025 or a2,a3,v1
-8003f6cc: 01492006 srlv a0,t1,t2
-8003f6d0: 00c42025 or a0,a2,a0
-8003f6d4: 1000ff98 b 8003f538 <__truncdfsf2+0x68>
-8003f6d8: 00001021 move v0,zero
-8003f6dc: 1000ff96 b 8003f538 <__truncdfsf2+0x68>
-8003f6e0: 240200ff li v0,255
-8003f6e4: 2404fffe li a0,-2
-8003f6e8: 00822023 subu a0,a0,v0
-8003f6ec: 24020020 li v0,32
-8003f6f0: 11420008 beq t2,v0,8003f714 <__truncdfsf2+0x244>
-8003f6f4: 00832006 srlv a0,v1,a0
-8003f6f8: 24e7fca2 addiu a3,a3,-862
-8003f6fc: 00e31804 sllv v1,v1,a3
-8003f700: 00691825 or v1,v1,t1
-8003f704: 0003182b sltu v1,zero,v1
-8003f708: 00642025 or a0,v1,a0
-8003f70c: 1000ff8a b 8003f538 <__truncdfsf2+0x68>
-8003f710: 00001021 move v0,zero
-8003f714: 1000fffa b 8003f700 <__truncdfsf2+0x230>
-8003f718: 00001821 move v1,zero
-
-Disassembly of section .init:
-
-8003f71c <_init>:
-8003f71c: 27bdffe0 addiu sp,sp,-32
-8003f720: afbf0014 sw ra,20(sp)
-8003f724: 04110001 bal 8003f72c <_init+0x10>
-8003f728: 00000000 nop
-8003f72c: 0c008055 jal 80020154 <frame_dummy>
-8003f730: 00000000 nop
-8003f734: 04110001 bal 8003f73c <_init+0x20>
-8003f738: 00000000 nop
-8003f73c: 0c00a302 jal 80028c08 <__do_global_ctors_aux>
-8003f740: 00000000 nop
-
-8003f744 <init>:
-8003f744: 8fbf0014 lw ra,20(sp)
-8003f748: 27bd0020 addiu sp,sp,32
-8003f74c: 03e00008 jr ra
-8003f750: 00000000 nop
-
-Disassembly of section .fini:
-
-8003f754 <_fini>:
-8003f754: 27bdffe0 addiu sp,sp,-32
-8003f758: afbf0014 sw ra,20(sp)
-8003f75c: 04110001 bal 8003f764 <_fini+0x10>
-8003f760: 00000000 nop
-8003f764: 0c008021 jal 80020084 <__do_global_dtors_aux>
-8003f768: 00000000 nop
-
-8003f76c <fini>:
-8003f76c: 8fbf0014 lw ra,20(sp)
-8003f770: 27bd0020 addiu sp,sp,32
-8003f774: 03e00008 jr ra
-8003f778: 00000000 nop