From 7c77253eca304e7afd2002147bc27edb62293b36 Mon Sep 17 00:00:00 2001 From: Zach Banks Date: Mon, 3 May 2021 21:49:09 -0400 Subject: [PATCH] ViMode progress (#802) * ViMode OK * Fix variable name in regconvert tool * ViMode: fix formatting * Add nonmatching impl for ViMode_Configure, respond to PR - Fixed struct field naming (unkXX -> unk_XX) - ViMode_Configure args are not flags for top/left etc; seem to be for video mode - Used @Random06457's implementation of `ViMode_LogPrint` * Use plain LOG_ADDRESS in ViMode_LogPrint * Incorporate PR feedback from Roman971 --- .../{func_800AC2F4.s => ViMode_Configure.s} | 2 +- .../code/z_vimode/func_800AC030.s | 333 ------------------ .../code/z_vimode/func_800AC89C.s | 86 ----- .../code/z_vimode/func_800AC9A4.s | 36 -- .../code/z_vimode/func_800ACA28.s | 28 -- .../code/z_vimode/func_800ACA90.s | 4 - .../code/z_vimode/func_800ACA98.s | 32 -- .../code/z_vimode/func_800ACAF8.s | 246 ------------- include/functions.h | 19 +- include/ultra64/vi.h | 9 +- include/z64.h | 19 +- src/code/game.c | 12 +- src/code/z_vimode.c | 325 ++++++++++++++++- tools/regconvert.py | 2 +- 14 files changed, 359 insertions(+), 794 deletions(-) rename asm/non_matchings/code/z_vimode/{func_800AC2F4.s => ViMode_Configure.s} (99%) delete mode 100644 asm/non_matchings/code/z_vimode/func_800AC030.s delete mode 100644 asm/non_matchings/code/z_vimode/func_800AC89C.s delete mode 100644 asm/non_matchings/code/z_vimode/func_800AC9A4.s delete mode 100644 asm/non_matchings/code/z_vimode/func_800ACA28.s delete mode 100644 asm/non_matchings/code/z_vimode/func_800ACA90.s delete mode 100644 asm/non_matchings/code/z_vimode/func_800ACA98.s delete mode 100644 asm/non_matchings/code/z_vimode/func_800ACAF8.s diff --git a/asm/non_matchings/code/z_vimode/func_800AC2F4.s b/asm/non_matchings/code/z_vimode/ViMode_Configure.s similarity index 99% rename from asm/non_matchings/code/z_vimode/func_800AC2F4.s rename to asm/non_matchings/code/z_vimode/ViMode_Configure.s index 176f04a358..440d2daf1e 100644 --- a/asm/non_matchings/code/z_vimode/func_800AC2F4.s +++ b/asm/non_matchings/code/z_vimode/ViMode_Configure.s @@ -1,4 +1,4 @@ -glabel func_800AC2F4 +glabel ViMode_Configure /* B23494 800AC2F4 2CE80001 */ sltiu $t0, $a3, 1 /* B23498 800AC2F8 27BDFFA0 */ addiu $sp, $sp, -0x60 /* B2349C 800AC2FC 0008102B */ sltu $v0, $zero, $t0 diff --git a/asm/non_matchings/code/z_vimode/func_800AC030.s b/asm/non_matchings/code/z_vimode/func_800AC030.s deleted file mode 100644 index a73332ca4e..0000000000 --- a/asm/non_matchings/code/z_vimode/func_800AC030.s +++ /dev/null @@ -1,333 +0,0 @@ -.rdata -glabel D_801413A0 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801413B0 - .asciz "osvimodep = %08x\n" - .balign 4 - -glabel D_801413C4 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801413D4 - .asciz "osvimodep->comRegs.ctrl = %08x\n" - .balign 4 - -glabel D_801413F4 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141404 - .asciz "osvimodep->comRegs.width = %08x\n" - .balign 4 - -glabel D_80141428 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141438 - .asciz "osvimodep->comRegs.burst = %08x\n" - .balign 4 - -glabel D_8014145C - .asciz "../z_vimode.c" - .balign 4 - -glabel D_8014146C - .asciz "osvimodep->comRegs.vSync = %08x\n" - .balign 4 - -glabel D_80141490 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801414A0 - .asciz "osvimodep->comRegs.hSync = %08x\n" - .balign 4 - -glabel D_801414C4 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801414D4 - .asciz "osvimodep->comRegs.leap = %08x\n" - .balign 4 - -glabel D_801414F4 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141504 - .asciz "osvimodep->comRegs.hStart = %08x\n" - .balign 4 - -glabel D_80141528 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141538 - .asciz "osvimodep->comRegs.xScale = %08x\n" - .balign 4 - -glabel D_8014155C - .asciz "../z_vimode.c" - .balign 4 - -glabel D_8014156C - .asciz "osvimodep->fldRegs[0].vStart = %08x\n" - .balign 4 - -glabel D_80141594 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801415A4 - .asciz "osvimodep->fldRegs[0].vBurst = %08x\n" - .balign 4 - -glabel D_801415CC - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801415DC - .asciz "osvimodep->fldRegs[0].origin = %08x\n" - .balign 4 - -glabel D_80141604 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141614 - .asciz "osvimodep->fldRegs[0].yScale = %08x\n" - .balign 4 - -glabel D_8014163C - .asciz "../z_vimode.c" - .balign 4 - -glabel D_8014164C - .asciz "osvimodep->fldRegs[0].vIntr = %08x\n" - .balign 4 - -glabel D_80141670 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141680 - .asciz "osvimodep->fldRegs[1].vStart = %08x\n" - .balign 4 - -glabel D_801416A8 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801416B8 - .asciz "osvimodep->fldRegs[1].vBurst = %08x\n" - .balign 4 - -glabel D_801416E0 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_801416F0 - .asciz "osvimodep->fldRegs[1].origin = %08x\n" - .balign 4 - -glabel D_80141718 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141728 - .asciz "osvimodep->fldRegs[1].yScale = %08x\n" - .balign 4 - -glabel D_80141750 - .asciz "../z_vimode.c" - .balign 4 - -glabel D_80141760 - .asciz "osvimodep->fldRegs[1].vIntr = %08x\n" - .balign 4 - -.text -glabel func_800AC030 -/* B231D0 800AC030 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B231D4 800AC034 AFA40018 */ sw $a0, 0x18($sp) -/* B231D8 800AC038 AFBF0014 */ sw $ra, 0x14($sp) -/* B231DC 800AC03C 3C048014 */ lui $a0, %hi(D_801413A0) # $a0, 0x8014 -/* B231E0 800AC040 248413A0 */ addiu $a0, %lo(D_801413A0) # addiu $a0, $a0, 0x13a0 -/* B231E4 800AC044 0C000B84 */ jal LogUtils_LogThreadId -/* B231E8 800AC048 24050057 */ li $a1, 87 -/* B231EC 800AC04C 3C048014 */ lui $a0, %hi(D_801413B0) # $a0, 0x8014 -/* B231F0 800AC050 248413B0 */ addiu $a0, %lo(D_801413B0) # addiu $a0, $a0, 0x13b0 -/* B231F4 800AC054 0C00084C */ jal osSyncPrintf -/* B231F8 800AC058 8FA50018 */ lw $a1, 0x18($sp) -/* B231FC 800AC05C 3C048014 */ lui $a0, %hi(D_801413C4) # $a0, 0x8014 -/* B23200 800AC060 248413C4 */ addiu $a0, %lo(D_801413C4) # addiu $a0, $a0, 0x13c4 -/* B23204 800AC064 0C000B84 */ jal LogUtils_LogThreadId -/* B23208 800AC068 24050058 */ li $a1, 88 -/* B2320C 800AC06C 8FAE0018 */ lw $t6, 0x18($sp) -/* B23210 800AC070 3C048014 */ lui $a0, %hi(D_801413D4) # $a0, 0x8014 -/* B23214 800AC074 248413D4 */ addiu $a0, %lo(D_801413D4) # addiu $a0, $a0, 0x13d4 -/* B23218 800AC078 0C00084C */ jal osSyncPrintf -/* B2321C 800AC07C 8DC50004 */ lw $a1, 4($t6) -/* B23220 800AC080 3C048014 */ lui $a0, %hi(D_801413F4) # $a0, 0x8014 -/* B23224 800AC084 248413F4 */ addiu $a0, %lo(D_801413F4) # addiu $a0, $a0, 0x13f4 -/* B23228 800AC088 0C000B84 */ jal LogUtils_LogThreadId -/* B2322C 800AC08C 24050059 */ li $a1, 89 -/* B23230 800AC090 8FAF0018 */ lw $t7, 0x18($sp) -/* B23234 800AC094 3C048014 */ lui $a0, %hi(D_80141404) # $a0, 0x8014 -/* B23238 800AC098 24841404 */ addiu $a0, %lo(D_80141404) # addiu $a0, $a0, 0x1404 -/* B2323C 800AC09C 0C00084C */ jal osSyncPrintf -/* B23240 800AC0A0 8DE50008 */ lw $a1, 8($t7) -/* B23244 800AC0A4 3C048014 */ lui $a0, %hi(D_80141428) # $a0, 0x8014 -/* B23248 800AC0A8 24841428 */ addiu $a0, %lo(D_80141428) # addiu $a0, $a0, 0x1428 -/* B2324C 800AC0AC 0C000B84 */ jal LogUtils_LogThreadId -/* B23250 800AC0B0 2405005A */ li $a1, 90 -/* B23254 800AC0B4 8FB80018 */ lw $t8, 0x18($sp) -/* B23258 800AC0B8 3C048014 */ lui $a0, %hi(D_80141438) # $a0, 0x8014 -/* B2325C 800AC0BC 24841438 */ addiu $a0, %lo(D_80141438) # addiu $a0, $a0, 0x1438 -/* B23260 800AC0C0 0C00084C */ jal osSyncPrintf -/* B23264 800AC0C4 8F05000C */ lw $a1, 0xc($t8) -/* B23268 800AC0C8 3C048014 */ lui $a0, %hi(D_8014145C) # $a0, 0x8014 -/* B2326C 800AC0CC 2484145C */ addiu $a0, %lo(D_8014145C) # addiu $a0, $a0, 0x145c -/* B23270 800AC0D0 0C000B84 */ jal LogUtils_LogThreadId -/* B23274 800AC0D4 2405005B */ li $a1, 91 -/* B23278 800AC0D8 8FB90018 */ lw $t9, 0x18($sp) -/* B2327C 800AC0DC 3C048014 */ lui $a0, %hi(D_8014146C) # $a0, 0x8014 -/* B23280 800AC0E0 2484146C */ addiu $a0, %lo(D_8014146C) # addiu $a0, $a0, 0x146c -/* B23284 800AC0E4 0C00084C */ jal osSyncPrintf -/* B23288 800AC0E8 8F250010 */ lw $a1, 0x10($t9) -/* B2328C 800AC0EC 3C048014 */ lui $a0, %hi(D_80141490) # $a0, 0x8014 -/* B23290 800AC0F0 24841490 */ addiu $a0, %lo(D_80141490) # addiu $a0, $a0, 0x1490 -/* B23294 800AC0F4 0C000B84 */ jal LogUtils_LogThreadId -/* B23298 800AC0F8 2405005C */ li $a1, 92 -/* B2329C 800AC0FC 8FA80018 */ lw $t0, 0x18($sp) -/* B232A0 800AC100 3C048014 */ lui $a0, %hi(D_801414A0) # $a0, 0x8014 -/* B232A4 800AC104 248414A0 */ addiu $a0, %lo(D_801414A0) # addiu $a0, $a0, 0x14a0 -/* B232A8 800AC108 0C00084C */ jal osSyncPrintf -/* B232AC 800AC10C 8D050014 */ lw $a1, 0x14($t0) -/* B232B0 800AC110 3C048014 */ lui $a0, %hi(D_801414C4) # $a0, 0x8014 -/* B232B4 800AC114 248414C4 */ addiu $a0, %lo(D_801414C4) # addiu $a0, $a0, 0x14c4 -/* B232B8 800AC118 0C000B84 */ jal LogUtils_LogThreadId -/* B232BC 800AC11C 2405005D */ li $a1, 93 -/* B232C0 800AC120 8FA90018 */ lw $t1, 0x18($sp) -/* B232C4 800AC124 3C048014 */ lui $a0, %hi(D_801414D4) # $a0, 0x8014 -/* B232C8 800AC128 248414D4 */ addiu $a0, %lo(D_801414D4) # addiu $a0, $a0, 0x14d4 -/* B232CC 800AC12C 0C00084C */ jal osSyncPrintf -/* B232D0 800AC130 8D250018 */ lw $a1, 0x18($t1) -/* B232D4 800AC134 3C048014 */ lui $a0, %hi(D_801414F4) # $a0, 0x8014 -/* B232D8 800AC138 248414F4 */ addiu $a0, %lo(D_801414F4) # addiu $a0, $a0, 0x14f4 -/* B232DC 800AC13C 0C000B84 */ jal LogUtils_LogThreadId -/* B232E0 800AC140 2405005E */ li $a1, 94 -/* B232E4 800AC144 8FAA0018 */ lw $t2, 0x18($sp) -/* B232E8 800AC148 3C048014 */ lui $a0, %hi(D_80141504) # $a0, 0x8014 -/* B232EC 800AC14C 24841504 */ addiu $a0, %lo(D_80141504) # addiu $a0, $a0, 0x1504 -/* B232F0 800AC150 0C00084C */ jal osSyncPrintf -/* B232F4 800AC154 8D45001C */ lw $a1, 0x1c($t2) -/* B232F8 800AC158 3C048014 */ lui $a0, %hi(D_80141528) # $a0, 0x8014 -/* B232FC 800AC15C 24841528 */ addiu $a0, %lo(D_80141528) # addiu $a0, $a0, 0x1528 -/* B23300 800AC160 0C000B84 */ jal LogUtils_LogThreadId -/* B23304 800AC164 2405005F */ li $a1, 95 -/* B23308 800AC168 8FAB0018 */ lw $t3, 0x18($sp) -/* B2330C 800AC16C 3C048014 */ lui $a0, %hi(D_80141538) # $a0, 0x8014 -/* B23310 800AC170 24841538 */ addiu $a0, %lo(D_80141538) # addiu $a0, $a0, 0x1538 -/* B23314 800AC174 0C00084C */ jal osSyncPrintf -/* B23318 800AC178 8D650020 */ lw $a1, 0x20($t3) -/* B2331C 800AC17C 3C048014 */ lui $a0, %hi(D_8014155C) # $a0, 0x8014 -/* B23320 800AC180 2484155C */ addiu $a0, %lo(D_8014155C) # addiu $a0, $a0, 0x155c -/* B23324 800AC184 0C000B84 */ jal LogUtils_LogThreadId -/* B23328 800AC188 24050060 */ li $a1, 96 -/* B2332C 800AC18C 8FAC0018 */ lw $t4, 0x18($sp) -/* B23330 800AC190 3C048014 */ lui $a0, %hi(D_8014156C) # $a0, 0x8014 -/* B23334 800AC194 2484156C */ addiu $a0, %lo(D_8014156C) # addiu $a0, $a0, 0x156c -/* B23338 800AC198 0C00084C */ jal osSyncPrintf -/* B2333C 800AC19C 8D850030 */ lw $a1, 0x30($t4) -/* B23340 800AC1A0 3C048014 */ lui $a0, %hi(D_80141594) # $a0, 0x8014 -/* B23344 800AC1A4 24841594 */ addiu $a0, %lo(D_80141594) # addiu $a0, $a0, 0x1594 -/* B23348 800AC1A8 0C000B84 */ jal LogUtils_LogThreadId -/* B2334C 800AC1AC 24050061 */ li $a1, 97 -/* B23350 800AC1B0 8FAD0018 */ lw $t5, 0x18($sp) -/* B23354 800AC1B4 3C048014 */ lui $a0, %hi(D_801415A4) # $a0, 0x8014 -/* B23358 800AC1B8 248415A4 */ addiu $a0, %lo(D_801415A4) # addiu $a0, $a0, 0x15a4 -/* B2335C 800AC1BC 0C00084C */ jal osSyncPrintf -/* B23360 800AC1C0 8DA50034 */ lw $a1, 0x34($t5) -/* B23364 800AC1C4 3C048014 */ lui $a0, %hi(D_801415CC) # $a0, 0x8014 -/* B23368 800AC1C8 248415CC */ addiu $a0, %lo(D_801415CC) # addiu $a0, $a0, 0x15cc -/* B2336C 800AC1CC 0C000B84 */ jal LogUtils_LogThreadId -/* B23370 800AC1D0 24050062 */ li $a1, 98 -/* B23374 800AC1D4 8FAE0018 */ lw $t6, 0x18($sp) -/* B23378 800AC1D8 3C048014 */ lui $a0, %hi(D_801415DC) # $a0, 0x8014 -/* B2337C 800AC1DC 248415DC */ addiu $a0, %lo(D_801415DC) # addiu $a0, $a0, 0x15dc -/* B23380 800AC1E0 0C00084C */ jal osSyncPrintf -/* B23384 800AC1E4 8DC50028 */ lw $a1, 0x28($t6) -/* B23388 800AC1E8 3C048014 */ lui $a0, %hi(D_80141604) # $a0, 0x8014 -/* B2338C 800AC1EC 24841604 */ addiu $a0, %lo(D_80141604) # addiu $a0, $a0, 0x1604 -/* B23390 800AC1F0 0C000B84 */ jal LogUtils_LogThreadId -/* B23394 800AC1F4 24050063 */ li $a1, 99 -/* B23398 800AC1F8 8FAF0018 */ lw $t7, 0x18($sp) -/* B2339C 800AC1FC 3C048014 */ lui $a0, %hi(D_80141614) # $a0, 0x8014 -/* B233A0 800AC200 24841614 */ addiu $a0, %lo(D_80141614) # addiu $a0, $a0, 0x1614 -/* B233A4 800AC204 0C00084C */ jal osSyncPrintf -/* B233A8 800AC208 8DE5002C */ lw $a1, 0x2c($t7) -/* B233AC 800AC20C 3C048014 */ lui $a0, %hi(D_8014163C) # $a0, 0x8014 -/* B233B0 800AC210 2484163C */ addiu $a0, %lo(D_8014163C) # addiu $a0, $a0, 0x163c -/* B233B4 800AC214 0C000B84 */ jal LogUtils_LogThreadId -/* B233B8 800AC218 24050064 */ li $a1, 100 -/* B233BC 800AC21C 8FB80018 */ lw $t8, 0x18($sp) -/* B233C0 800AC220 3C048014 */ lui $a0, %hi(D_8014164C) # $a0, 0x8014 -/* B233C4 800AC224 2484164C */ addiu $a0, %lo(D_8014164C) # addiu $a0, $a0, 0x164c -/* B233C8 800AC228 0C00084C */ jal osSyncPrintf -/* B233CC 800AC22C 8F050038 */ lw $a1, 0x38($t8) -/* B233D0 800AC230 3C048014 */ lui $a0, %hi(D_80141670) # $a0, 0x8014 -/* B233D4 800AC234 24841670 */ addiu $a0, %lo(D_80141670) # addiu $a0, $a0, 0x1670 -/* B233D8 800AC238 0C000B84 */ jal LogUtils_LogThreadId -/* B233DC 800AC23C 24050065 */ li $a1, 101 -/* B233E0 800AC240 8FB90018 */ lw $t9, 0x18($sp) -/* B233E4 800AC244 3C048014 */ lui $a0, %hi(D_80141680) # $a0, 0x8014 -/* B233E8 800AC248 24841680 */ addiu $a0, %lo(D_80141680) # addiu $a0, $a0, 0x1680 -/* B233EC 800AC24C 0C00084C */ jal osSyncPrintf -/* B233F0 800AC250 8F250044 */ lw $a1, 0x44($t9) -/* B233F4 800AC254 3C048014 */ lui $a0, %hi(D_801416A8) # $a0, 0x8014 -/* B233F8 800AC258 248416A8 */ addiu $a0, %lo(D_801416A8) # addiu $a0, $a0, 0x16a8 -/* B233FC 800AC25C 0C000B84 */ jal LogUtils_LogThreadId -/* B23400 800AC260 24050066 */ li $a1, 102 -/* B23404 800AC264 8FA80018 */ lw $t0, 0x18($sp) -/* B23408 800AC268 3C048014 */ lui $a0, %hi(D_801416B8) # $a0, 0x8014 -/* B2340C 800AC26C 248416B8 */ addiu $a0, %lo(D_801416B8) # addiu $a0, $a0, 0x16b8 -/* B23410 800AC270 0C00084C */ jal osSyncPrintf -/* B23414 800AC274 8D050048 */ lw $a1, 0x48($t0) -/* B23418 800AC278 3C048014 */ lui $a0, %hi(D_801416E0) # $a0, 0x8014 -/* B2341C 800AC27C 248416E0 */ addiu $a0, %lo(D_801416E0) # addiu $a0, $a0, 0x16e0 -/* B23420 800AC280 0C000B84 */ jal LogUtils_LogThreadId -/* B23424 800AC284 24050067 */ li $a1, 103 -/* B23428 800AC288 8FA90018 */ lw $t1, 0x18($sp) -/* B2342C 800AC28C 3C048014 */ lui $a0, %hi(D_801416F0) # $a0, 0x8014 -/* B23430 800AC290 248416F0 */ addiu $a0, %lo(D_801416F0) # addiu $a0, $a0, 0x16f0 -/* B23434 800AC294 0C00084C */ jal osSyncPrintf -/* B23438 800AC298 8D25003C */ lw $a1, 0x3c($t1) -/* B2343C 800AC29C 3C048014 */ lui $a0, %hi(D_80141718) # $a0, 0x8014 -/* B23440 800AC2A0 24841718 */ addiu $a0, %lo(D_80141718) # addiu $a0, $a0, 0x1718 -/* B23444 800AC2A4 0C000B84 */ jal LogUtils_LogThreadId -/* B23448 800AC2A8 24050068 */ li $a1, 104 -/* B2344C 800AC2AC 8FAA0018 */ lw $t2, 0x18($sp) -/* B23450 800AC2B0 3C048014 */ lui $a0, %hi(D_80141728) # $a0, 0x8014 -/* B23454 800AC2B4 24841728 */ addiu $a0, %lo(D_80141728) # addiu $a0, $a0, 0x1728 -/* B23458 800AC2B8 0C00084C */ jal osSyncPrintf -/* B2345C 800AC2BC 8D450040 */ lw $a1, 0x40($t2) -/* B23460 800AC2C0 3C048014 */ lui $a0, %hi(D_80141750) # $a0, 0x8014 -/* B23464 800AC2C4 24841750 */ addiu $a0, %lo(D_80141750) # addiu $a0, $a0, 0x1750 -/* B23468 800AC2C8 0C000B84 */ jal LogUtils_LogThreadId -/* B2346C 800AC2CC 24050069 */ li $a1, 105 -/* B23470 800AC2D0 8FAB0018 */ lw $t3, 0x18($sp) -/* B23474 800AC2D4 3C048014 */ lui $a0, %hi(D_80141760) # $a0, 0x8014 -/* B23478 800AC2D8 24841760 */ addiu $a0, %lo(D_80141760) # addiu $a0, $a0, 0x1760 -/* B2347C 800AC2DC 0C00084C */ jal osSyncPrintf -/* B23480 800AC2E0 8D65004C */ lw $a1, 0x4c($t3) -/* B23484 800AC2E4 8FBF0014 */ lw $ra, 0x14($sp) -/* B23488 800AC2E8 27BD0018 */ addiu $sp, $sp, 0x18 -/* B2348C 800AC2EC 03E00008 */ jr $ra -/* B23490 800AC2F0 00000000 */ nop - diff --git a/asm/non_matchings/code/z_vimode/func_800AC89C.s b/asm/non_matchings/code/z_vimode/func_800AC89C.s deleted file mode 100644 index cfe11bc4a5..0000000000 --- a/asm/non_matchings/code/z_vimode/func_800AC89C.s +++ /dev/null @@ -1,86 +0,0 @@ -.rdata -glabel D_80141784 - .asciz "osViModePalLan1\n" - .balign 4 - -glabel D_80141798 - .asciz "osViModeFpalLan1\n" - .balign 4 - -glabel D_801417AC - .asciz "Custom\n" - .balign 4 - -.text -glabel func_800AC89C -/* B23A3C 800AC89C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B23A40 800AC8A0 3C028016 */ lui $v0, %hi(gGameInfo) # $v0, 0x8016 -/* B23A44 800AC8A4 2442FA90 */ addiu $v0, %lo(gGameInfo) # addiu $v0, $v0, -0x570 -/* B23A48 800AC8A8 AFBF0014 */ sw $ra, 0x14($sp) -/* B23A4C 800AC8AC 8C8E0068 */ lw $t6, 0x68($a0) -/* B23A50 800AC8B0 8C4F0000 */ lw $t7, ($v0) -/* B23A54 800AC8B4 24060001 */ li $a2, 1 -/* B23A58 800AC8B8 00802825 */ move $a1, $a0 -/* B23A5C 800AC8BC A5EE0134 */ sh $t6, 0x134($t7) -/* B23A60 800AC8C0 8C590000 */ lw $t9, ($v0) -/* B23A64 800AC8C4 8C980054 */ lw $t8, 0x54($a0) -/* B23A68 800AC8C8 A7380136 */ sh $t8, 0x136($t9) -/* B23A6C 800AC8CC 8C490000 */ lw $t1, ($v0) -/* B23A70 800AC8D0 8C880050 */ lw $t0, 0x50($a0) -/* B23A74 800AC8D4 A5280138 */ sh $t0, 0x138($t1) -/* B23A78 800AC8D8 8C4B0000 */ lw $t3, ($v0) -/* B23A7C 800AC8DC 8C8A0064 */ lw $t2, 0x64($a0) -/* B23A80 800AC8E0 A56A013A */ sh $t2, 0x13a($t3) -/* B23A84 800AC8E4 8C4D0000 */ lw $t5, ($v0) -/* B23A88 800AC8E8 8C8C0060 */ lw $t4, 0x60($a0) -/* B23A8C 800AC8EC A5AC013C */ sh $t4, 0x13c($t5) -/* B23A90 800AC8F0 8C4F0000 */ lw $t7, ($v0) -/* B23A94 800AC8F4 8C8E005C */ lw $t6, 0x5c($a0) -/* B23A98 800AC8F8 A5EE013E */ sh $t6, 0x13e($t7) -/* B23A9C 800AC8FC 8C590000 */ lw $t9, ($v0) -/* B23AA0 800AC900 8C980058 */ lw $t8, 0x58($a0) -/* B23AA4 800AC904 A7380140 */ sh $t8, 0x140($t9) -/* B23AA8 800AC908 8C430000 */ lw $v1, ($v0) -/* B23AAC 800AC90C 84680148 */ lh $t0, 0x148($v1) -/* B23AB0 800AC910 54C80021 */ bnel $a2, $t0, .L800AC998 -/* B23AB4 800AC914 8FBF0014 */ lw $ra, 0x14($sp) -/* B23AB8 800AC918 A4600148 */ sh $zero, 0x148($v1) -/* B23ABC 800AC91C 8C490000 */ lw $t1, ($v0) -/* B23AC0 800AC920 24010002 */ li $at, 2 -/* B23AC4 800AC924 8524014A */ lh $a0, 0x14a($t1) -/* B23AC8 800AC928 10860005 */ beq $a0, $a2, .L800AC940 -/* B23ACC 800AC92C 00000000 */ nop -/* B23AD0 800AC930 1081000B */ beq $a0, $at, .L800AC960 -/* B23AD4 800AC934 00000000 */ nop -/* B23AD8 800AC938 10000011 */ b .L800AC980 -/* B23ADC 800AC93C 3C048014 */ lui $a0, %hi(D_801417AC) -.L800AC940: -/* B23AE0 800AC940 3C048014 */ lui $a0, %hi(D_80141784) # $a0, 0x8014 -/* B23AE4 800AC944 0C00084C */ jal osSyncPrintf -/* B23AE8 800AC948 24841784 */ addiu $a0, %lo(D_80141784) # addiu $a0, $a0, 0x1784 -/* B23AEC 800AC94C 3C048001 */ lui $a0, %hi(osViModePalLan1) # $a0, 0x8001 -/* B23AF0 800AC950 0C02B00C */ jal func_800AC030 -/* B23AF4 800AC954 2484ACA0 */ addiu $a0, %lo(osViModePalLan1) # addiu $a0, $a0, -0x5360 -/* B23AF8 800AC958 1000000F */ b .L800AC998 -/* B23AFC 800AC95C 8FBF0014 */ lw $ra, 0x14($sp) -.L800AC960: -/* B23B00 800AC960 3C048014 */ lui $a0, %hi(D_80141798) # $a0, 0x8014 -/* B23B04 800AC964 0C00084C */ jal osSyncPrintf -/* B23B08 800AC968 24841798 */ addiu $a0, %lo(D_80141798) # addiu $a0, $a0, 0x1798 -/* B23B0C 800AC96C 3C048001 */ lui $a0, %hi(osViModeFpalLan1) # $a0, 0x8001 -/* B23B10 800AC970 0C02B00C */ jal func_800AC030 -/* B23B14 800AC974 2484AF20 */ addiu $a0, %lo(osViModeFpalLan1) # addiu $a0, $a0, -0x50e0 -/* B23B18 800AC978 10000007 */ b .L800AC998 -/* B23B1C 800AC97C 8FBF0014 */ lw $ra, 0x14($sp) -.L800AC980: -/* B23B20 800AC980 248417AC */ addiu $a0, %lo(D_801417AC) -/* B23B24 800AC984 0C00084C */ jal osSyncPrintf -/* B23B28 800AC988 AFA50018 */ sw $a1, 0x18($sp) -/* B23B2C 800AC98C 0C02B00C */ jal func_800AC030 -/* B23B30 800AC990 8FA40018 */ lw $a0, 0x18($sp) -/* B23B34 800AC994 8FBF0014 */ lw $ra, 0x14($sp) -.L800AC998: -/* B23B38 800AC998 27BD0018 */ addiu $sp, $sp, 0x18 -/* B23B3C 800AC99C 03E00008 */ jr $ra -/* B23B40 800AC9A0 00000000 */ nop - diff --git a/asm/non_matchings/code/z_vimode/func_800AC9A4.s b/asm/non_matchings/code/z_vimode/func_800AC9A4.s deleted file mode 100644 index d497176389..0000000000 --- a/asm/non_matchings/code/z_vimode/func_800AC9A4.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel func_800AC9A4 -/* B23B44 800AC9A4 3C058016 */ lui $a1, %hi(gGameInfo) # $a1, 0x8016 -/* B23B48 800AC9A8 24A5FA90 */ addiu $a1, %lo(gGameInfo) # addiu $a1, $a1, -0x570 -/* B23B4C 800AC9AC 8CA20000 */ lw $v0, ($a1) -/* B23B50 800AC9B0 2406FFFC */ li $a2, -4 -/* B23B54 800AC9B4 24010001 */ li $at, 1 -/* B23B58 800AC9B8 84430136 */ lh $v1, 0x136($v0) -/* B23B5C 800AC9BC 00667024 */ and $t6, $v1, $a2 -/* B23B60 800AC9C0 15C10003 */ bne $t6, $at, .L800AC9D0 -/* B23B64 800AC9C4 246F0004 */ addiu $t7, $v1, 4 -/* B23B68 800AC9C8 A44F0136 */ sh $t7, 0x136($v0) -/* B23B6C 800AC9CC 8CA20000 */ lw $v0, ($a1) -.L800AC9D0: -/* B23B70 800AC9D0 84580134 */ lh $t8, 0x134($v0) -/* B23B74 800AC9D4 AC980068 */ sw $t8, 0x68($a0) -/* B23B78 800AC9D8 8CB90000 */ lw $t9, ($a1) -/* B23B7C 800AC9DC 87280136 */ lh $t0, 0x136($t9) -/* B23B80 800AC9E0 01064824 */ and $t1, $t0, $a2 -/* B23B84 800AC9E4 AC890054 */ sw $t1, 0x54($a0) -/* B23B88 800AC9E8 8CAA0000 */ lw $t2, ($a1) -/* B23B8C 800AC9EC 854B0138 */ lh $t3, 0x138($t2) -/* B23B90 800AC9F0 AC8B0050 */ sw $t3, 0x50($a0) -/* B23B94 800AC9F4 8CAC0000 */ lw $t4, ($a1) -/* B23B98 800AC9F8 858D013A */ lh $t5, 0x13a($t4) -/* B23B9C 800AC9FC AC8D0064 */ sw $t5, 0x64($a0) -/* B23BA0 800ACA00 8CAE0000 */ lw $t6, ($a1) -/* B23BA4 800ACA04 85CF013C */ lh $t7, 0x13c($t6) -/* B23BA8 800ACA08 AC8F0060 */ sw $t7, 0x60($a0) -/* B23BAC 800ACA0C 8CB80000 */ lw $t8, ($a1) -/* B23BB0 800ACA10 8719013E */ lh $t9, 0x13e($t8) -/* B23BB4 800ACA14 AC99005C */ sw $t9, 0x5c($a0) -/* B23BB8 800ACA18 8CA80000 */ lw $t0, ($a1) -/* B23BBC 800ACA1C 85090140 */ lh $t1, 0x140($t0) -/* B23BC0 800ACA20 03E00008 */ jr $ra -/* B23BC4 800ACA24 AC890058 */ sw $t1, 0x58($a0) - diff --git a/asm/non_matchings/code/z_vimode/func_800ACA28.s b/asm/non_matchings/code/z_vimode/func_800ACA28.s deleted file mode 100644 index 41f1bc2f84..0000000000 --- a/asm/non_matchings/code/z_vimode/func_800ACA28.s +++ /dev/null @@ -1,28 +0,0 @@ -glabel func_800ACA28 -/* B23BC8 800ACA28 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B23BCC 800ACA2C AFBF0014 */ sw $ra, 0x14($sp) -/* B23BD0 800ACA30 240E0140 */ li $t6, 320 -/* B23BD4 800ACA34 240F00F0 */ li $t7, 240 -/* B23BD8 800ACA38 24180042 */ li $t8, 66 -/* B23BDC 800ACA3C AC800068 */ sw $zero, 0x68($a0) -/* B23BE0 800ACA40 AC8E0054 */ sw $t6, 0x54($a0) -/* B23BE4 800ACA44 AC8F0050 */ sw $t7, 0x50($a0) -/* B23BE8 800ACA48 AC80005C */ sw $zero, 0x5c($a0) -/* B23BEC 800ACA4C AC800058 */ sw $zero, 0x58($a0) -/* B23BF0 800ACA50 AC800064 */ sw $zero, 0x64($a0) -/* B23BF4 800ACA54 AC800060 */ sw $zero, 0x60($a0) -/* B23BF8 800ACA58 AC980080 */ sw $t8, 0x80($a0) -/* B23BFC 800ACA5C 3C198000 */ lui $t9, %hi(osTvType) # $t9, 0x8000 -/* B23C00 800ACA60 8F390300 */ lw $t9, %lo(osTvType)($t9) -/* B23C04 800ACA64 24020001 */ li $v0, 1 -/* B23C08 800ACA68 AC82007C */ sw $v0, 0x7c($a0) -/* B23C0C 800ACA6C AC820078 */ sw $v0, 0x78($a0) -/* B23C10 800ACA70 AC800074 */ sw $zero, 0x74($a0) -/* B23C14 800ACA74 AC820070 */ sw $v0, 0x70($a0) -/* B23C18 800ACA78 0C02B227 */ jal func_800AC89C -/* B23C1C 800ACA7C AC99006C */ sw $t9, 0x6c($a0) -/* B23C20 800ACA80 8FBF0014 */ lw $ra, 0x14($sp) -/* B23C24 800ACA84 27BD0018 */ addiu $sp, $sp, 0x18 -/* B23C28 800ACA88 03E00008 */ jr $ra -/* B23C2C 800ACA8C 00000000 */ nop - diff --git a/asm/non_matchings/code/z_vimode/func_800ACA90.s b/asm/non_matchings/code/z_vimode/func_800ACA90.s deleted file mode 100644 index 7ef6624dac..0000000000 --- a/asm/non_matchings/code/z_vimode/func_800ACA90.s +++ /dev/null @@ -1,4 +0,0 @@ -glabel func_800ACA90 -/* B23C30 800ACA90 03E00008 */ jr $ra -/* B23C34 800ACA94 AFA40000 */ sw $a0, ($sp) - diff --git a/asm/non_matchings/code/z_vimode/func_800ACA98.s b/asm/non_matchings/code/z_vimode/func_800ACA98.s deleted file mode 100644 index 73b5de6f22..0000000000 --- a/asm/non_matchings/code/z_vimode/func_800ACA98.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_800ACA98 -/* B23C38 800ACA98 30AE0001 */ andi $t6, $a1, 1 -/* B23C3C 800ACA9C 11C00002 */ beqz $t6, .L800ACAA8 -/* B23C40 800ACAA0 8C820004 */ lw $v0, 4($a0) -/* B23C44 800ACAA4 34420008 */ ori $v0, $v0, 8 -.L800ACAA8: -/* B23C48 800ACAA8 30AF0002 */ andi $t7, $a1, 2 -/* B23C4C 800ACAAC 11E00003 */ beqz $t7, .L800ACABC -/* B23C50 800ACAB0 30B80004 */ andi $t8, $a1, 4 -/* B23C54 800ACAB4 2401FFF7 */ li $at, -9 -/* B23C58 800ACAB8 00411024 */ and $v0, $v0, $at -.L800ACABC: -/* B23C5C 800ACABC 13000002 */ beqz $t8, .L800ACAC8 -/* B23C60 800ACAC0 30B90008 */ andi $t9, $a1, 8 -/* B23C64 800ACAC4 34420004 */ ori $v0, $v0, 4 -.L800ACAC8: -/* B23C68 800ACAC8 13200003 */ beqz $t9, .L800ACAD8 -/* B23C6C 800ACACC 30A80010 */ andi $t0, $a1, 0x10 -/* B23C70 800ACAD0 2401FFFB */ li $at, -5 -/* B23C74 800ACAD4 00411024 */ and $v0, $v0, $at -.L800ACAD8: -/* B23C78 800ACAD8 11000002 */ beqz $t0, .L800ACAE4 -/* B23C7C 800ACADC 30A90020 */ andi $t1, $a1, 0x20 -/* B23C80 800ACAE0 34420010 */ ori $v0, $v0, 0x10 -.L800ACAE4: -/* B23C84 800ACAE4 11200002 */ beqz $t1, .L800ACAF0 -/* B23C88 800ACAE8 2401FFEF */ li $at, -17 -/* B23C8C 800ACAEC 00411024 */ and $v0, $v0, $at -.L800ACAF0: -/* B23C90 800ACAF0 03E00008 */ jr $ra -/* B23C94 800ACAF4 AC820004 */ sw $v0, 4($a0) - diff --git a/asm/non_matchings/code/z_vimode/func_800ACAF8.s b/asm/non_matchings/code/z_vimode/func_800ACAF8.s deleted file mode 100644 index fcd21bddde..0000000000 --- a/asm/non_matchings/code/z_vimode/func_800ACAF8.s +++ /dev/null @@ -1,246 +0,0 @@ -glabel func_800ACAF8 -/* B23C98 800ACAF8 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* B23C9C 800ACAFC AFBF0044 */ sw $ra, 0x44($sp) -/* B23CA0 800ACB00 AFB00040 */ sw $s0, 0x40($sp) -/* B23CA4 800ACB04 00808025 */ move $s0, $a0 -/* B23CA8 800ACB08 0C02B269 */ jal func_800AC9A4 -/* B23CAC 800ACB0C AFA5004C */ sw $a1, 0x4c($sp) -/* B23CB0 800ACB10 8E020068 */ lw $v0, 0x68($s0) -/* B23CB4 800ACB14 24010001 */ li $at, 1 -/* B23CB8 800ACB18 8FA5004C */ lw $a1, 0x4c($sp) -/* B23CBC 800ACB1C 10410005 */ beq $v0, $at, .L800ACB34 -/* B23CC0 800ACB20 24010002 */ li $at, 2 -/* B23CC4 800ACB24 10410003 */ beq $v0, $at, .L800ACB34 -/* B23CC8 800ACB28 24010003 */ li $at, 3 -/* B23CCC 800ACB2C 144100C6 */ bne $v0, $at, .L800ACE48 -/* B23CD0 800ACB30 00000000 */ nop -.L800ACB34: -/* B23CD4 800ACB34 8E0E0054 */ lw $t6, 0x54($s0) -/* B23CD8 800ACB38 3C018013 */ lui $at, %hi(gScreenWidth) # $at, 0x8013 -/* B23CDC 800ACB3C 02002025 */ move $a0, $s0 -/* B23CE0 800ACB40 AC2ED270 */ sw $t6, %lo(gScreenWidth)($at) -/* B23CE4 800ACB44 8E0F0050 */ lw $t7, 0x50($s0) -/* B23CE8 800ACB48 3C018013 */ lui $at, %hi(gScreenHeight) # $at, 0x8013 -/* B23CEC 800ACB4C AC2FD274 */ sw $t7, %lo(gScreenHeight)($at) -/* B23CF0 800ACB50 94A20000 */ lhu $v0, ($a1) -/* B23CF4 800ACB54 2401EFF6 */ li $at, -4106 -/* B23CF8 800ACB58 0041C027 */ nor $t8, $v0, $at -/* B23CFC 800ACB5C 57000006 */ bnezl $t8, .L800ACB78 -/* B23D00 800ACB60 2401FFF7 */ li $at, -9 -/* B23D04 800ACB64 0C02B28A */ jal func_800ACA28 -/* B23D08 800ACB68 AFA5004C */ sw $a1, 0x4c($sp) -/* B23D0C 800ACB6C 8FA5004C */ lw $a1, 0x4c($sp) -/* B23D10 800ACB70 94A20000 */ lhu $v0, ($a1) -/* B23D14 800ACB74 2401FFF7 */ li $at, -9 -.L800ACB78: -/* B23D18 800ACB78 0041C827 */ nor $t9, $v0, $at -/* B23D1C 800ACB7C 1720001E */ bnez $t9, .L800ACBF8 -/* B23D20 800ACB80 2401FFFE */ li $at, -2 -/* B23D24 800ACB84 2404F7FF */ li $a0, -2049 -/* B23D28 800ACB88 00444827 */ nor $t1, $v0, $a0 -/* B23D2C 800ACB8C 15200005 */ bnez $t1, .L800ACBA4 -/* B23D30 800ACB90 2406FBFF */ li $a2, -1025 -/* B23D34 800ACB94 8E0A0064 */ lw $t2, 0x64($s0) -/* B23D38 800ACB98 254BFFFF */ addiu $t3, $t2, -1 -/* B23D3C 800ACB9C AE0B0064 */ sw $t3, 0x64($s0) -/* B23D40 800ACBA0 94A20000 */ lhu $v0, ($a1) -.L800ACBA4: -/* B23D44 800ACBA4 00466027 */ nor $t4, $v0, $a2 -/* B23D48 800ACBA8 15800005 */ bnez $t4, .L800ACBC0 -/* B23D4C 800ACBAC 2407FDFF */ li $a3, -513 -/* B23D50 800ACBB0 8E0D0064 */ lw $t5, 0x64($s0) -/* B23D54 800ACBB4 25AE0001 */ addiu $t6, $t5, 1 -/* B23D58 800ACBB8 AE0E0064 */ sw $t6, 0x64($s0) -/* B23D5C 800ACBBC 94A20000 */ lhu $v0, ($a1) -.L800ACBC0: -/* B23D60 800ACBC0 00477827 */ nor $t7, $v0, $a3 -/* B23D64 800ACBC4 15E00005 */ bnez $t7, .L800ACBDC -/* B23D68 800ACBC8 2408FEFF */ li $t0, -257 -/* B23D6C 800ACBCC 8E18005C */ lw $t8, 0x5c($s0) -/* B23D70 800ACBD0 2719FFFF */ addiu $t9, $t8, -1 -/* B23D74 800ACBD4 AE19005C */ sw $t9, 0x5c($s0) -/* B23D78 800ACBD8 94A20000 */ lhu $v0, ($a1) -.L800ACBDC: -/* B23D7C 800ACBDC 00484827 */ nor $t1, $v0, $t0 -/* B23D80 800ACBE0 55200006 */ bnezl $t1, .L800ACBFC -/* B23D84 800ACBE4 00416027 */ nor $t4, $v0, $at -/* B23D88 800ACBE8 8E0A005C */ lw $t2, 0x5c($s0) -/* B23D8C 800ACBEC 254B0001 */ addiu $t3, $t2, 1 -/* B23D90 800ACBF0 AE0B005C */ sw $t3, 0x5c($s0) -/* B23D94 800ACBF4 94A20000 */ lhu $v0, ($a1) -.L800ACBF8: -/* B23D98 800ACBF8 00416027 */ nor $t4, $v0, $at -.L800ACBFC: -/* B23D9C 800ACBFC 2404F7FF */ li $a0, -2049 -/* B23DA0 800ACC00 2406FBFF */ li $a2, -1025 -/* B23DA4 800ACC04 2407FDFF */ li $a3, -513 -/* B23DA8 800ACC08 1580001D */ bnez $t4, .L800ACC80 -/* B23DAC 800ACC0C 2408FEFF */ li $t0, -257 -/* B23DB0 800ACC10 00446827 */ nor $t5, $v0, $a0 -/* B23DB4 800ACC14 55A00006 */ bnezl $t5, .L800ACC30 -/* B23DB8 800ACC18 0046C027 */ nor $t8, $v0, $a2 -/* B23DBC 800ACC1C 8E0E0060 */ lw $t6, 0x60($s0) -/* B23DC0 800ACC20 25CFFFFF */ addiu $t7, $t6, -1 -/* B23DC4 800ACC24 AE0F0060 */ sw $t7, 0x60($s0) -/* B23DC8 800ACC28 94A20000 */ lhu $v0, ($a1) -/* B23DCC 800ACC2C 0046C027 */ nor $t8, $v0, $a2 -.L800ACC30: -/* B23DD0 800ACC30 57000006 */ bnezl $t8, .L800ACC4C -/* B23DD4 800ACC34 00475027 */ nor $t2, $v0, $a3 -/* B23DD8 800ACC38 8E190060 */ lw $t9, 0x60($s0) -/* B23DDC 800ACC3C 27290001 */ addiu $t1, $t9, 1 -/* B23DE0 800ACC40 AE090060 */ sw $t1, 0x60($s0) -/* B23DE4 800ACC44 94A20000 */ lhu $v0, ($a1) -/* B23DE8 800ACC48 00475027 */ nor $t2, $v0, $a3 -.L800ACC4C: -/* B23DEC 800ACC4C 55400006 */ bnezl $t2, .L800ACC68 -/* B23DF0 800ACC50 00486827 */ nor $t5, $v0, $t0 -/* B23DF4 800ACC54 8E0B0058 */ lw $t3, 0x58($s0) -/* B23DF8 800ACC58 256CFFFF */ addiu $t4, $t3, -1 -/* B23DFC 800ACC5C AE0C0058 */ sw $t4, 0x58($s0) -/* B23E00 800ACC60 94A20000 */ lhu $v0, ($a1) -/* B23E04 800ACC64 00486827 */ nor $t5, $v0, $t0 -.L800ACC68: -/* B23E08 800ACC68 55A00006 */ bnezl $t5, .L800ACC84 -/* B23E0C 800ACC6C 2401FFFB */ li $at, -5 -/* B23E10 800ACC70 8E0E0058 */ lw $t6, 0x58($s0) -/* B23E14 800ACC74 25CF0001 */ addiu $t7, $t6, 1 -/* B23E18 800ACC78 AE0F0058 */ sw $t7, 0x58($s0) -/* B23E1C 800ACC7C 94A20000 */ lhu $v0, ($a1) -.L800ACC80: -/* B23E20 800ACC80 2401FFFB */ li $at, -5 -.L800ACC84: -/* B23E24 800ACC84 0041C027 */ nor $t8, $v0, $at -/* B23E28 800ACC88 5700001E */ bnezl $t8, .L800ACD04 -/* B23E2C 800ACC8C 8E0C0068 */ lw $t4, 0x68($s0) -/* B23E30 800ACC90 94A3000C */ lhu $v1, 0xc($a1) -/* B23E34 800ACC94 0064C827 */ nor $t9, $v1, $a0 -/* B23E38 800ACC98 57200006 */ bnezl $t9, .L800ACCB4 -/* B23E3C 800ACC9C 00664827 */ nor $t1, $v1, $a2 -/* B23E40 800ACCA0 8E020070 */ lw $v0, 0x70($s0) -/* B23E44 800ACCA4 2C420001 */ sltiu $v0, $v0, 1 -/* B23E48 800ACCA8 AE020070 */ sw $v0, 0x70($s0) -/* B23E4C 800ACCAC 94A3000C */ lhu $v1, 0xc($a1) -/* B23E50 800ACCB0 00664827 */ nor $t1, $v1, $a2 -.L800ACCB4: -/* B23E54 800ACCB4 55200006 */ bnezl $t1, .L800ACCD0 -/* B23E58 800ACCB8 00675027 */ nor $t2, $v1, $a3 -/* B23E5C 800ACCBC 8E020074 */ lw $v0, 0x74($s0) -/* B23E60 800ACCC0 2C420001 */ sltiu $v0, $v0, 1 -/* B23E64 800ACCC4 AE020074 */ sw $v0, 0x74($s0) -/* B23E68 800ACCC8 94A3000C */ lhu $v1, 0xc($a1) -/* B23E6C 800ACCCC 00675027 */ nor $t2, $v1, $a3 -.L800ACCD0: -/* B23E70 800ACCD0 55400006 */ bnezl $t2, .L800ACCEC -/* B23E74 800ACCD4 00685827 */ nor $t3, $v1, $t0 -/* B23E78 800ACCD8 8E020078 */ lw $v0, 0x78($s0) -/* B23E7C 800ACCDC 2C420001 */ sltiu $v0, $v0, 1 -/* B23E80 800ACCE0 AE020078 */ sw $v0, 0x78($s0) -/* B23E84 800ACCE4 94A3000C */ lhu $v1, 0xc($a1) -/* B23E88 800ACCE8 00685827 */ nor $t3, $v1, $t0 -.L800ACCEC: -/* B23E8C 800ACCEC 55600005 */ bnezl $t3, .L800ACD04 -/* B23E90 800ACCF0 8E0C0068 */ lw $t4, 0x68($s0) -/* B23E94 800ACCF4 8E02007C */ lw $v0, 0x7c($s0) -/* B23E98 800ACCF8 2C420001 */ sltiu $v0, $v0, 1 -/* B23E9C 800ACCFC AE02007C */ sw $v0, 0x7c($s0) -/* B23EA0 800ACD00 8E0C0068 */ lw $t4, 0x68($s0) -.L800ACD04: -/* B23EA4 800ACD04 29810002 */ slti $at, $t4, 2 -/* B23EA8 800ACD08 5420001A */ bnezl $at, .L800ACD74 -/* B23EAC 800ACD0C 8E0B005C */ lw $t3, 0x5c($s0) -/* B23EB0 800ACD10 8E0D005C */ lw $t5, 0x5c($s0) -/* B23EB4 800ACD14 240EFFF0 */ li $t6, -16 -/* B23EB8 800ACD18 2418FFCE */ li $t8, -50 -/* B23EBC 800ACD1C 29A1FFF0 */ slti $at, $t5, -0x10 -/* B23EC0 800ACD20 10200002 */ beqz $at, .L800ACD2C -/* B23EC4 800ACD24 24090010 */ li $t1, 16 -/* B23EC8 800ACD28 AE0E005C */ sw $t6, 0x5c($s0) -.L800ACD2C: -/* B23ECC 800ACD2C 8E0F0064 */ lw $t7, 0x64($s0) -/* B23ED0 800ACD30 29E1FFCE */ slti $at, $t7, -0x32 -/* B23ED4 800ACD34 50200003 */ beql $at, $zero, .L800ACD44 -/* B23ED8 800ACD38 8E190058 */ lw $t9, 0x58($s0) -/* B23EDC 800ACD3C AE180064 */ sw $t8, 0x64($s0) -/* B23EE0 800ACD40 8E190058 */ lw $t9, 0x58($s0) -.L800ACD44: -/* B23EE4 800ACD44 2B210011 */ slti $at, $t9, 0x11 -/* B23EE8 800ACD48 54200003 */ bnezl $at, .L800ACD58 -/* B23EEC 800ACD4C 8E020060 */ lw $v0, 0x60($s0) -/* B23EF0 800ACD50 AE090058 */ sw $t1, 0x58($s0) -/* B23EF4 800ACD54 8E020060 */ lw $v0, 0x60($s0) -.L800ACD58: -/* B23EF8 800ACD58 28410033 */ slti $at, $v0, 0x33 -/* B23EFC 800ACD5C 54200016 */ bnezl $at, .L800ACDB8 -/* B23F00 800ACD60 8E0E0074 */ lw $t6, 0x74($s0) -/* B23F04 800ACD64 24020032 */ li $v0, 50 -/* B23F08 800ACD68 10000012 */ b .L800ACDB4 -/* B23F0C 800ACD6C AE020060 */ sw $v0, 0x60($s0) -/* B23F10 800ACD70 8E0B005C */ lw $t3, 0x5c($s0) -.L800ACD74: -/* B23F14 800ACD74 05630003 */ bgezl $t3, .L800ACD84 -/* B23F18 800ACD78 8E0C0064 */ lw $t4, 0x64($s0) -/* B23F1C 800ACD7C AE00005C */ sw $zero, 0x5c($s0) -/* B23F20 800ACD80 8E0C0064 */ lw $t4, 0x64($s0) -.L800ACD84: -/* B23F24 800ACD84 05830003 */ bgezl $t4, .L800ACD94 -/* B23F28 800ACD88 8E0D0058 */ lw $t5, 0x58($s0) -/* B23F2C 800ACD8C AE000064 */ sw $zero, 0x64($s0) -/* B23F30 800ACD90 8E0D0058 */ lw $t5, 0x58($s0) -.L800ACD94: -/* B23F34 800ACD94 59A00003 */ blezl $t5, .L800ACDA4 -/* B23F38 800ACD98 8E020060 */ lw $v0, 0x60($s0) -/* B23F3C 800ACD9C AE000058 */ sw $zero, 0x58($s0) -/* B23F40 800ACDA0 8E020060 */ lw $v0, 0x60($s0) -.L800ACDA4: -/* B23F44 800ACDA4 58400004 */ blezl $v0, .L800ACDB8 -/* B23F48 800ACDA8 8E0E0074 */ lw $t6, 0x74($s0) -/* B23F4C 800ACDAC AE000060 */ sw $zero, 0x60($s0) -/* B23F50 800ACDB0 00001025 */ move $v0, $zero -.L800ACDB4: -/* B23F54 800ACDB4 8E0E0074 */ lw $t6, 0x74($s0) -.L800ACDB8: -/* B23F58 800ACDB8 8E070070 */ lw $a3, 0x70($s0) -/* B23F5C 800ACDBC 3C068000 */ lui $a2, %hi(osTvType) # $a2, 0x8000 -/* B23F60 800ACDC0 AFAE0010 */ sw $t6, 0x10($sp) -/* B23F64 800ACDC4 8E0F0078 */ lw $t7, 0x78($s0) -/* B23F68 800ACDC8 8CC60300 */ lw $a2, %lo(osTvType)($a2) -/* B23F6C 800ACDCC 02002025 */ move $a0, $s0 -/* B23F70 800ACDD0 AFAF0014 */ sw $t7, 0x14($sp) -/* B23F74 800ACDD4 8E18007C */ lw $t8, 0x7c($s0) -/* B23F78 800ACDD8 2405001C */ li $a1, 28 -/* B23F7C 800ACDDC AFB80018 */ sw $t8, 0x18($sp) -/* B23F80 800ACDE0 8E190054 */ lw $t9, 0x54($s0) -/* B23F84 800ACDE4 AFB9001C */ sw $t9, 0x1c($sp) -/* B23F88 800ACDE8 8E090050 */ lw $t1, 0x50($s0) -/* B23F8C 800ACDEC AFA90020 */ sw $t1, 0x20($sp) -/* B23F90 800ACDF0 8E0A005C */ lw $t2, 0x5c($s0) -/* B23F94 800ACDF4 AFAA0024 */ sw $t2, 0x24($sp) -/* B23F98 800ACDF8 8E0B0058 */ lw $t3, 0x58($s0) -/* B23F9C 800ACDFC AFAB0028 */ sw $t3, 0x28($sp) -/* B23FA0 800ACE00 8E0C0064 */ lw $t4, 0x64($s0) -/* B23FA4 800ACE04 AFA20030 */ sw $v0, 0x30($sp) -/* B23FA8 800ACE08 0C02B0BD */ jal func_800AC2F4 -/* B23FAC 800ACE0C AFAC002C */ sw $t4, 0x2c($sp) -/* B23FB0 800ACE10 02002025 */ move $a0, $s0 -/* B23FB4 800ACE14 0C02B2A6 */ jal func_800ACA98 -/* B23FB8 800ACE18 8E050080 */ lw $a1, 0x80($s0) -/* B23FBC 800ACE1C 8E0D0068 */ lw $t5, 0x68($s0) -/* B23FC0 800ACE20 24010003 */ li $at, 3 -/* B23FC4 800ACE24 3C048001 */ lui $a0, %hi(osViModeNtscLan1) # $a0, 0x8001 -/* B23FC8 800ACE28 15A10007 */ bne $t5, $at, .L800ACE48 -/* B23FCC 800ACE2C 00000000 */ nop -/* B23FD0 800ACE30 0C02B00C */ jal func_800AC030 -/* B23FD4 800ACE34 2484AE00 */ addiu $a0, %lo(osViModeNtscLan1) # addiu $a0, $a0, -0x5200 -/* B23FD8 800ACE38 0C02B00C */ jal func_800AC030 -/* B23FDC 800ACE3C 02002025 */ move $a0, $s0 -/* B23FE0 800ACE40 240E0002 */ li $t6, 2 -/* B23FE4 800ACE44 AE0E0068 */ sw $t6, 0x68($s0) -.L800ACE48: -/* B23FE8 800ACE48 0C02B227 */ jal func_800AC89C -/* B23FEC 800ACE4C 02002025 */ move $a0, $s0 -/* B23FF0 800ACE50 8FBF0044 */ lw $ra, 0x44($sp) -/* B23FF4 800ACE54 8FB00040 */ lw $s0, 0x40($sp) -/* B23FF8 800ACE58 27BD0048 */ addiu $sp, $sp, 0x48 -/* B23FFC 800ACE5C 03E00008 */ jr $ra -/* B24000 800ACE60 00000000 */ nop diff --git a/include/functions.h b/include/functions.h index 3fa6b2ada1..d40ab33381 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1438,14 +1438,17 @@ s32 func_800AB560(View* view); s32 func_800AB944(View* view); s32 func_800AB9EC(View* view, s32 arg1, Gfx** p); s32 func_800ABE74(f32 eyeX, f32 eyeY, f32 eyeZ); -// ? func_800AC030(?); -// ? func_800AC2F4(?); -// ? func_800AC89C(?); -// ? func_800AC9A4(?); -void func_800ACA28(unk_80166528*); -void func_800ACA90(unk_80166528*); -// ? func_800ACA98(?); -void func_800ACAF8(unk_80166528*, Input*, GraphicsContext*); +void ViMode_LogPrint(OSViMode *viMode); +void ViMode_Configure(ViMode *viMode, u32 mode, u32 type, + u32 unk_70, u32 unk_74, u32 unk_78, u32 unk_7C, + s32 width, s32 height, + s32 unk_left, s32 unk_right, s32 unk_top, s32 unk_bottom); +void ViMode_Save(ViMode *viMode); +void ViMode_Load(ViMode *viMode); +void ViMode_Init(ViMode *viMode); +void ViMode_Destroy(ViMode *viMode); +void ViMode_ConfigureFeatures(ViMode *viMode, s32 viFeatures); +void ViMode_Update(ViMode *viMode, Input *input); void func_800ACE70(struct_801664F0* this); void func_800ACE90(struct_801664F0* this); void func_800ACE98(struct_801664F0* this, Gfx** gfxp); diff --git a/include/ultra64/vi.h b/include/ultra64/vi.h index b2a84840ea..507f24e690 100644 --- a/include/ultra64/vi.h +++ b/include/ultra64/vi.h @@ -15,8 +15,13 @@ #define OS_VI_GAMMA_DITHER 0x04 #define OS_VI_DIVOT 0x10 #define OS_VI_DITHER_FILTER 0x10000 -#define OS_VI_UNK200 0x200 +#define OS_VI_UNK1 0x1 +#define OS_VI_UNK2 0x2 +#define OS_VI_UNK40 0x40 #define OS_VI_UNK100 0x100 +#define OS_VI_UNK200 0x200 +#define OS_VI_UNK1000 0x1000 +#define OS_VI_UNK2000 0x2000 typedef struct { /* 0x00 */ u32 ctrl; @@ -92,4 +97,6 @@ typedef struct { #define OS_VI_PAL_HPN2 26 #define OS_VI_PAL_HPF2 27 +#define OS_VI_UNK28 28 + #endif diff --git a/include/z64.h b/include/z64.h index 3e2f68c2c9..c42e876538 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1691,11 +1691,22 @@ typedef struct { } JpegDecoderState; // size = 0x14 typedef struct { - /* 0x0000 */ OSViMode viMode; - /* 0x0050 */ char unk_50[0x30]; + /* 0x0000 */ OSViMode customViMode; + /* 0x0050 */ s32 viHeight; + /* 0x0054 */ s32 viWidth; + /* 0x0058 */ s32 unk_58; // Right adjustment? + /* 0x005c */ s32 unk_5C; // Left adjustment? + /* 0x0060 */ s32 unk_60; // Bottom adjustment? + /* 0x0064 */ s32 unk_64; // Top adjustment? + /* 0x0068 */ s32 viModeBase; // enum: {0, 1, 2, 3} + /* 0x006c */ s32 viTvType; + /* 0x0070 */ u32 unk_70; // bool + /* 0x0074 */ u32 unk_74; // bool + /* 0x0078 */ u32 unk_78; // bool + /* 0x007c */ u32 unk_7C; // bool /* 0x0080 */ u32 viFeatures; - /* 0x0084 */ char unk_84[4]; -} unk_80166528; + /* 0x0084 */ u32 unk_84; +} ViMode; // Vis... typedef struct { diff --git a/src/code/game.c b/src/code/game.c index 3efd822590..ce71375f1e 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -5,7 +5,7 @@ SpeedMeter D_801664D0; struct_801664F0 D_801664F0; struct_80166500 D_80166500; VisMono sMonoColors; -unk_80166528 D_80166528; +ViMode sViMode; FaultClient sGameFaultClient; u16 sLastButtonPressed; @@ -251,9 +251,9 @@ void GameState_Update(GameState* gameState) { gfxCtx->xScale = gViConfigXScale; gfxCtx->yScale = gViConfigYScale; } else if (SREG(48) > 0) { - func_800ACAF8(&D_80166528, gameState->input, gfxCtx); - gfxCtx->viMode = &D_80166528.viMode; - gfxCtx->viFeatures = D_80166528.viFeatures; + ViMode_Update(&sViMode, gameState->input); + gfxCtx->viMode = &sViMode.customViMode; + gfxCtx->viFeatures = sViMode.viFeatures; gfxCtx->xScale = 1.0f; gfxCtx->yScale = 1.0f; } @@ -416,7 +416,7 @@ void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* g func_800AD920(&D_80166500); VisMono_Init(&sMonoColors); if (SREG(48) == 0) { - func_800ACA28(&D_80166528); + ViMode_Init(&sViMode); } SpeedMeter_Init(&D_801664D0); func_800AA0B4(); @@ -448,7 +448,7 @@ void GameState_Destroy(GameState* gameState) { func_800AD950(&D_80166500); VisMono_Destroy(&sMonoColors); if (SREG(48) == 0) { - func_800ACA90(&D_80166528); + ViMode_Destroy(&sViMode); } THA_Dt(&gameState->tha); GameAlloc_Cleanup(&gameState->alloc); diff --git a/src/code/z_vimode.c b/src/code/z_vimode.c index 0dedd07924..31760efd02 100644 --- a/src/code/z_vimode.c +++ b/src/code/z_vimode.c @@ -1,17 +1,326 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800AC030.s") +void ViMode_LogPrint(OSViMode* osViMode) { + LOG_ADDRESS("osvimodep", osViMode, "../z_vimode.c", 87); + LOG_ADDRESS("osvimodep->comRegs.ctrl", osViMode->comRegs.ctrl, "../z_vimode.c", 88); + LOG_ADDRESS("osvimodep->comRegs.width", osViMode->comRegs.width, "../z_vimode.c", 89); + LOG_ADDRESS("osvimodep->comRegs.burst", osViMode->comRegs.burst, "../z_vimode.c", 90); + LOG_ADDRESS("osvimodep->comRegs.vSync", osViMode->comRegs.vSync, "../z_vimode.c", 91); + LOG_ADDRESS("osvimodep->comRegs.hSync", osViMode->comRegs.hSync, "../z_vimode.c", 92); + LOG_ADDRESS("osvimodep->comRegs.leap", osViMode->comRegs.leap, "../z_vimode.c", 93); + LOG_ADDRESS("osvimodep->comRegs.hStart", osViMode->comRegs.hStart, "../z_vimode.c", 94); + LOG_ADDRESS("osvimodep->comRegs.xScale", osViMode->comRegs.xScale, "../z_vimode.c", 95); + LOG_ADDRESS("osvimodep->fldRegs[0].vStart", osViMode->fldRegs[0].vStart, "../z_vimode.c", 96); + LOG_ADDRESS("osvimodep->fldRegs[0].vBurst", osViMode->fldRegs[0].vBurst, "../z_vimode.c", 97); + LOG_ADDRESS("osvimodep->fldRegs[0].origin", osViMode->fldRegs[0].origin, "../z_vimode.c", 98); + LOG_ADDRESS("osvimodep->fldRegs[0].yScale", osViMode->fldRegs[0].yScale, "../z_vimode.c", 99); + LOG_ADDRESS("osvimodep->fldRegs[0].vIntr", osViMode->fldRegs[0].vIntr, "../z_vimode.c", 100); + LOG_ADDRESS("osvimodep->fldRegs[1].vStart", osViMode->fldRegs[1].vStart, "../z_vimode.c", 101); + LOG_ADDRESS("osvimodep->fldRegs[1].vBurst", osViMode->fldRegs[1].vBurst, "../z_vimode.c", 102); + LOG_ADDRESS("osvimodep->fldRegs[1].origin", osViMode->fldRegs[1].origin, "../z_vimode.c", 103); + LOG_ADDRESS("osvimodep->fldRegs[1].yScale", osViMode->fldRegs[1].yScale, "../z_vimode.c", 104); + LOG_ADDRESS("osvimodep->fldRegs[1].vIntr", osViMode->fldRegs[1].vIntr, "../z_vimode.c", 105); +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800AC2F4.s") +#ifdef NON_MATCHING +// This function configures the custom VI mode (`viMode.customViMode`) based +// on the other flags in `viMode`. +void ViMode_Configure(ViMode* viMode, u32 mode, u32 type, u32 unk_70, u32 unk_74, u32 unk_78, u32 unk_7C, s32 width, + s32 height, s32 unk_left, s32 unk_right, s32 unk_top, s32 unk_bottom) { + s32 not_70; + s32 not_74; + s32 not_78; + s32 not_7C; + s32 cond_4C; + s32 cond_48; + s32 cond_44; + s32 cond_40; + s32 cond_3C; + s32 cond_38; + s32 cond_34; + s32 yScaleLo; + s32 yScaleHi0; + s32 yScaleHi1; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800AC89C.s") + not_70 = !unk_70; + not_74 = !unk_74; + not_78 = !unk_78; + not_7C = !unk_7C; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800AC9A4.s") + cond_4C = not_70 && not_78; + cond_48 = not_70 && unk_78; + cond_44 = unk_70 && unk_78; + cond_40 = unk_70 && not_78; + cond_3C = unk_70 && not_74 && unk_78 && unk_7C; + cond_38 = unk_70 && unk_74 && unk_78 && not_7C; + cond_34 = not_70 && unk_74 && unk_78 && not_7C; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800ACA28.s") + unk_top &= ~1; + unk_bottom &= ~1; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800ACA90.s") + yScaleLo = (cond_4C ? 2 : 1) * (((height << 11)) / (SCREEN_HEIGHT * 2 + unk_bottom - unk_top) / (unk_70 ? 1 : 2)); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800ACA98.s") + yScaleHi0 = not_78 ? (cond_40 ? 0x1000000 : 0x2000000) : 0; + yScaleHi1 = not_78 ? (cond_40 ? 0x3000000 : 0x2000000) : 0; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_800ACAF8.s") + viMode->customViMode.type = mode; + viMode->customViMode.comRegs.ctrl = OS_VI_UNK2000 | OS_VI_UNK1000 | OS_VI_GAMMA | OS_VI_GAMMA_DITHER | + (!cond_44 ? OS_VI_UNK40 : 0) | (not_74 ? OS_VI_DIVOT : 0) | + (not_7C ? OS_VI_UNK2 | OS_VI_UNK1 : OS_VI_UNK2); + + if (cond_3C) { + viMode->customViMode.comRegs.ctrl |= 0x100; + } else if (cond_38 | cond_34) { + viMode->customViMode.comRegs.ctrl |= 0x300; + } else if (unk_74) { + viMode->customViMode.comRegs.ctrl |= 0x200; + } else { + viMode->customViMode.comRegs.ctrl |= 0; + } + + viMode->customViMode.comRegs.width = width * (cond_48 ? 2 : 1); + + if (type == 1) { + viMode->customViMode.comRegs.burst = 0x3E52239; + viMode->customViMode.comRegs.vSync = 0x20C; + viMode->customViMode.comRegs.hSync = 0xC15; + viMode->customViMode.comRegs.leap = 0xC150C15; + viMode->customViMode.comRegs.hStart = 0x6C02EC; + viMode->customViMode.fldRegs[0].vStart = 0x2501FF; + viMode->customViMode.fldRegs[0].vBurst = 0xE0204; + } else if (type == 0) { + viMode->customViMode.comRegs.burst = 0x404233A; + viMode->customViMode.comRegs.vSync = 0x270; + viMode->customViMode.comRegs.hSync = 0x150C69; + viMode->customViMode.comRegs.leap = 0xC6F0C6E; + viMode->customViMode.comRegs.hStart = 0x800300; + viMode->customViMode.fldRegs[0].vStart = 0x5F0239; + viMode->customViMode.fldRegs[0].vBurst = 0x9026B; + } else if (type == 2) { + viMode->customViMode.comRegs.burst = 0x4651E39; + viMode->customViMode.comRegs.vSync = 0x20C; + viMode->customViMode.comRegs.hSync = 0xC10; + viMode->customViMode.comRegs.leap = 0xC1C0C1C; + viMode->customViMode.comRegs.hStart = 0x6C02EC; + viMode->customViMode.fldRegs[0].vStart = 0x2501FF; + viMode->customViMode.fldRegs[0].vBurst = 0xE0204; + } + + viMode->customViMode.comRegs.hStart += (unk_left << 16) + (s16)unk_right; + + viMode->customViMode.fldRegs[1].vStart = viMode->customViMode.fldRegs[0].vStart; + viMode->customViMode.fldRegs[0].vStart += (unk_top << 16) + (s16)unk_bottom; + viMode->customViMode.fldRegs[1].vStart += (unk_top << 16) + (s16)unk_bottom; + + viMode->customViMode.fldRegs[1].vBurst = viMode->customViMode.fldRegs[0].vBurst; + + if (cond_44) { + viMode->customViMode.comRegs.vSync++; + if (type == 2) { + viMode->customViMode.comRegs.hSync += 0x40001; + } + if (type == 2) { + viMode->customViMode.comRegs.leap += 0xFFFCFFFE; + } + } else { + viMode->customViMode.fldRegs[0].vStart += 0xFFFDFFFE; + if (type == 2) { + viMode->customViMode.fldRegs[0].vBurst += 0xFFFCFFFE; + } + if (type == 0) { + viMode->customViMode.fldRegs[1].vBurst = 0x2FFFE; + } + } + + viMode->customViMode.comRegs.xScale = (width << 10) / (SCREEN_WIDTH * 2 + unk_right - unk_left); + viMode->customViMode.comRegs.vCurrent = 0; + + viMode->customViMode.fldRegs[0].origin = (unk_7C ? 1 : 2) * width * 2; + viMode->customViMode.fldRegs[1].origin = (unk_70 ? 1 : 2) * ((unk_7C ? 1 : 2) * width * 2); + + viMode->customViMode.fldRegs[0].yScale = yScaleLo | yScaleHi0; + viMode->customViMode.fldRegs[1].yScale = yScaleLo | yScaleHi1; + + viMode->customViMode.fldRegs[0].vIntr = 2; + viMode->customViMode.fldRegs[1].vIntr = 2; +} + +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/ViMode_Configure.s") +#endif + +void ViMode_Save(ViMode* viMode) { + SREG(48) = viMode->viModeBase; + SREG(49) = viMode->viWidth; + SREG(50) = viMode->viHeight; + SREG(51) = viMode->unk_64; + SREG(52) = viMode->unk_60; + SREG(53) = viMode->unk_5C; + SREG(54) = viMode->unk_58; + if (SREG(58) == 1) { + SREG(58) = 0; + switch (SREG(59)) { + case 1: + osSyncPrintf("osViModePalLan1\n"); + ViMode_LogPrint(&osViModePalLan1); + break; + case 2: + osSyncPrintf("osViModeFpalLan1\n"); + ViMode_LogPrint(&osViModeFpalLan1); + break; + default: + osSyncPrintf("Custom\n"); + ViMode_LogPrint(&viMode->customViMode); + break; + } + } +} + +void ViMode_Load(ViMode* viMode) { + if ((SREG(49) & ~3) == 1) { + SREG(49) += 4; + } + + viMode->viModeBase = SREG(48); + viMode->viWidth = SREG(49) & ~3; + viMode->viHeight = SREG(50); + viMode->unk_64 = SREG(51); + viMode->unk_60 = SREG(52); + viMode->unk_5C = SREG(53); + viMode->unk_58 = SREG(54); +} + +void ViMode_Init(ViMode* viMode) { + viMode->viModeBase = 0; + viMode->viWidth = SCREEN_WIDTH; + viMode->viHeight = SCREEN_HEIGHT; + viMode->unk_5C = 0; + viMode->unk_58 = 0; + viMode->unk_64 = 0; + viMode->unk_60 = 0; + viMode->viFeatures = OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF; + viMode->viTvType = osTvType; + viMode->unk_7C = true; + viMode->unk_78 = true; + viMode->unk_74 = false; + viMode->unk_70 = true; + + ViMode_Save(viMode); +} + +void ViMode_Destroy(ViMode* viMode) { +} + +void ViMode_ConfigureFeatures(ViMode* viMode, s32 viFeatures) { + u32 ctrl = viMode->customViMode.comRegs.ctrl; + if (viFeatures & OS_VI_GAMMA_ON) { + ctrl |= OS_VI_GAMMA; + } + if (viFeatures & OS_VI_GAMMA_OFF) { + ctrl &= ~OS_VI_GAMMA; + } + if (viFeatures & OS_VI_GAMMA_DITHER_ON) { + ctrl |= OS_VI_GAMMA_DITHER; + } + if (viFeatures & OS_VI_GAMMA_DITHER_OFF) { + ctrl &= ~OS_VI_GAMMA_DITHER; + } + if (viFeatures & OS_VI_DIVOT_ON) { + ctrl |= OS_VI_DIVOT; + } + if (viFeatures & OS_VI_DIVOT_OFF) { + ctrl &= ~OS_VI_DIVOT; + } + viMode->customViMode.comRegs.ctrl = ctrl; +} + +// This function uses controller input (C buttons + D pad) to reconfigure the custom VI mode +void ViMode_Update(ViMode* viMode, Input* input) { + ViMode_Load(viMode); + if ((viMode->viModeBase == 1) || (viMode->viModeBase == 2) || (viMode->viModeBase == 3)) { + gScreenWidth = viMode->viWidth; + gScreenHeight = viMode->viHeight; + if (CHECK_BTN_ALL(input->cur.button, BTN_START | BTN_CUP | BTN_CRIGHT)) { + ViMode_Init(viMode); + } + if (CHECK_BTN_ALL(input->cur.button, BTN_CUP)) { + if (CHECK_BTN_ALL(input->cur.button, BTN_DUP)) { + viMode->unk_64--; + } + if (CHECK_BTN_ALL(input->cur.button, BTN_DDOWN)) { + viMode->unk_64++; + } + if (CHECK_BTN_ALL(input->cur.button, BTN_DLEFT)) { + viMode->unk_5C--; + } + if (CHECK_BTN_ALL(input->cur.button, BTN_DRIGHT)) { + viMode->unk_5C++; + } + } + if (CHECK_BTN_ALL(input->cur.button, BTN_CRIGHT)) { + if (CHECK_BTN_ALL(input->cur.button, BTN_DUP)) { + viMode->unk_60--; + } + if (CHECK_BTN_ALL(input->cur.button, BTN_DDOWN)) { + viMode->unk_60++; + } + if (CHECK_BTN_ALL(input->cur.button, BTN_DLEFT)) { + viMode->unk_58--; + } + if (CHECK_BTN_ALL(input->cur.button, BTN_DRIGHT)) { + viMode->unk_58++; + } + } + if (CHECK_BTN_ALL(input->cur.button, BTN_CDOWN)) { + if (CHECK_BTN_ALL(input->press.button, BTN_DUP)) { + viMode->unk_70 = !viMode->unk_70; + } + if (CHECK_BTN_ALL(input->press.button, BTN_DDOWN)) { + viMode->unk_74 = !viMode->unk_74; + } + if (CHECK_BTN_ALL(input->press.button, BTN_DLEFT)) { + viMode->unk_78 = !viMode->unk_78; + } + if (CHECK_BTN_ALL(input->press.button, BTN_DRIGHT)) { + viMode->unk_7C = !viMode->unk_7C; + } + } + if (viMode->viModeBase >= 2) { + if (viMode->unk_5C < -16) { + viMode->unk_5C = -16; + } + if (viMode->unk_64 < -50) { + viMode->unk_64 = -50; + } + if (viMode->unk_58 > 16) { + viMode->unk_58 = 16; + } + if (viMode->unk_60 > 50) { + viMode->unk_60 = 50; + } + } else { + if (viMode->unk_5C < 0) { + viMode->unk_5C = 0; + } + if (viMode->unk_64 < 0) { + viMode->unk_64 = 0; + } + if (viMode->unk_58 > 0) { + viMode->unk_58 = 0; + } + if (viMode->unk_60 > 0) { + viMode->unk_60 = 0; + } + } + ViMode_Configure(viMode, OS_VI_UNK28, osTvType, viMode->unk_70, viMode->unk_74, viMode->unk_78, viMode->unk_7C, + viMode->viWidth, viMode->viHeight, viMode->unk_5C, viMode->unk_58, viMode->unk_64, + viMode->unk_60); + ViMode_ConfigureFeatures(viMode, viMode->viFeatures); + if (viMode->viModeBase == 3) { + ViMode_LogPrint(&osViModeNtscLan1); + ViMode_LogPrint(&viMode->customViMode); + viMode->viModeBase = 2; + } + } + ViMode_Save(viMode); +} diff --git a/tools/regconvert.py b/tools/regconvert.py index 287cc13720..48132422dc 100755 --- a/tools/regconvert.py +++ b/tools/regconvert.py @@ -54,7 +54,7 @@ def check_valid_index(index): return 0x0 <= index <= 0xADF def check_valid_offset(offset): - return 0x14 <= index <= 0x15D2 + return 0x14 <= offset <= 0x15D2 def main(): parser = argparse.ArgumentParser(description="Converts a gGameInfo->data index to a REG macro.")