pal-beta, pal-final and jpn-final: Decompile langTick

This commit is contained in:
Ryan Dwyer 2022-03-19 10:03:18 +10:00
parent 380de566da
commit a6b5df2659
21 changed files with 94 additions and 233 deletions

View File

@ -69,7 +69,7 @@
build/ROMID/game/activemenu/tick.o (section); \
build/ROMID/game/game_01bea0.o (section); \
build/ROMID/game/weather/tick.o (section); \
build/ROMID/game/game_01d860.o (section); \
build/ROMID/game/langtick.o (section); \
build/ROMID/game/game_01d8c0.o (section); \
build/ROMID/game/game_01d990.o (section); \
build/ROMID/game/casing/tick.o (section); \

View File

@ -69,7 +69,7 @@
build/ROMID/game/activemenu/tick.o (section); \
build/ROMID/game/game_01bea0.o (section); \
build/ROMID/game/weather/tick.o (section); \
build/ROMID/game/game_01d860.o (section); \
build/ROMID/game/langtick.o (section); \
build/ROMID/game/game_01d8c0.o (section); \
build/ROMID/game/game_01d990.o (section); \
build/ROMID/game/casing/tick.o (section); \

View File

@ -69,7 +69,7 @@
build/ROMID/game/activemenu/tick.o (section); \
build/ROMID/game/game_01bea0.o (section); \
build/ROMID/game/weather/tick.o (section); \
build/ROMID/game/game_01d860.o (section); \
build/ROMID/game/langtick.o (section); \
build/ROMID/game/game_01d8c0.o (section); \
build/ROMID/game/game_01d990.o (section); \
build/ROMID/game/casing/tick.o (section); \

View File

@ -69,7 +69,7 @@
build/ROMID/game/activemenu/tick.o (section); \
build/ROMID/game/game_01bea0.o (section); \
build/ROMID/game/weather/tick.o (section); \
build/ROMID/game/game_01d860.o (section); \
build/ROMID/game/langtick.o (section); \
build/ROMID/game/game_01d8c0.o (section); \
build/ROMID/game/game_01d990.o (section); \
build/ROMID/game/casing/tick.o (section); \

View File

@ -69,7 +69,7 @@
build/ROMID/game/activemenu/tick.o (section); \
build/ROMID/game/game_01bea0.o (section); \
build/ROMID/game/weather/tick.o (section); \
build/ROMID/game/game_01d860.o (section); \
build/ROMID/game/langtick.o (section); \
build/ROMID/game/game_01d8c0.o (section); \
build/ROMID/game/game_01d990.o (section); \
build/ROMID/game/casing/tick.o (section); \

View File

@ -40,7 +40,7 @@ bool bossfileLoadFull(void)
bossfileLoad();
#if VERSION >= VERSION_PAL_BETA
lang0f16f75c(g_Vars.unk000482);
langSetEuropean(g_Vars.unk000482);
#endif
return true;

View File

@ -53,22 +53,6 @@ s16 *g_Chrnums;
s16 *g_ChrIndexes;
struct chrdata *g_CurModelChr;
u8 g_FileState = 0;
u8 var80062944 = 0;
u8 var80062948 = 0;
u8 var8006294c = 0;
u32 var80062950 = 100;
bool g_WeatherTickEnabled = true;
u32 var80062958 = 0x00000000;
u32 var8006295c = 0x00000000;
#if VERSION >= VERSION_PAL_BETA
u32 var80062640pf = 99;
u32 var80062644pf = 0;
u32 var80062648pf = 0;
u32 var8006264cpf = 0;
#endif
struct var80062960 *var80062960 = NULL;
s32 var80062964 = 0;
f32 var80062968 = 0;

View File

@ -72,7 +72,7 @@ glabel func0f1088d0pf
/* f1088e8: 3c02800a */ lui $v0,0x800a
/* f1088ec: 2442a510 */ addiu $v0,$v0,-23280
/* f1088f0: a44e0482 */ sh $t6,0x482($v0)
/* f1088f4: 0fc5bdd7 */ jal lang0f16f75c
/* f1088f4: 0fc5bdd7 */ jal langSetEuropean
/* f1088f8: 31c4ffff */ andi $a0,$t6,0xffff
/* f1088fc: 0fc3cf8c */ jal menuPopDialog
/* f108900: 00000000 */ nop
@ -95,7 +95,7 @@ glabel func0f1088d0pf
/* f108648: 3c02800a */ lui $v0,0x800a
/* f10864c: 2442e4d0 */ addiu $v0,$v0,-6960
/* f108650: a44e0482 */ sh $t6,0x482($v0)
/* f108654: 0fc5c097 */ jal lang0f16f75c
/* f108654: 0fc5c097 */ jal langSetEuropean
/* f108658: 31c4ffff */ andi $a0,$t6,0xffff
/* f10865c: 0fc3cf12 */ jal menuPopDialog
/* f108660: 00000000 */ nop

