mirror of https://github.com/zeldaret/tmc.git
Merge branch 'master' into demo-jp
This commit is contained in:
commit
fdeca80fc3
|
@ -1,174 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
.ifdef DEMO_USA
|
||||
thumb_func_start sub_0807CA18
|
||||
sub_0807CA18:
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r4, _0807CA38 @ =0x02002A40
|
||||
ldrh r1, [r4, #0x00]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0x01
|
||||
cmp r1, r0
|
||||
beq _0807C9BA
|
||||
movs r2, #0x00
|
||||
strb r2, [r4, #0x00]
|
||||
movs r3, #0x01
|
||||
strb r3, [r4, #0x01]
|
||||
strb r3, [r4, #0x08]
|
||||
adds r1, r4, #0x0
|
||||
adds r1, #0xAA
|
||||
movs r0, #0x18
|
||||
strb r0, [r1, #0x00]
|
||||
adds r1, #0x01
|
||||
strb r0, [r1, #0x00]
|
||||
subs r1, #0x23
|
||||
movs r0, #0x22
|
||||
strb r0, [r1, #0x00]
|
||||
adds r1, #0x01
|
||||
movs r0, #0x15
|
||||
strb r0, [r1, #0x00]
|
||||
adds r0, r4, #0x0
|
||||
adds r0, #0x8A
|
||||
strb r2, [r0, #0x00]
|
||||
adds r0, #0x01
|
||||
strb r2, [r0, #0x00]
|
||||
adds r0, #0x05
|
||||
strb r3, [r0, #0x00]
|
||||
adds r1, #0x03
|
||||
movs r0, #0x90
|
||||
strh r0, [r1, #0x00]
|
||||
adds r1, #0x02
|
||||
movs r0, #0x38
|
||||
strh r0, [r1, #0x00]
|
||||
_0807C9BA:
|
||||
adds r5, r4, #0x0
|
||||
adds r5, #0x80
|
||||
ldrb r0, [r5, #0x00]
|
||||
cmp r0, #0x00
|
||||
bne _0807C9CE
|
||||
ldr r0, _0807CA3C @ =0x0811DFF4
|
||||
adds r1, r5, #0x0
|
||||
movs r2, #0x05
|
||||
bl MemCopy
|
||||
_0807C9CE:
|
||||
ldr r1, _0807CA40 @ =0x0811EF10
|
||||
movs r6, #0x80
|
||||
lsls r6, r6, #0x12
|
||||
ldrb r0, [r6, #0x04]
|
||||
lsls r0, r0, #0x02
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0, #0x00]
|
||||
ldr r2, _0807CA44 @ =0x000004B4
|
||||
adds r1, r4, #0x0
|
||||
bl MemCopy
|
||||
ldrb r0, [r6, #0x07]
|
||||
adds r2, r0, #0x0
|
||||
cmp r2, #0x00
|
||||
bne _0807CA04
|
||||
movs r0, #0x97
|
||||
strb r0, [r5, #0x00]
|
||||
adds r1, r4, #0x0
|
||||
adds r1, #0x81
|
||||
movs r0, #0x7F
|
||||
strb r0, [r1, #0x00]
|
||||
adds r1, #0x01
|
||||
movs r0, #0xDD
|
||||
strb r0, [r1, #0x00]
|
||||
adds r0, r4, #0x0
|
||||
adds r0, #0x83
|
||||
strb r2, [r0, #0x00]
|
||||
_0807CA04:
|
||||
movs r0, #0xA0
|
||||
bl ModHealth
|
||||
ldr r0, _0807CA48 @ =0xFFFFD8F1
|
||||
bl ModRupees
|
||||
ldr r0, _0807CA4C @ =0x02000010
|
||||
ldrb r1, [r0, #0x07]
|
||||
lsls r0, r1, #0x01
|
||||
adds r0, r0, r1
|
||||
ldr r1, _0807CA50 @ =0x0811DFF9
|
||||
adds r0, r0, r1
|
||||
movs r1, #0x95
|
||||
lsls r1, r1, #0x03
|
||||
adds r2, r4, r1
|
||||
ldrb r1, [r6, #0x04]
|
||||
adds r0, r0, r1
|
||||
ldrb r1, [r0, #0x00]
|
||||
lsls r0, r1, #0x03
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #0x05
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #0x04
|
||||
str r0, [r2, #0x00]
|
||||
movs r0, #0x01
|
||||
pop {r4, r5, r6, pc}
|
||||
_0807CA38: .4byte gSave
|
||||
_0807CA3C: .4byte gUnk_0811E470
|
||||
_0807CA40: .4byte demoPointers
|
||||
_0807CA44: .4byte 0x000004B4
|
||||
_0807CA48: .4byte 0xFFFFD8F1
|
||||
_0807CA4C: .4byte gUnk_02000010
|
||||
_0807CA50: .4byte demoUnknown1
|
||||
.else
|
||||
thumb_func_start sub_0807CA18
|
||||
sub_0807CA18: @ 0x0807CA18
|
||||
push {lr}
|
||||
ldr r0, _0807CA7C @ =gSave
|
||||
mov ip, r0
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
cmp r1, r0
|
||||
beq _0807CA66
|
||||
movs r2, #0
|
||||
mov r0, ip
|
||||
strb r2, [r0]
|
||||
movs r3, #1
|
||||
strb r3, [r0, #1]
|
||||
strb r3, [r0, #8]
|
||||
mov r1, ip
|
||||
adds r1, #0xaa
|
||||
movs r0, #0x18
|
||||
strb r0, [r1]
|
||||
adds r1, #1
|
||||
strb r0, [r1]
|
||||
subs r1, #0x23
|
||||
movs r0, #0x22
|
||||
strb r0, [r1]
|
||||
adds r1, #1
|
||||
movs r0, #0x15
|
||||
strb r0, [r1]
|
||||
mov r0, ip
|
||||
adds r0, #0x8a
|
||||
strb r2, [r0]
|
||||
adds r0, #1
|
||||
strb r2, [r0]
|
||||
adds r0, #5
|
||||
strb r3, [r0]
|
||||
adds r1, #3
|
||||
movs r0, #0x90
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
movs r0, #0x38
|
||||
strh r0, [r1]
|
||||
_0807CA66:
|
||||
mov r1, ip
|
||||
adds r1, #0x80
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _0807CA78
|
||||
ldr r0, _0807CA80 @ =gUnk_0811E470
|
||||
movs r2, #5
|
||||
bl MemCopy
|
||||
_0807CA78:
|
||||
movs r0, #1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0807CA7C: .4byte gSave
|
||||
_0807CA80: .4byte gUnk_0811E470
|
||||
.endif
|
|
@ -22,7 +22,8 @@ typedef enum {
|
|||
extern SaveResult HandleSave(u32 arg0);
|
||||
|
||||
typedef struct {
|
||||
/*0x000*/ u8 filler0[0x2];
|
||||
/*0x000*/ u8 unk_00;
|
||||
/*0x000*/ u8 unk_01;
|
||||
/*0x002*/ u8 messageSpeed;
|
||||
/*0x003*/ u8 brightnessPref;
|
||||
/*0x004*/ u8 filler4[0x2];
|
||||
|
@ -35,14 +36,24 @@ typedef struct {
|
|||
/*0x050*/ u32 unk50;
|
||||
/*0x054*/ u8 filler54[0x2C];
|
||||
/*0x080*/ u8 playerName[FILENAME_LENGTH];
|
||||
/*0x086*/ u8 filler86[0x22];
|
||||
/*0x086*/ u8 filler86[0x2];
|
||||
/*0x088*/ u8 unk_88;
|
||||
/*0x089*/ u8 unk_89;
|
||||
/*0x08A*/ u8 unk_8A;
|
||||
/*0x08B*/ u8 unk_8B;
|
||||
/*0x08C*/ u16 unk_8C;
|
||||
/*0x08E*/ u16 unk_8E;
|
||||
/*0x08F*/ u8 unk_8F;
|
||||
/*0x090*/ u8 filler91[0x15];
|
||||
/*0x0A8*/ Stats stats;
|
||||
/*0x0D0*/ u8 fillerD0[0x71];
|
||||
/*0x141*/ u8 unk141[0x34f];
|
||||
/*0x490*/ u32 unk490;
|
||||
/*0x494*/ u32 unk494;
|
||||
/*0x498*/ u32 unk498;
|
||||
/*0x49C*/ u8 filler49C[0x18];
|
||||
/*0x49C*/ u8 filler49C[0xC];
|
||||
/*0x4a8*/ u32 unk_4a8;
|
||||
/*0x4ac*/ u8 filler4ac[0x8];
|
||||
} SaveFile;
|
||||
|
||||
extern SaveFile gSave;
|
||||
|
@ -54,4 +65,11 @@ s32 ReadSaveFile(u32, SaveFile*);
|
|||
u32 Read_02000000(struct_02000000*);
|
||||
void SetFileStatusDeleted(u32 index);
|
||||
|
||||
extern const char gUnk_0811E470[];
|
||||
|
||||
#ifdef DEMO_USA
|
||||
extern const u8* const demoPointers[];
|
||||
extern const u8 demoUnknown1[];
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -692,7 +692,7 @@ SECTIONS {
|
|||
src/sub_0807B820.o(.text);
|
||||
asm/code_0807B9B8.o(.text);
|
||||
src/sub_0807C998.o(.text);
|
||||
asm/sub_0807CA18.o(.text);
|
||||
src/sub_0807CA18.o(.text);
|
||||
asm/getInventoryValue.o(.text);
|
||||
asm/code_0807CAA0.o(.text);
|
||||
src/flags.o(.text);
|
||||
|
|
|
@ -63,13 +63,12 @@ asm("demoPointer1: .incbin \"baserom_demo.gba\", 0x11e010, 0x500");
|
|||
asm("demoPointer2: .incbin \"baserom_demo.gba\", 0x11e510, 0x500");
|
||||
asm("demoPointer3: .incbin \"baserom_demo.gba\", 0x11ea10, 0x500");
|
||||
|
||||
extern const u32 demoPointer1;
|
||||
extern const u32 demoPointer2;
|
||||
extern const u32 demoPointer3;
|
||||
extern const u8 demoPointer1[];
|
||||
extern const u8 demoPointer2[];
|
||||
extern const u8 demoPointer3[];
|
||||
|
||||
const u32 demoPointers[] = { (u32)&demoPointer1, (u32)&demoPointer2, (u32)&demoPointer3 };
|
||||
const u8* const demoPointers[] = { demoPointer1, demoPointer2, demoPointer3 };
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#if defined(JP) || defined(EU)
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
#include "global.h"
|
||||
#include "structures.h"
|
||||
#include "save.h"
|
||||
#include "utils.h"
|
||||
|
||||
u8 sub_0807CA18() {
|
||||
if (gSave.unk_00 != 0x00 || gSave.unk_01 != 1) {
|
||||
gSave.unk_00 = 0;
|
||||
gSave.unk_01 = 1;
|
||||
gSave.unk8 = 1;
|
||||
gSave.stats.health = 0x18;
|
||||
gSave.stats.maxHealth = 0x18;
|
||||
gSave.unk_88 = 0x22;
|
||||
gSave.unk_89 = 0x15;
|
||||
gSave.unk_8A = 0;
|
||||
gSave.unk_8B = 0;
|
||||
gSave.unk_8F = 1;
|
||||
gSave.unk_8C = 0x90;
|
||||
gSave.unk_8E = 0x38;
|
||||
}
|
||||
if (gSave.playerName[0] == 0) {
|
||||
MemCopy(gUnk_0811E470, &gSave.playerName, 5);
|
||||
}
|
||||
#ifdef DEMO_USA
|
||||
{
|
||||
const u8* tmp;
|
||||
MemCopy(demoPointers[gUnk_02000000->saveFileId], &gSave, 0x4B4);
|
||||
if (gUnk_02000000->gameLanguage == 0) {
|
||||
gSave.playerName[0] = 0x97;
|
||||
gSave.playerName[1] = 0x7F;
|
||||
gSave.playerName[2] = 0xDD;
|
||||
gSave.playerName[3] = 0;
|
||||
}
|
||||
ModHealth(0xA0);
|
||||
ModRupees(-9999);
|
||||
tmp = demoUnknown1 + gUnk_02000010.field_0x7 * 3;
|
||||
gSave.unk_4a8 = tmp[gUnk_02000000->saveFileId] * 3600;
|
||||
}
|
||||
#endif
|
||||
return 1;
|
||||
}
|
Loading…
Reference in New Issue