mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-30 15:36:55 -04:00
feat(decomp): main +1 - func_8005FA94 via §265 verbatim asm (gate_main, BYTE-IDENTICAL)
A §332 delay-slot wall the pinned triple cannot emit from C; banked the verbatim-asm way, verified by one clean rebuild at 143dbb89f34491258bbc27810d0a12ec8b43a8dd. Bank confirmed from the source (stub gone), not from the tool's own count.
This commit is contained in:
+78
-1
@@ -2480,7 +2480,84 @@ L8005F820:
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005F830);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005FA94);
|
||||
/* func_8005FA94 — cookbook §265 VERBATIM-ASM bank (file-scope form), generated by
|
||||
* tools/asm_verbatim.py from asm/nonmatchings/800c3/func_8005FA94.s.
|
||||
* Byte-equivalent to the INCLUDE_ASM stub by construction; the function is NOT
|
||||
* decompiled (§265 ACCOUNTING). Immediates/offsets are decimal for maspsx (§383).
|
||||
*/
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align\t2\n"
|
||||
".globl\tfunc_8005FA94\n"
|
||||
".ent\tfunc_8005FA94\n"
|
||||
"func_8005FA94:\n"
|
||||
".frame\t$sp,24,$31\n"
|
||||
".mask\t0x80010000,0\n"
|
||||
".fmask\t0,0\n"
|
||||
".set\tnoreorder\n"
|
||||
"addiu $sp,$sp,-24\n"
|
||||
"sw $s0,16($sp)\n"
|
||||
"addu $s0,$a0,$zero\n"
|
||||
"sw $ra,20($sp)\n"
|
||||
"lw $v0,76($s0)\n"
|
||||
"lbu $v1,70($s0)\n"
|
||||
"addiu $v0,$v0,1\n"
|
||||
"beqz $v1,.L8005FB2C\n"
|
||||
" sw $v0,76($s0)\n"
|
||||
"addiu $v0,$zero,1\n"
|
||||
"bne $v1,$v0,.L8005FAEC\n"
|
||||
" nop\n"
|
||||
"lbu $v1,74($s0)\n"
|
||||
"nop\n"
|
||||
"sltiu $v0,$v1,2\n"
|
||||
"bnez $v0,.L8005FB00\n"
|
||||
" addiu $v0,$v1,1\n"
|
||||
"addiu $v0,$zero,2\n"
|
||||
"sb $v0,73($s0)\n"
|
||||
"addiu $v0,$zero,255\n"
|
||||
"j .L8005FB60\n"
|
||||
" sb $v0,70($s0)\n"
|
||||
".L8005FAEC:\n"
|
||||
"lbu $v1,74($s0)\n"
|
||||
"nop\n"
|
||||
"sltiu $v0,$v1,4\n"
|
||||
"beqz $v0,.L8005FB08\n"
|
||||
" addiu $v0,$v1,1\n"
|
||||
".L8005FB00:\n"
|
||||
"j .L8005FB60\n"
|
||||
" sb $v0,74($s0)\n"
|
||||
".L8005FB08:\n"
|
||||
"lbu $v0,73($s0)\n"
|
||||
"nop\n"
|
||||
"beqz $v0,.L8005FB2C\n"
|
||||
" nop\n"
|
||||
"lui $v0,%hi(D_80072960)\n"
|
||||
"lw $v0,%lo(D_80072960)($v0)\n"
|
||||
"nop\n"
|
||||
"jalr $v0\n"
|
||||
" addu $a0,$s0,$zero\n"
|
||||
".L8005FB2C:\n"
|
||||
"lw $v0,60($s0)\n"
|
||||
"nop\n"
|
||||
"lbu $v1,0($v0)\n"
|
||||
"addiu $v0,$zero,243\n"
|
||||
"beq $v1,$v0,.L8005FB60\n"
|
||||
" addiu $v1,$zero,255\n"
|
||||
"lw $v0,48($s0)\n"
|
||||
"nop\n"
|
||||
"sb $v1,0($v0)\n"
|
||||
"lw $v0,48($s0)\n"
|
||||
"nop\n"
|
||||
"sb $zero,1($v0)\n"
|
||||
"sb $zero,232($s0)\n"
|
||||
".L8005FB60:\n"
|
||||
"lw $ra,20($sp)\n"
|
||||
"lw $s0,16($sp)\n"
|
||||
"jr $ra\n"
|
||||
" addiu $sp,$sp,24\n"
|
||||
".set\treorder\n"
|
||||
".end\tfunc_8005FA94\n"
|
||||
);
|
||||
|
||||
s32 func_8005FB70(void *arg0) {
|
||||
register s32 ff __asm__("$2");
|
||||
|
||||
Reference in New Issue
Block a user