rom_81700F8

This commit is contained in:
PikalaxALT 2017-09-15 22:12:45 -04:00
parent 78009a835f
commit 54c8580d34
9 changed files with 73 additions and 65 deletions

View File

@ -1,64 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_81700F8
sub_81700F8: @ 81700F8
push {r4,r5,lr}
ldr r5, =0x04000208
ldrh r4, [r5]
movs r0, 0
strh r0, [r5]
movs r0, 0x1
bl RegisterRamReset
movs r0, 0
movs r1, 0x80
bl ClearGpuRegBits
strh r4, [r5]
ldr r1, =gMain
ldr r0, =0x00000439
adds r1, r0
ldrb r2, [r1]
movs r0, 0x3
negs r0, r0
ands r0, r2
strb r0, [r1]
bl sub_815355C
lsls r0, 16
lsrs r0, 16
bl SetSaveBlocksPointers
bl sub_808447C
bl ResetSaveCounters
movs r0, 0
bl sub_81534D0
ldr r0, =gSaveFileStatus
ldrh r0, [r0]
cmp r0, 0
beq _08170148
cmp r0, 0x2
bne _0817014C
_08170148:
bl Sav2_ClearSetDefault
_0817014C:
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x15]
lsls r0, 31
lsrs r0, 31
bl SetPokemonCryStereo
ldr r0, =0x02000000
movs r1, 0xE0
lsls r1, 9
bl InitHeap
ldr r0, =sub_8086230
bl SetMainCallback2
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_81700F8
.align 2, 0 @ Don't pad with nop.

15
include/gpu_regs.h Normal file
View File

@ -0,0 +1,15 @@
//
// Created by scott on 9/15/2017.
//
#ifndef POKEEMERALD_GPU_REGS_H
#define POKEEMERALD_GPU_REGS_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
void ClearGpuRegBits(u8 regOffset, u16 mask);
#endif //POKEEMERALD_GPU_REGS_H

View File

@ -18,5 +18,6 @@ void SaveSerializedGame(void);
void LoadSerializedGame(void); void LoadSerializedGame(void);
void LoadPlayerBag(void); void LoadPlayerBag(void);
void SavePlayerBag(void); void SavePlayerBag(void);
void SetSaveBlocksPointers(u16);
#endif // GUARD_LOAD_SAVE_H #endif // GUARD_LOAD_SAVE_H

View File

@ -1,8 +1,11 @@
#ifndef GUARD_MALLOC_H #ifndef GUARD_MALLOC_H
#define GUARD_MALLOC_H #define GUARD_MALLOC_H
extern u8 gHeap[];
void *Alloc(u32 size); void *Alloc(u32 size);
void *AllocZeroed(u32 size); void *AllocZeroed(u32 size);
void Free(void *pointer); void Free(void *pointer);
void InitHeap(void *pointer, u32 size);
#endif // GUARD_MALLOC_H #endif // GUARD_MALLOC_H

View File

@ -9,5 +9,7 @@ void ClearPokedexFlags(void);
void WarpToTruck(void); void WarpToTruck(void);
void NewGameInitData(void); void NewGameInitData(void);
void ResetMiniGamesResults(void); void ResetMiniGamesResults(void);
void sub_808447C(void);
void Sav2_ClearSetDefault(void);
#endif // GUARD_NEW_GAME_H #endif // GUARD_NEW_GAME_H

15
include/rom4.h Normal file
View File

@ -0,0 +1,15 @@
//
// Created by scott on 9/15/2017.
//
#ifndef POKEEMERALD_ROM4_H
#define POKEEMERALD_ROM4_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
void sub_8086230(void);
#endif //POKEEMERALD_ROM4_H

View File

@ -1,6 +1,8 @@
#ifndef GUARD_SAVE_H #ifndef GUARD_SAVE_H
#define GUARD_SAVE_H #define GUARD_SAVE_H
extern u16 gSaveFileStatus;
struct SaveSectionLocation struct SaveSectionLocation
{ {
void *data; void *data;
@ -88,5 +90,7 @@ u16 CalculateChecksum(void *, u16);
//u8 unref_sub_8125FF0(u8 *data, u16 size); //u8 unref_sub_8125FF0(u8 *data, u16 size);
//u8 unref_sub_8126068(u8 sector, u8 *data, u32 size); //u8 unref_sub_8126068(u8 sector, u8 *data, u32 size);
//u8 unref_sub_8126080(u8 sector, u8 *data); //u8 unref_sub_8126080(u8 sector, u8 *data);
u16 sub_815355C(void);
u8 sub_81534D0(u8);
#endif // GUARD_SAVE_H #endif // GUARD_SAVE_H

View File

@ -206,7 +206,7 @@ SECTIONS {
asm/battle_controller_wally.o(.text); asm/battle_controller_wally.o(.text);
asm/player_pc.o(.text); asm/player_pc.o(.text);
asm/intro.o(.text); asm/intro.o(.text);
asm/rom_81700F8.o(.text); src/rom_81700F8.o(.text);
asm/field_region_map.o(.text); asm/field_region_map.o(.text);
asm/battle_anim_8170478.o(.text); asm/battle_anim_8170478.o(.text);
asm/hall_of_fame.o(.text); asm/hall_of_fame.o(.text);

32
src/rom_81700F8.c Normal file
View File

@ -0,0 +1,32 @@
#include "global.h"
#include "main.h"
#include "gpu_regs.h"
#include "m4a.h"
#include "load_save.h"
#include "save.h"
#include "new_game.h"
#include "rom4.h"
#include "malloc.h"
void sub_81700F8(void)
{
u16 imeBackup;
imeBackup = REG_IME;
REG_IME = 0;
RegisterRamReset(0x00000001);
ClearGpuRegBits(REG_OFFSET_DISPCNT, 0x80);
REG_IME = imeBackup;
gMain.inBattle = FALSE;
SetSaveBlocksPointers(sub_815355C());
sub_808447C();
ResetSaveCounters();
sub_81534D0(0);
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
{
Sav2_ClearSetDefault();
}
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
InitHeap(gHeap, 0x1c000);
SetMainCallback2(sub_8086230);
}