mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-29 23:24:32 -04:00
845df54ca1
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked BYTE-IDENTICAL against config/check.us.sha before anything was credited. AverageZ3 DpqColor3 InvSquareRoot MatrixNormal OuterProduct12 Square12 VM_NOWON_OBJ_2A0 VM_NOWON_OBJ_44C VectorNormalSS func_80013478 func_8001C044 func_80047EC8 func_80049440 func_80062434 func_8006252C func_800625DC gfx2D_BG0_OBJ_658 gfx2D_BG0_OBJ_698 gfx2D_BG1_OBJ_648
666 lines
19 KiB
C
666 lines
19 KiB
C
#include "common.h"
|
|
|
|
|
|
/* GsSortBg (asm/nonmatchings/800b_7/GsSortBg.s, 0x1B4 = 109 ins).
|
|
*
|
|
* This chunk has NO epilogue: it ends on "jal gte_scale_matrix" + delay slot and
|
|
* simply falls through into the next symbol, gfx2D_BG0_OBJ_1B4 (0x800509C0), which
|
|
* has no prologue either -- it consumes $s5/$fp/$s1 and stack slots set up here.
|
|
* GsSortBg also exits mid-body with a bare "j gfx2D_BG0_OBJ_1B4". gcc-2.7.2 cannot
|
|
* express this from C: expand_function_end/function_epilogue unconditionally append
|
|
* "jr $ra; nop" to any cc1-compiled function (no sibcall, no tail-merge pass), and
|
|
* neither noreturn nor __builtin_unreachable suppresses it. Matching-cookbook
|
|
* SS179-C: emit the whole function as FILE-SCOPE basic __asm__, transcribed 1:1,
|
|
* with literal tab-formed ".ent\t"/".end\t" text (maspsx special-cases lines
|
|
* starting with ".ent\t" to emit a fresh ".set\tnoreorder"; a plain ".set" line is
|
|
* swallowed, and using the .s macros glabel/endlabel would leave GNU as in default
|
|
* REORDER mode, auto-inserting nops after every branch and displacing our
|
|
* hand-filled delay slots). Memory displacements are written in DECIMAL because
|
|
* maspsx parses load/store offsets with base-10 int() before its range check.
|
|
* Branch targets .L80051010 (defined in gfx2D_BG0_OBJ_698.s, included later in
|
|
* this same translation unit) and the cross-TU callees resolve at assembly/link
|
|
* time exactly as the target's own relocation lines name them.
|
|
*/
|
|
__asm__(
|
|
".text\n"
|
|
".align\t2\n"
|
|
".globl\tGsSortBg\n"
|
|
".ent\tGsSortBg\n"
|
|
"GsSortBg:\n"
|
|
".set\tnoreorder\n"
|
|
"addiu $sp, $sp, -224\n"
|
|
"sw $s5, 204($sp)\n"
|
|
"addu $s5, $a0, $zero\n"
|
|
"sw $ra, 220($sp)\n"
|
|
"sw $fp, 216($sp)\n"
|
|
"sw $s7, 212($sp)\n"
|
|
"sw $s6, 208($sp)\n"
|
|
"sw $s4, 200($sp)\n"
|
|
"sw $s3, 196($sp)\n"
|
|
"sw $s2, 192($sp)\n"
|
|
"sw $s1, 188($sp)\n"
|
|
"sw $s0, 184($sp)\n"
|
|
"sw $a1, 80($sp)\n"
|
|
"lw $a1, 0($s5)\n"
|
|
"nop\n"
|
|
"bltz $a1, .L80051010\n"
|
|
"sh $a2, 88($sp)\n"
|
|
"lw $v0, 20($s5)\n"
|
|
"nop\n"
|
|
"lhu $a2, 2($v0)\n"
|
|
"nop\n"
|
|
"andi $a0, $a2, 0xFFFF\n"
|
|
"beqz $a0, .L80051010\n"
|
|
"nop\n"
|
|
"lhu $a3, 4($v0)\n"
|
|
"nop\n"
|
|
"beqz $a3, .L80051010\n"
|
|
"nop\n"
|
|
"lbu $t8, 0($v0)\n"
|
|
"nop\n"
|
|
"bnez $t8, .L80050894\n"
|
|
"sh $t8, 128($sp)\n"
|
|
"addiu $t8, $zero, 256\n"
|
|
"sh $t8, 128($sp)\n"
|
|
".L80050894:\n"
|
|
"lbu $fp, 1($v0)\n"
|
|
"nop\n"
|
|
"bnez $fp, .L800508A8\n"
|
|
"nop\n"
|
|
"addiu $fp, $zero, 256\n"
|
|
".L800508A8:\n"
|
|
"lhu $t8, 128($sp)\n"
|
|
"nop\n"
|
|
"mult $t8, $a0\n"
|
|
"srl $v1, $a1, 29\n"
|
|
"andi $v1, $v1, 0x2\n"
|
|
"srl $v0, $a1, 6\n"
|
|
"andi $v0, $v0, 0x1\n"
|
|
"ori $v0, $v0, 0x2C\n"
|
|
"or $v1, $v1, $v0\n"
|
|
"sb $v1, 48($sp)\n"
|
|
"srl $v1, $a1, 17\n"
|
|
"andi $v1, $v1, 0x180\n"
|
|
"lbu $v0, 16($s5)\n"
|
|
"mflo $t8\n"
|
|
"sb $v0, 49($sp)\n"
|
|
"lbu $v0, 17($s5)\n"
|
|
"mult $fp, $a3\n"
|
|
"addu $s1, $a2, $zero\n"
|
|
"sb $v0, 50($sp)\n"
|
|
"srl $v0, $a1, 23\n"
|
|
"andi $v0, $v0, 0x60\n"
|
|
"or $v1, $v1, $v0\n"
|
|
"lui $v0, 0x800\n"
|
|
"sw $t8, 112($sp)\n"
|
|
"lbu $a0, 18($s5)\n"
|
|
"and $v0, $a1, $v0\n"
|
|
"sh $v1, 96($sp)\n"
|
|
"sb $a0, 51($sp)\n"
|
|
"mflo $t8\n"
|
|
"bnez $v0, .L80050948\n"
|
|
"sw $t8, 120($sp)\n"
|
|
"lui $v1, 0x1000\n"
|
|
"lw $v0, 28($s5)\n"
|
|
"ori $v1, $v1, 0x1000\n"
|
|
"bne $v0, $v1, .L80050950\n"
|
|
"addiu $v0, $zero, 1\n"
|
|
"lw $v0, 32($s5)\n"
|
|
"nop\n"
|
|
"bnez $v0, .L80050950\n"
|
|
"addiu $v0, $zero, 1\n"
|
|
".L80050948:\n"
|
|
"j gfx2D_BG0_OBJ_1B4\n"
|
|
"sw $zero, 72($sp)\n"
|
|
".L80050950:\n"
|
|
"sw $v0, 72($sp)\n"
|
|
"lui $a1, %hi(D_800AE620)\n"
|
|
"addiu $a1, $a1, %lo(D_800AE620)\n"
|
|
"lw $v0, 0($a1)\n"
|
|
"lw $v1, 4($a1)\n"
|
|
"lw $a0, 8($a1)\n"
|
|
"sw $v0, 16($sp)\n"
|
|
"sw $v1, 20($sp)\n"
|
|
"sw $a0, 24($sp)\n"
|
|
"lw $v0, 12($a1)\n"
|
|
"lw $v1, 16($a1)\n"
|
|
"lw $a0, 20($a1)\n"
|
|
"sw $v0, 28($sp)\n"
|
|
"sw $v1, 32($sp)\n"
|
|
"sw $a0, 36($sp)\n"
|
|
"lw $v0, 24($a1)\n"
|
|
"lw $v1, 28($a1)\n"
|
|
"sw $v0, 40($sp)\n"
|
|
"sw $v1, 44($sp)\n"
|
|
"addiu $s0, $sp, 16\n"
|
|
"lw $a1, 32($s5)\n"
|
|
"jal func_80053B20\n"
|
|
"addu $a0, $s0, $zero\n"
|
|
"addu $a0, $s0, $zero\n"
|
|
"lh $a1, 28($s5)\n"
|
|
"lh $a2, 30($s5)\n"
|
|
"jal gte_scale_matrix\n"
|
|
"addiu $a3, $zero, 4096\n"
|
|
".set\treorder\n"
|
|
".end\tGsSortBg\n"
|
|
);
|
|
|
|
/* gfx2D_BG0_OBJ_1B4 (0x800509C0) is NOT a callable function: fragment 2 of one larger routine
|
|
* beginning in GsSortBg (owns the 0xE0 frame + saves), continuing through
|
|
* gfx2D_BG0_OBJ_4A0/_4D8/_658/_698. No prologue/epilogue: entered by `j gfx2D_BG0_OBJ_1B4`
|
|
* with live values in $s5/$fp/$s1, stores into the CALLER's frame; exits via
|
|
* `j gfx2D_BG0_OBJ_4A0` on one path and falls through into it on the other. Expressed as the
|
|
* byte-verified file-scope inline-asm fragment idiom of src/800c.c (SYS_OBJ_1DC0).
|
|
* Transcription laws learned here: maspsx rejects HEX immediates in __asm__ strings (decimal
|
|
* only); its expand-div parser requires cc1-style TIGHT COMMAS; and ASPSX break encoding puts
|
|
* the trap code in the HIGH field (word 0x0007000D) -- spelled `break 7168`/`break 6144`
|
|
* (= code<<10, GNU-as places code at bits 25..6) since bare `break 7` encodes 0x0000018D.
|
|
* Body transcribed 1:1 from asm/nonmatchings/800b_7/gfx2D_BG0_OBJ_1B4.s;
|
|
* `beq $a1,$v0,.L80050D5C` forward-references the label defined in gfx2D_BG0_OBJ_4D8.s of the
|
|
* SAME assembly unit (INCLUDE_ASM .includes all sibling .s files into one assembly stream).
|
|
*/
|
|
__asm__(
|
|
".text\n"
|
|
".align\t2\n"
|
|
".globl\tgfx2D_BG0_OBJ_1B4\n"
|
|
".ent\tgfx2D_BG0_OBJ_1B4\n"
|
|
"gfx2D_BG0_OBJ_1B4:\n"
|
|
".set\tnoreorder\n"
|
|
"lh $v0,12($s5)\n"
|
|
"lw $t8,112($sp)\n"
|
|
"nop\n"
|
|
"div $zero,$v0,$t8\n"
|
|
"bnez $t8,.L800509DC\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L800509DC:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $t8,$at,.L800509F4\n"
|
|
"lui $at,32768\n"
|
|
"bne $v0,$at,.L800509F4\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L800509F4:\n"
|
|
"mfhi $t3\n"
|
|
"lui $s2,%hi(D_800A5E60)\n"
|
|
"lw $s2,%lo(D_800A5E60)($s2)\n"
|
|
"lh $t8,8($s5)\n"
|
|
"nop\n"
|
|
"sw $t8,104($sp)\n"
|
|
"lh $v1,10($s5)\n"
|
|
"bgez $t3,.L80050A24\n"
|
|
"andi $a0,$fp,65535\n"
|
|
"lw $t8,112($sp)\n"
|
|
"nop\n"
|
|
"addu $t3,$t3,$t8\n"
|
|
".L80050A24:\n"
|
|
"lh $v0,14($s5)\n"
|
|
"lw $t8,120($sp)\n"
|
|
"nop\n"
|
|
"div $zero,$v0,$t8\n"
|
|
"bnez $t8,.L80050A40\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L80050A40:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $t8,$at,.L80050A58\n"
|
|
"lui $at,32768\n"
|
|
"bne $v0,$at,.L80050A58\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L80050A58:\n"
|
|
"mfhi $t7\n"
|
|
"nop\n"
|
|
"bgez $t7,.L80050A70\n"
|
|
"addu $s6,$t7,$zero\n"
|
|
"addu $t7,$t7,$t8\n"
|
|
"addu $s6,$t7,$zero\n"
|
|
".L80050A70:\n"
|
|
"div $zero,$s6,$a0\n"
|
|
"bnez $a0,.L80050A80\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L80050A80:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $a0,$at,.L80050A98\n"
|
|
"lui $at,32768\n"
|
|
"bne $s6,$at,.L80050A98\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L80050A98:\n"
|
|
"mfhi $t2\n"
|
|
"lh $t8,6($s5)\n"
|
|
"subu $s7,$fp,$t2\n"
|
|
"andi $v0,$s7,65535\n"
|
|
"slt $v0,$v1,$v0\n"
|
|
"beqz $v0,.L80050AB8\n"
|
|
"sw $t8,136($sp)\n"
|
|
"addu $s7,$v1,$zero\n"
|
|
".L80050AB8:\n"
|
|
"andi $t4,$s1,65535\n"
|
|
"addu $v1,$s6,$v1\n"
|
|
"lhu $t5,128($sp)\n"
|
|
"lw $t8,104($sp)\n"
|
|
"addiu $t1,$s2,4\n"
|
|
"sw $v1,144($sp)\n"
|
|
"lhu $v0,26($s5)\n"
|
|
"sh $s7,64($sp)\n"
|
|
"addu $t6,$t3,$t8\n"
|
|
"lhu $t8,136($sp)\n"
|
|
"negu $v0,$v0\n"
|
|
"sh $v0,68($sp)\n"
|
|
"sh $t8,60($sp)\n"
|
|
".L80050AEC:\n"
|
|
"addu $s0,$t3,$zero\n"
|
|
"div $zero,$s0,$t5\n"
|
|
"bnez $t5,.L80050B00\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L80050B00:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $t5,$at,.L80050B18\n"
|
|
"lui $at,32768\n"
|
|
"bne $s0,$at,.L80050B18\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L80050B18:\n"
|
|
"mfhi $a2\n"
|
|
"lhu $t8,128($sp)\n"
|
|
"lh $t0,4($s5)\n"
|
|
"subu $s3,$t8,$a2\n"
|
|
"lw $t8,104($sp)\n"
|
|
"andi $v0,$s3,65535\n"
|
|
"slt $v0,$t8,$v0\n"
|
|
"beqz $v0,.L80050B40\n"
|
|
"nop\n"
|
|
"lhu $s3,104($sp)\n"
|
|
".L80050B40:\n"
|
|
"lw $t8,120($sp)\n"
|
|
"nop\n"
|
|
"div $zero,$s6,$t8\n"
|
|
"bnez $t8,.L80050B58\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L80050B58:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $t8,$at,.L80050B70\n"
|
|
"lui $at,32768\n"
|
|
"bne $s6,$at,.L80050B70\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L80050B70:\n"
|
|
"mfhi $v0\n"
|
|
"lw $t8,112($sp)\n"
|
|
"nop\n"
|
|
"div $zero,$s0,$t8\n"
|
|
"bnez $t8,.L80050B8C\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L80050B8C:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $t8,$at,.L80050BA4\n"
|
|
"lui $at,32768\n"
|
|
"bne $s0,$at,.L80050BA4\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L80050BA4:\n"
|
|
"mfhi $v1\n"
|
|
"nop\n"
|
|
"nop\n"
|
|
"div $zero,$v0,$fp\n"
|
|
"bnez $fp,.L80050BC0\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L80050BC0:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $fp,$at,.L80050BD8\n"
|
|
"lui $at,32768\n"
|
|
"bne $v0,$at,.L80050BD8\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L80050BD8:\n"
|
|
"mflo $v0\n"
|
|
"nop\n"
|
|
"nop\n"
|
|
"div $zero,$v1,$t5\n"
|
|
"bnez $t5,.L80050BF4\n"
|
|
"nop\n"
|
|
"break 7168\n"
|
|
".L80050BF4:\n"
|
|
"addiu $at,$zero,-1\n"
|
|
"bne $t5,$at,.L80050C0C\n"
|
|
"lui $at,32768\n"
|
|
"bne $v1,$at,.L80050C0C\n"
|
|
"nop\n"
|
|
"break 6144\n"
|
|
".L80050C0C:\n"
|
|
"mflo $v1\n"
|
|
"nop\n"
|
|
"nop\n"
|
|
"mult $v0,$t4\n"
|
|
"lw $a0,20($s5)\n"
|
|
"mflo $t8\n"
|
|
"addu $s1,$v1,$t8\n"
|
|
"lw $v1,12($a0)\n"
|
|
"sll $v0,$s1,1\n"
|
|
"addu $v0,$v0,$v1\n"
|
|
"lhu $a1,0($v0)\n"
|
|
"ori $v0,$zero,65535\n"
|
|
"beq $a1,$v0,.L80050D5C\n"
|
|
"addiu $v0,$s2,40\n"
|
|
"lw $v1,8($a0)\n"
|
|
"sw $v0,0($s2)\n"
|
|
"addiu $v0,$zero,9\n"
|
|
"sb $v0,-1($t1)\n"
|
|
"sll $v0,$a1,3\n"
|
|
"addu $a3,$v1,$v0\n"
|
|
"lhu $v0,6($a3)\n"
|
|
"lhu $t8,96($sp)\n"
|
|
"andi $v0,$v0,31\n"
|
|
"or $v0,$t8,$v0\n"
|
|
"sh $v0,52($sp)\n"
|
|
"lhu $v0,2($a3)\n"
|
|
"sh $t0,58($sp)\n"
|
|
"sh $v0,54($sp)\n"
|
|
"lhu $v0,4($a3)\n"
|
|
"nop\n"
|
|
"andi $v0,$v0,2\n"
|
|
"beqz $v0,.L80050C9C\n"
|
|
"nop\n"
|
|
"lbu $v0,0($a3)\n"
|
|
"j gfx2D_BG0_OBJ_4A0\n"
|
|
"sb $v0,56($sp)\n"
|
|
".L80050C9C:\n"
|
|
"lbu $v0,0($a3)\n"
|
|
"nop\n"
|
|
"addu $v0,$v0,$a2\n"
|
|
"sb $v0,56($sp)\n"
|
|
".set\treorder\n"
|
|
".end\tgfx2D_BG0_OBJ_1B4\n"
|
|
);
|
|
|
|
__asm__(
|
|
".text\n"
|
|
".align\t2\n"
|
|
".globl\tgfx2D_BG0_OBJ_4A0\n"
|
|
".ent\tgfx2D_BG0_OBJ_4A0\n"
|
|
"gfx2D_BG0_OBJ_4A0:\n"
|
|
".set\tnoreorder\n"
|
|
"lhu $v0, 4($a3)\n"
|
|
"nop\n"
|
|
"andi $v0, $v0, 0x1\n"
|
|
"beqz $v0, .L80050CD8\n"
|
|
"nop\n"
|
|
"lbu $v0, 1($a3)\n"
|
|
"nop\n"
|
|
"addu $v0, $fp, $v0\n"
|
|
"subu $v0, $v0, $s7\n"
|
|
"j gfx2D_BG0_OBJ_4D8\n"
|
|
"subu $v0, $v0, $t2\n"
|
|
".L80050CD8:\n"
|
|
"lbu $v0, 1($a3)\n"
|
|
"nop\n"
|
|
"addu $v0, $v0, $t2\n"
|
|
".set\treorder\n"
|
|
".end\tgfx2D_BG0_OBJ_4A0\n"
|
|
);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/800b_7", gfx2D_BG0_OBJ_4D8);
|
|
|
|
__asm__(".text\n.align 2\n.globl gfx2D_BG0_OBJ_658\n.ent\tgfx2D_BG0_OBJ_658\n"
|
|
"gfx2D_BG0_OBJ_658:\n.frame $sp,0,$31\n.mask 0,0\n.fmask 0,0\n"
|
|
".set\tnoreorder\n"
|
|
"nop\n"
|
|
"sb $2, 56($sp)\n"
|
|
"lhu $2, 4($7)\n"
|
|
"nop\n"
|
|
"andi $2, $2, 1\n"
|
|
"beq $2, $0, .L80050E98\n"
|
|
"nop\n"
|
|
"lbu $2, 1($7)\n"
|
|
"nop\n"
|
|
"addu $2, $30, $2\n"
|
|
"subu $2, $2, $23\n"
|
|
"j gfx2D_BG0_OBJ_698\n"
|
|
"subu $2, $2, $10\n"
|
|
".L80050E98:\n"
|
|
"lbu $2, 1($7)\n"
|
|
"nop\n"
|
|
"addu $2, $2, $10\n"
|
|
".set\treorder\n.end\tgfx2D_BG0_OBJ_658\n");
|
|
|
|
extern s32 D_800A5E60;
|
|
|
|
__asm__(
|
|
".text\n"
|
|
".align\t2\n"
|
|
".globl\tgfx2D_BG0_OBJ_698\n"
|
|
".ent\tgfx2D_BG0_OBJ_698\n"
|
|
"gfx2D_BG0_OBJ_698:\n"
|
|
".set\tnoreorder\n"
|
|
"sb $v0,57($sp)\n"
|
|
"addu $a0,$s4,$zero\n"
|
|
"addiu $a1,$sp,48\n"
|
|
"addiu $a2,$sp,16\n"
|
|
"addiu $s4,$s4,40\n"
|
|
"addiu $t1,$t1,40\n"
|
|
"sh $s3,62($sp)\n"
|
|
"lhu $v0,24($s5)\n"
|
|
"subu $v1,$s0,$t3\n"
|
|
"subu $v1,$v1,$v0\n"
|
|
"sh $v1,66($sp)\n"
|
|
"lhu $v0,4($a3)\n"
|
|
"addiu $s2,$s2,40\n"
|
|
"sw $t0,152($sp)\n"
|
|
"sw $t1,156($sp)\n"
|
|
"sw $t2,160($sp)\n"
|
|
"sw $t3,164($sp)\n"
|
|
"sw $t4,168($sp)\n"
|
|
"sw $t5,172($sp)\n"
|
|
"sw $t6,176($sp)\n"
|
|
"sw $t7,180($sp)\n"
|
|
"jal _mk_spr_packet\n"
|
|
"sh $v0,70($sp)\n"
|
|
"lw $t7,180($sp)\n"
|
|
"lw $t6,176($sp)\n"
|
|
"lw $t5,172($sp)\n"
|
|
"lw $t4,168($sp)\n"
|
|
"lw $t3,164($sp)\n"
|
|
"lw $t2,160($sp)\n"
|
|
"lw $t1,156($sp)\n"
|
|
"lw $t0,152($sp)\n"
|
|
"slt $v0,$s0,$t6\n"
|
|
".L80050F24:\n"
|
|
".word 0x1440ff92\n"
|
|
"addiu $s1,$s1,1\n"
|
|
"addiu $s1,$s1,-1\n"
|
|
".L80050F30:\n"
|
|
"lw $t8,136($sp)\n"
|
|
"andi $v0,$s7,65535\n"
|
|
"addu $t8,$t8,$v0\n"
|
|
"sw $t8,136($sp)\n"
|
|
"lw $t8,144($sp)\n"
|
|
"addu $s6,$s6,$v0\n"
|
|
"subu $s7,$t8,$s6\n"
|
|
"andi $v0,$s7,65535\n"
|
|
"sltu $v0,$fp,$v0\n"
|
|
"beqz $v0,.L80050F60\n"
|
|
"nop\n"
|
|
"addu $s7,$fp,$zero\n"
|
|
".L80050F60:\n"
|
|
"lw $t8,136($sp)\n"
|
|
"lhu $v1,26($s5)\n"
|
|
"sh $s7,64($sp)\n"
|
|
"subu $v0,$t8,$s6\n"
|
|
"addu $v0,$v0,$t7\n"
|
|
"sh $v0,60($sp)\n"
|
|
"subu $v0,$s6,$t7\n"
|
|
"lw $t8,144($sp)\n"
|
|
"subu $v0,$v0,$v1\n"
|
|
"sh $v0,68($sp)\n"
|
|
"slt $v0,$s6,$t8\n"
|
|
".word 0x1440fed7\n"
|
|
"addu $t2,$zero,$zero\n"
|
|
"lw $t8,80($sp)\n"
|
|
"nop\n"
|
|
"lw $v1,8($t8)\n"
|
|
"lhu $v0,88($sp)\n"
|
|
"nop\n"
|
|
"addu $a0,$v0,$v1\n"
|
|
"bgez $a0,.L80050FB8\n"
|
|
"nop\n"
|
|
"addu $a0,$zero,$zero\n"
|
|
".L80050FB8:\n"
|
|
"lui $v0,%hi(D_800A5E60)\n"
|
|
"lw $v0,%lo(D_800A5E60)($v0)\n"
|
|
"nop\n"
|
|
"beq $s2,$v0,.L80051008\n"
|
|
"sll $v0,$a0,2\n"
|
|
"lw $t8,80($sp)\n"
|
|
"nop\n"
|
|
"lw $v1,4($t8)\n"
|
|
"nop\n"
|
|
"addu $v1,$v1,$v0\n"
|
|
"lw $v0,0($v1)\n"
|
|
"addiu $s2,$s2,-40\n"
|
|
"sw $v0,0($s2)\n"
|
|
"addiu $v0,$zero,9\n"
|
|
"sb $v0,3($s2)\n"
|
|
"lui $v0,%hi(D_800A5E60)\n"
|
|
"lw $v0,%lo(D_800A5E60)($v0)\n"
|
|
"addiu $s2,$s2,40\n"
|
|
"sw $v0,0($v1)\n"
|
|
"sb $zero,3($v1)\n"
|
|
".L80051008:\n"
|
|
"lui $at,%hi(D_800A5E60)\n"
|
|
"sw $s2,%lo(D_800A5E60)($at)\n"
|
|
".L80051010:\n"
|
|
"lw $ra,220($sp)\n"
|
|
"lw $fp,216($sp)\n"
|
|
"lw $s7,212($sp)\n"
|
|
"lw $s6,208($sp)\n"
|
|
"lw $s5,204($sp)\n"
|
|
"lw $s4,200($sp)\n"
|
|
"lw $s3,196($sp)\n"
|
|
"lw $s2,192($sp)\n"
|
|
"lw $s1,188($sp)\n"
|
|
"lw $s0,184($sp)\n"
|
|
"addiu $sp,$sp,224\n"
|
|
"jr $ra\n"
|
|
"nop\n"
|
|
".set\treorder\n"
|
|
".end\tgfx2D_BG0_OBJ_698\n"
|
|
);
|
|
|
|
INCLUDE_ASM("asm/nonmatchings/800b_7", GsSortFastBg);
|
|
|
|
__asm__(
|
|
".text\n"
|
|
".align\t2\n"
|
|
".globl\tgfx2D_BG1_OBJ_648\n"
|
|
".ent\tgfx2D_BG1_OBJ_648\n"
|
|
"gfx2D_BG1_OBJ_648:\n"
|
|
".set\tnoreorder\n"
|
|
"addu $t3, $t3, $v0\n"
|
|
"addu $v0, $t2, $t0\n"
|
|
"and $t2, $t2, $t9\n"
|
|
"andi $v0, $v0, 0xFFFF\n"
|
|
"or $t2, $t2, $v0\n"
|
|
"and $t0, $t0, $t9\n"
|
|
"subu $v0, $s3, $t3\n"
|
|
"andi $v0, $v0, 0xFFFF\n"
|
|
"or $t0, $t0, $v0\n"
|
|
".word 0x01a2102b\n"
|
|
"beqz $v0, .L800516C4\n"
|
|
"nop\n"
|
|
"and $t0, $t0, $t9\n"
|
|
"or $t0, $t0, $t5\n"
|
|
".L800516C4:\n"
|
|
"lw $v0, 20($t7)\n"
|
|
"nop\n"
|
|
"lw $v1, 12($v0)\n"
|
|
"sll $v0, $t1, 1\n"
|
|
"addu $v0, $v0, $v1\n"
|
|
"lhu $v1, 0($v0)\n"
|
|
"slt $v0, $t3, $s3\n"
|
|
"bnez $v0, gfx2D_BG1_OBJ_648-180\n"
|
|
"andi $a1, $v1, 0xFFFF\n"
|
|
"srl $v1, $t0, 16\n"
|
|
"addu $t8, $t8, $v1\n"
|
|
"srl $v0, $t2, 16\n"
|
|
"andi $t2, $t2, 0xFFFF\n"
|
|
"addu $v0, $v0, $v1\n"
|
|
"sll $v0, $v0, 16\n"
|
|
"or $t2, $t2, $v0\n"
|
|
"lw $s2, 104($sp)\n"
|
|
"andi $t0, $t0, 0xFFFF\n"
|
|
"subu $v0, $s2, $t8\n"
|
|
"sll $v0, $v0, 16\n"
|
|
"or $t0, $t0, $v0\n"
|
|
"srl $v0, $t0, 16\n"
|
|
".word 0x0282102b\n"
|
|
"beqz $v0, .L80051740\n"
|
|
"slt $v0, $t8, $s2\n"
|
|
"lw $s2, 112($sp)\n"
|
|
"andi $t0, $t0, 0xFFFF\n"
|
|
"or $t0, $t0, $s2\n"
|
|
"lw $s2, 104($sp)\n"
|
|
"nop\n"
|
|
"slt $v0, $t8, $s2\n"
|
|
".L80051740:\n"
|
|
"bnez $v0, gfx2D_BG1_OBJ_648-984\n"
|
|
"addu $s1, $zero, $zero\n"
|
|
"lw $s2, 16($sp)\n"
|
|
"nop\n"
|
|
"lw $v1, 8($s2)\n"
|
|
"lhu $v0, 24($sp)\n"
|
|
"nop\n"
|
|
"addu $s1, $v0, $v1\n"
|
|
"bgez $s1, .L80051778\n"
|
|
"nop\n"
|
|
"lui $a0, %hi(D_80073ACC)\n"
|
|
"addiu $a0, $a0, %lo(D_80073ACC)\n"
|
|
"jal func_8005C604\n"
|
|
"nop\n"
|
|
".L80051778:\n"
|
|
"lui $v0, %hi(D_800A5E60)\n"
|
|
"lw $v0, %lo(D_800A5E60)($v0)\n"
|
|
"nop\n"
|
|
"beq $s0, $v0, .L800517C8\n"
|
|
"sll $v0, $s1, 2\n"
|
|
"lw $s2, 16($sp)\n"
|
|
"nop\n"
|
|
"lw $v1, 4($s2)\n"
|
|
"nop\n"
|
|
"addu $v1, $v1, $v0\n"
|
|
"lw $v0, 0($v1)\n"
|
|
"addiu $s0, $s0, -24\n"
|
|
"sw $v0, 0($s0)\n"
|
|
"addiu $v0, $zero, 5\n"
|
|
"sb $v0, 3($s0)\n"
|
|
"lui $v0, %hi(D_800A5E60)\n"
|
|
"lw $v0, %lo(D_800A5E60)($v0)\n"
|
|
"addiu $s0, $s0, 24\n"
|
|
"sw $v0, 0($v1)\n"
|
|
"sb $zero, 3($v1)\n"
|
|
".L800517C8:\n"
|
|
"lui $at, %hi(D_800A5E60)\n"
|
|
"sw $s0, %lo(D_800A5E60)($at)\n"
|
|
".L800517D0:\n"
|
|
"lw $ra, 164($sp)\n"
|
|
"lw $fp, 160($sp)\n"
|
|
"lw $s7, 156($sp)\n"
|
|
"lw $s6, 152($sp)\n"
|
|
"lw $s5, 148($sp)\n"
|
|
"lw $s4, 144($sp)\n"
|
|
"lw $s3, 140($sp)\n"
|
|
"lw $s2, 136($sp)\n"
|
|
"lw $s1, 132($sp)\n"
|
|
"lw $s0, 128($sp)\n"
|
|
"addiu $sp, $sp, 168\n"
|
|
"jr $ra\n"
|
|
"nop\n"
|
|
".set\treorder\n"
|
|
".end\tgfx2D_BG1_OBJ_648\n"
|
|
);
|