View File

@ -5,6 +5,8 @@
#include "data.h"
#include "types.h"
u8 *g_FrameBuffers[2];
#if VERSION >= VERSION_JPN_FINAL
GLOBAL_ASM(
glabel func0f000000

View File

@ -28,6 +28,11 @@
#include "data.h"
#include "types.h"
u8 g_FileState = 0;
u8 var80062944 = 0;
u8 var80062948 = 0;
u8 var8006294c = 0;
const char var7f1a85b0[] = "lvup: %d\n";
const char var7f1a85bc[] = "file id %x-%x";
const char var7f1a85cc[] = " ticking: ";

View File

@ -1,185 +0,0 @@
#include <ultra64.h>
#include "constants.h"
#include "game/game_1668e0.h"
#include "bss.h"
#include "data.h"
#include "types.h"
#if VERSION >= VERSION_JPN_FINAL
const char var7f1a9240jf[] = "jap";
GLOBAL_ASM(
glabel func0f01d860
/* f01ea20: 27bdffe8 */ addiu $sp,$sp,-24
/* f01ea24: afbf0014 */ sw $ra,0x14($sp)
/* f01ea28: 3c01800a */ lui $at,0x800a
/* f01ea2c: 3c047f1b */ lui $a0,0x7f1b
/* f01ea30: 3c058006 */ lui $a1,0x8006
/* f01ea34: ac20d370 */ sw $zero,-0x2c90($at)
/* f01ea38: 24a528a0 */ addiu $a1,$a1,0x28a0
/* f01ea3c: 0c0036b4 */ jal mainOverrideVariable
/* f01ea40: 24849240 */ addiu $a0,$a0,-28096
/* f01ea44: 3c048006 */ lui $a0,0x8006
/* f01ea48: 8c8428a0 */ lw $a0,0x28a0($a0)
/* f01ea4c: 2c810002 */ sltiu $at,$a0,0x2
/* f01ea50: 10200006 */ beqz $at,.JF0f01ea6c
/* f01ea54: 00000000 */ nop
/* f01ea58: 0fc5bb09 */ jal langSetJpnEnabled
/* f01ea5c: 00000000 */ nop
/* f01ea60: 240e0063 */ li $t6,0x63
/* f01ea64: 3c018006 */ lui $at,0x8006
/* f01ea68: ac2e28a0 */ sw $t6,0x28a0($at)
.JF0f01ea6c:
/* f01ea6c: 3c06800a */ lui $a2,0x800a
/* f01ea70: 8cc6d140 */ lw $a2,-0x2ec0($a2)
/* f01ea74: 00001825 */ move $v1,$zero
/* f01ea78: 00002025 */ move $a0,$zero
/* f01ea7c: 18c00013 */ blez $a2,.JF0f01eacc
/* f01ea80: 3c07800b */ lui $a3,0x800b
/* f01ea84: 24e7b5a8 */ addiu $a3,$a3,-19032
.JF0f01ea88:
/* f01ea88: 8cef0000 */ lw $t7,0x0($a3)
/* f01ea8c: 24630001 */ addiu $v1,$v1,0x1
/* f01ea90: 01e41021 */ addu $v0,$t7,$a0
/* f01ea94: 94450000 */ lhu $a1,0x0($v0)
/* f01ea98: 0005c382 */ srl $t8,$a1,0xe
/* f01ea9c: 13000008 */ beqz $t8,.JF0f01eac0
/* f01eaa0: 2719ffff */ addiu $t9,$t8,-1
/* f01eaa4: 904a0000 */ lbu $t2,0x0($v0)
/* f01eaa8: 00194980 */ sll $t1,$t9,0x6
/* f01eaac: 3c06800a */ lui $a2,0x800a
/* f01eab0: 314bff3f */ andi $t3,$t2,0xff3f
/* f01eab4: 012b6025 */ or $t4,$t1,$t3
/* f01eab8: a04c0000 */ sb $t4,0x0($v0)
/* f01eabc: 8cc6d140 */ lw $a2,-0x2ec0($a2)
.JF0f01eac0:
/* f01eac0: 0066082a */ slt $at,$v1,$a2
/* f01eac4: 1420fff0 */ bnez $at,.JF0f01ea88
/* f01eac8: 24840002 */ addiu $a0,$a0,0x2
.JF0f01eacc:
/* f01eacc: 8fbf0014 */ lw $ra,0x14($sp)
/* f01ead0: 27bd0018 */ addiu $sp,$sp,0x18
/* f01ead4: 03e00008 */ jr $ra
/* f01ead8: 00000000 */ nop
/* f01eadc: 00000000 */ nop
);
#elif VERSION >= VERSION_PAL_FINAL
const char var7f1a9880pf[] = "language";
GLOBAL_ASM(
glabel func0f01d860
/* f01d930: 27bdffe8 */ addiu $sp,$sp,-24
/* f01d934: afbf0014 */ sw $ra,0x14($sp)
/* f01d938: 3c047f1b */ lui $a0,0x7f1b
/* f01d93c: 3c058006 */ lui $a1,0x8006
/* f01d940: 24a52630 */ addiu $a1,$a1,0x2630
/* f01d944: 0c003624 */ jal mainOverrideVariable
/* f01d948: 24849880 */ addiu $a0,$a0,-26496
/* f01d94c: 3c048006 */ lui $a0,0x8006
/* f01d950: 8c842630 */ lw $a0,0x2630($a0)
/* f01d954: 2c810005 */ sltiu $at,$a0,0x5
/* f01d958: 10200006 */ beqz $at,.PF0f01d974
/* f01d95c: 00000000 */ nop
/* f01d960: 0fc5bdd7 */ jal lang0f16f75c
/* f01d964: 00000000 */ nop
/* f01d968: 240e0063 */ li $t6,0x63
/* f01d96c: 3c018006 */ lui $at,0x8006
/* f01d970: ac2e2630 */ sw $t6,0x2630($at)
.PF0f01d974:
/* f01d974: 3c0f8008 */ lui $t7,0x8008
/* f01d978: 8def4660 */ lw $t7,0x4660($t7)
/* f01d97c: 00001025 */ move $v0,$zero
/* f01d980: 240600f8 */ li $a2,0xf8
/* f01d984: 11e00011 */ beqz $t7,.PF0f01d9cc
/* f01d988: 3c05800b */ lui $a1,0x800b
/* f01d98c: 24a5b158 */ addiu $a1,$a1,-20136
/* f01d990: 8cb80000 */ lw $t8,0x0($a1)
.PF0f01d994:
/* f01d994: 03021821 */ addu $v1,$t8,$v0
/* f01d998: 94640000 */ lhu $a0,0x0($v1)
/* f01d99c: 24420002 */ addiu $v0,$v0,0x2
/* f01d9a0: 0004cb82 */ srl $t9,$a0,0xe
/* f01d9a4: 13200007 */ beqz $t9,.PF0f01d9c4
/* f01d9a8: 00000000 */ nop
/* f01d9ac: 906b0000 */ lbu $t3,0x0($v1)
/* f01d9b0: 2728ffff */ addiu $t0,$t9,-1
/* f01d9b4: 00085180 */ sll $t2,$t0,0x6
/* f01d9b8: 316cff3f */ andi $t4,$t3,0xff3f
/* f01d9bc: 014c6825 */ or $t5,$t2,$t4
/* f01d9c0: a06d0000 */ sb $t5,0x0($v1)
.PF0f01d9c4:
/* f01d9c4: 5446fff3 */ bnel $v0,$a2,.PF0f01d994
/* f01d9c8: 8cb80000 */ lw $t8,0x0($a1)
.PF0f01d9cc:
/* f01d9cc: 8fbf0014 */ lw $ra,0x14($sp)
/* f01d9d0: 27bd0018 */ addiu $sp,$sp,0x18
/* f01d9d4: 03e00008 */ jr $ra
/* f01d9d8: 00000000 */ nop
);
#elif VERSION >= VERSION_PAL_BETA
const char var7f1aa330[] = "language";
GLOBAL_ASM(
glabel func0f01d860
/* f01d8d0: 27bdffe8 */ addiu $sp,$sp,-24
/* f01d8d4: afbf0014 */ sw $ra,0x14($sp)
/* f01d8d8: 3c047f1b */ lui $a0,0x7f1b
/* f01d8dc: 3c058006 */ lui $a1,0x8006
/* f01d8e0: 24a54020 */ addiu $a1,$a1,0x4020
/* f01d8e4: 0c003648 */ jal mainOverrideVariable
/* f01d8e8: 2484a330 */ addiu $a0,$a0,-23760
/* f01d8ec: 3c048006 */ lui $a0,0x8006
/* f01d8f0: 8c844020 */ lw $a0,0x4020($a0)
/* f01d8f4: 2c810005 */ sltiu $at,$a0,0x5
/* f01d8f8: 10200006 */ beqz $at,.PB0f01d914
/* f01d8fc: 00000000 */ nop
/* f01d900: 0fc5c097 */ jal lang0f16f75c
/* f01d904: 00000000 */ nop
/* f01d908: 240e0063 */ li $t6,0x63
/* f01d90c: 3c018006 */ lui $at,0x8006
/* f01d910: ac2e4020 */ sw $t6,0x4020($at)
.PB0f01d914:
/* f01d914: 3c0f8008 */ lui $t7,0x8008
/* f01d918: 8def65f0 */ lw $t7,0x65f0($t7)
/* f01d91c: 00001025 */ move $v0,$zero
/* f01d920: 240600f8 */ li $a2,0xf8
/* f01d924: 11e00011 */ beqz $t7,.PB0f01d96c
/* f01d928: 3c05800b */ lui $a1,0x800b
/* f01d92c: 24a5f1d8 */ addiu $a1,$a1,-3624
/* f01d930: 8cb80000 */ lw $t8,0x0($a1)
.PB0f01d934:
/* f01d934: 03021821 */ addu $v1,$t8,$v0
/* f01d938: 94640000 */ lhu $a0,0x0($v1)
/* f01d93c: 24420002 */ addiu $v0,$v0,0x2
/* f01d940: 0004cb82 */ srl $t9,$a0,0xe
/* f01d944: 13200007 */ beqz $t9,.PB0f01d964
/* f01d948: 00000000 */ nop
/* f01d94c: 906b0000 */ lbu $t3,0x0($v1)
/* f01d950: 2728ffff */ addiu $t0,$t9,-1
/* f01d954: 00085180 */ sll $t2,$t0,0x6
/* f01d958: 316cff3f */ andi $t4,$t3,0xff3f
/* f01d95c: 014c6825 */ or $t5,$t2,$t4
/* f01d960: a06d0000 */ sb $t5,0x0($v1)
.PB0f01d964:
/* f01d964: 5446fff3 */ bnel $v0,$a2,.PB0f01d934
/* f01d968: 8cb80000 */ lw $t8,0x0($a1)
.PB0f01d96c:
/* f01d96c: 8fbf0014 */ lw $ra,0x14($sp)
/* f01d970: 27bd0018 */ addiu $sp,$sp,0x18
/* f01d974: 03e00008 */ jr $ra
/* f01d978: 00000000 */ nop
);
#else
void func0f01d860(void)
{
s32 i;
if (g_Jpn) {
for (i = 0; i != 124; i++) {
if (var800aabb8[i].unk00_00) {
var800aabb8[i].unk00_00--;
}
}
}
}
#endif

View File

@ -134,7 +134,7 @@ void gamefileApplyOptions(struct gamefile *file)
g_Vars.unk000482 |= 0x04;
}
lang0f16f75c(g_Vars.unk000482);
langSetEuropean(g_Vars.unk000482);
#endif
}

View File

@ -719,7 +719,7 @@ void lang0f16f6ecpf(void)
#endif
#if VERSION >= VERSION_PAL_BETA
void lang0f16f75c(u32 arg0)
void langSetEuropean(u32 arg0)
{
u8 teams;
bool hasoptionslang = false;

61
src/game/langtick.c Normal file
View File

@ -0,0 +1,61 @@
#include <ultra64.h>
#include "constants.h"
#include "game/game_1668e0.h"
#include "bss.h"
#include "data.h"
#include "types.h"
#if VERSION == VERSION_JPN_FINAL
s32 var8009d370jf;
#endif
extern s32 var8009d140jf;
void langTick(void)
{
s32 i;
#if VERSION == VERSION_JPN_FINAL
static u32 language = 99;
var8009d370jf = 0;
mainOverrideVariable("jap", &language);
if (language < 2) {
langSetJpnEnabled(language);
language = 99;
}
for (i = 0; i < var8009d140jf; i++) {
if (var800aabb8[i].unk00_00) {
var800aabb8[i].unk00_00--;
}
}
#elif VERSION >= VERSION_PAL_BETA
static u32 language = 99;
mainOverrideVariable("language", &language);
if (language < 5) {
langSetEuropean(language);
language = 99;
}
if (g_Jpn) {
for (i = 0; i != 124; i++) {
if (var800aabb8[i].unk00_00) {
var800aabb8[i].unk00_00--;
}
}
}
#else
if (g_Jpn) {
for (i = 0; i != 124; i++) {
if (var800aabb8[i].unk00_00) {
var800aabb8[i].unk00_00--;
}
}
}
#endif
}

View File

@ -47,7 +47,6 @@
#include "game/game_01b0a0.h"
#include "game/game_01bea0.h"
#include "game/weather/tick.h"
#include "game/game_01d860.h"
#include "game/game_01d990.h"
#include "game/chr/chr.h"
#include "game/prop.h"
@ -4632,7 +4631,7 @@ void lvTick(void)
if (g_Vars.stagenum == STAGE_TITLE) {
titleTick();
func0f01d860();
langTick();
musicTick();
} else if (g_Vars.stagenum == STAGE_BOOTPAKMENU) {
setCurrentPlayerNum(0);
@ -4641,16 +4640,16 @@ void lvTick(void)
#endif
menuTick();
musicTick();
func0f01d860();
langTick();
pakExecuteDebugOperations();
} else if (g_Vars.stagenum == STAGE_4MBMENU) {
menuTick();
musicTick();
func0f01d860();
langTick();
pakExecuteDebugOperations();
} else if (g_Vars.stagenum == STAGE_CREDITS) {
musicTick();
func0f01d860();
langTick();
} else {
lvUpdateCutsceneTime();
vtxstoreTick();
@ -4686,7 +4685,7 @@ void lvTick(void)
}
musicTick();
func0f01d860();
langTick();
propsTickPadEffects();
if (mainGetStageNum() == STAGE_CITRAINING) {

View File

@ -310,7 +310,7 @@ glabel func0f1030e4pf
/* f10316c: 3c02800a */ lui $v0,0x800a
/* f103170: 2442a510 */ addiu $v0,$v0,-23280
/* f103174: a44c0482 */ sh $t4,0x482($v0)
/* f103178: 0fc5bdd7 */ jal lang0f16f75c
/* f103178: 0fc5bdd7 */ jal langSetEuropean
/* f10317c: 3184ffff */ andi $a0,$t4,0xffff
/* f103180: 3c02800a */ lui $v0,0x800a
/* f103184: 2442a510 */ addiu $v0,$v0,-23280
@ -379,7 +379,7 @@ glabel func0f1030e4pf
/* f102ed4: 3c02800a */ lui $v0,0x800a
/* f102ed8: 2442e4d0 */ addiu $v0,$v0,-6960
/* f102edc: a44c0482 */ sh $t4,0x482($v0)
/* f102ee0: 0fc5c097 */ jal lang0f16f75c
/* f102ee0: 0fc5c097 */ jal langSetEuropean
/* f102ee4: 3184ffff */ andi $a0,$t4,0xffff
/* f102ee8: 3c02800a */ lui $v0,0x800a
/* f102eec: 2442e4d0 */ addiu $v0,$v0,-6960

View File

@ -36,7 +36,7 @@ u32 *var8009ccb0[2];
u32 var8009ccb8;
#if VERSION == VERSION_JPN_FINAL
u8 jpnfill[0x30];
u8 jpnfill[0x20];
#endif
s16 g_TitleViewHeight = 480;

View File

@ -6,6 +6,9 @@
#include "data.h"
#include "types.h"
u32 var80062950 = 100;
bool g_WeatherTickEnabled = true;
void weatherTick(void)
{
if (!g_WeatherData

View File

@ -1,9 +0,0 @@
#ifndef IN_GAME_GAME_01D860_H
#define IN_GAME_GAME_01D860_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
void func0f01d860(void);
#endif

View File

@ -4,6 +4,8 @@
#include "data.h"
#include "types.h"
void langTick(void);
u32 langGetLangBankIndexFromStagenum(s32 stagenum);
u32 func0f16e3fc(void);
s32 langGetFileNumOffset(void);
@ -12,6 +14,6 @@ void langSetBankSimple(s32 bank);
void langSetBank(s32 bank, u8 *arg1, s32 arg2);
void langClearBank(s32 bank);
char *langGet(s32 textid);
void lang0f16f75c(u32 arg0);
void langSetEuropean(u32 arg0);
#endif

View File

@ -6,13 +6,12 @@
OSPifRam __osEepPifRam;
#if VERSION >= VERSION_JPN_FINAL
u32 var8009d010pf[8];
u32 var8009d010pf[4];
s32 var8009d140jf;
#elif VERSION >= VERSION_PAL_BETA
u32 var8009d010pf[4];
#endif
u8 *g_FrameBuffers[2];
void __osPackEepReadData(u8 address);
s32 osEepromRead(OSMesgQueue *mq, u8 address, u8 *buffer)