mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
Finish aligning core.c with SA2
This commit is contained in:
1 parent
640c7fb7d3
commit
4d90b1aa97
4 files changed
+62
-32
No files matched your search
+1
-1
@@ -286,7 +286,7 @@ extern IntrFunc gVBlankCallbacks[4];
|
||||
extern u8 gOamFreeIndex;
|
||||
extern u16 SA2_LABEL(gUnknown_03001944);
|
||||
extern u8 gNumVBlankIntrs;
|
||||
extern s16 sa2__gUnknown_0300194C;
|
||||
extern s16 SA2_LABEL(gUnknown_0300194C);
|
||||
|
||||
extern Tilemap **gTilemapsRef;
|
||||
extern u8 gBgSprites_Unknown2[4][4];
|
||||
|
||||
+1
-1
@@ -239,7 +239,7 @@ void DrawBackground(Background *);
|
||||
u32 SA2_LABEL(sub_8004010)(void);
|
||||
u32 SA2_LABEL(sub_80039E4)(void);
|
||||
bool32 SA2_LABEL(sub_8002B20)(void);
|
||||
void CopyOamBufferToOam(void);
|
||||
void ProcessOamBuffers(void);
|
||||
OamData *OamMalloc(u8 order);
|
||||
|
||||
void TransformSprite(Sprite *, SpriteTransform *);
|
||||
|
||||
+59
-29
@@ -283,7 +283,7 @@ void EngineInit(void)
|
||||
SA2_LABEL(gUnknown_03005394) = 0x100;
|
||||
SA2_LABEL(gUnknown_03002A8C) = 0;
|
||||
SA2_LABEL(gUnknown_03004D58) = 0;
|
||||
sa2__gUnknown_0300194C = 0;
|
||||
SA2_LABEL(gUnknown_0300194C) = 0;
|
||||
SA2_LABEL(gUnknown_03002820) = 0;
|
||||
SA2_LABEL(gUnknown_03005398) = 0x100;
|
||||
|
||||
@@ -309,9 +309,11 @@ void EngineInit(void)
|
||||
gKeysContinuedRepeatIntervals[i] = 8;
|
||||
}
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
gInputRecorder.mode = RECORDER_DISABLED;
|
||||
gPhysicalInput = 0;
|
||||
gInputPlaybackData = NULL;
|
||||
#endif
|
||||
gFrameCount = 0;
|
||||
|
||||
#ifdef BUG_FIX
|
||||
@@ -347,7 +349,9 @@ void EngineInit(void)
|
||||
gExecSoundMain = TRUE;
|
||||
|
||||
TasksInit();
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
EwramInitHeap();
|
||||
#endif
|
||||
|
||||
// VRAM_TILE_SEGMENTS / 256 max useable segments
|
||||
gVramHeapMaxTileSlots = VRAM_TILE_SEGMENTS * VRAM_TILE_SLOTS_PER_SEGMENT;
|
||||
@@ -355,12 +359,16 @@ void EngineInit(void)
|
||||
|
||||
VramResetHeapState();
|
||||
|
||||
#if COLLECT_RINGS_ROM
|
||||
gFlags |= FLAGS_NO_FLASH_MEMORY;
|
||||
#else
|
||||
errorIdentifying = IdentifyFlash();
|
||||
if (errorIdentifying) {
|
||||
gFlags |= FLAGS_NO_FLASH_MEMORY;
|
||||
} else {
|
||||
SetFlashTimerIntr(1, &gIntrTable[5]);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Setup interrupt vector
|
||||
#if PLATFORM_GBA
|
||||
@@ -441,7 +449,7 @@ void EngineMainLoop(void)
|
||||
};
|
||||
}
|
||||
|
||||
void UpdateScreenDma(void)
|
||||
static void UpdateScreenDma(void)
|
||||
{
|
||||
u8 i, j = 0;
|
||||
REG_DISPCNT = gDispCnt;
|
||||
@@ -489,7 +497,7 @@ void UpdateScreenDma(void)
|
||||
}
|
||||
|
||||
if (sLastCalledVblankFuncId == VBLANK_FUNC_ID_NONE) {
|
||||
CopyOamBufferToOam();
|
||||
ProcessOamBuffers();
|
||||
DmaCopy16(3, gOamBuffer + (OAM_ENTRY_COUNT / 4) * 0, (void *)OAM + (OAM_ENTRY_COUNT * (OAM_DATA_SIZE_AFFINE / 4) * 0),
|
||||
OAM_SIZE / 4);
|
||||
DmaCopy16(3, gOamBuffer + (OAM_ENTRY_COUNT / 4) * 1, (void *)OAM + (OAM_ENTRY_COUNT * (OAM_DATA_SIZE_AFFINE / 4) * 1),
|
||||
@@ -545,12 +553,13 @@ void UpdateScreenDma(void)
|
||||
}
|
||||
}
|
||||
|
||||
void ClearOamBufferDma(void)
|
||||
static void ClearOamBufferDma(void)
|
||||
{
|
||||
gNumHBlankCallbacks = 0;
|
||||
|
||||
gFlags &= ~FLAGS_EXECUTE_HBLANK_CALLBACKS;
|
||||
if (!(gFlags & FLAGS_20)) {
|
||||
#if (GAME == GAME_SA1)
|
||||
if (gBgOffsetsHBlankPrimary == gBgOffsetsBuffer[0]) {
|
||||
gBgOffsetsHBlankPrimary = gBgOffsetsBuffer[1];
|
||||
gBgOffsetsHBlankSecondary = gBgOffsetsBuffer[0];
|
||||
@@ -558,6 +567,15 @@ void ClearOamBufferDma(void)
|
||||
gBgOffsetsHBlankPrimary = gBgOffsetsBuffer[0];
|
||||
gBgOffsetsHBlankSecondary = gBgOffsetsBuffer[1];
|
||||
}
|
||||
#else
|
||||
if (gBgOffsetsHBlankPrimary == gBgOffsetsPrimary) {
|
||||
gBgOffsetsHBlankPrimary = gBgOffsetsSecondary;
|
||||
gBgOffsetsHBlankSecondary = gBgOffsetsPrimary;
|
||||
} else {
|
||||
gBgOffsetsHBlankPrimary = gBgOffsetsPrimary;
|
||||
gBgOffsetsHBlankSecondary = gBgOffsetsSecondary;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
gFlags &= ~FLAGS_EXECUTE_HBLANK_COPY;
|
||||
DmaFill16(3, 0x200, gOamBuffer + (OAM_ENTRY_COUNT / 4) * 0, OAM_SIZE / 4);
|
||||
@@ -569,7 +587,8 @@ void ClearOamBufferDma(void)
|
||||
gFlags &= ~FLAGS_EXECUTE_VBLANK_CALLBACKS;
|
||||
}
|
||||
|
||||
void UpdateScreenCpuSet(void)
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
static void UpdateScreenCpuSet(void)
|
||||
{
|
||||
u8 i, j = 0;
|
||||
REG_DISPCNT = gDispCnt;
|
||||
@@ -612,7 +631,7 @@ void UpdateScreenCpuSet(void)
|
||||
}
|
||||
|
||||
if (sLastCalledVblankFuncId == VBLANK_FUNC_ID_NONE) {
|
||||
CopyOamBufferToOam();
|
||||
ProcessOamBuffers();
|
||||
CpuFastCopy(gOamBuffer, (void *)OAM, OAM_SIZE);
|
||||
}
|
||||
|
||||
@@ -643,8 +662,9 @@ void UpdateScreenCpuSet(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void VBlankIntr(void)
|
||||
static void VBlankIntr(void)
|
||||
{
|
||||
u16 keys;
|
||||
DmaStop(0);
|
||||
@@ -678,6 +698,7 @@ void VBlankIntr(void)
|
||||
REG_IE &= ~INTR_FLAG_VCOUNT;
|
||||
}
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
if (!(gFlagsPreVBlank & FLAGS_8000)) {
|
||||
keys = ~REG_KEYINPUT & (START_BUTTON | SELECT_BUTTON | B_BUTTON | A_BUTTON);
|
||||
if (keys == (START_BUTTON | SELECT_BUTTON | B_BUTTON | A_BUTTON)) {
|
||||
@@ -696,6 +717,7 @@ void VBlankIntr(void)
|
||||
SoftReset(0x20);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
gFrameCount++;
|
||||
REG_IF = INTR_FLAG_VBLANK;
|
||||
@@ -710,7 +732,7 @@ struct GraphicsData_Hack {
|
||||
|
||||
#define COPY_CHUNK_SIZE 1024
|
||||
|
||||
bool32 ProcessVramGraphicsCopyQueue(void)
|
||||
static bool32 ProcessVramGraphicsCopyQueue(void)
|
||||
{
|
||||
u32 offset;
|
||||
#ifndef NON_MATCHING
|
||||
@@ -729,7 +751,9 @@ bool32 ProcessVramGraphicsCopyQueue(void)
|
||||
if ((graphics->src != 0) && (graphics->dest != 0))
|
||||
#endif
|
||||
{
|
||||
#if (RENDERER == RENDERER_SOFTWARE)
|
||||
DmaCopy16(3, (void *)(graphics->src + offset), (void *)(graphics->dest + offset), COPY_CHUNK_SIZE);
|
||||
#endif
|
||||
graphics->size -= COPY_CHUNK_SIZE;
|
||||
}
|
||||
#ifdef BUG_FIX
|
||||
@@ -742,7 +766,9 @@ bool32 ProcessVramGraphicsCopyQueue(void)
|
||||
if ((graphics->src != 0) && (graphics->dest != 0))
|
||||
#endif
|
||||
{
|
||||
#if (RENDERER == RENDERER_SOFTWARE)
|
||||
DmaCopy16(3, (void *)(graphics->src + offset), (void *)(graphics->dest + offset), graphics->size);
|
||||
#endif
|
||||
}
|
||||
graphics->size = 0;
|
||||
}
|
||||
@@ -783,11 +809,13 @@ void GetInput(void)
|
||||
// to exit the demo
|
||||
gPhysicalInput = gInput;
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
if (gInputRecorder.mode == RECORDER_RECORD) {
|
||||
InputRecorderWrite(gInput);
|
||||
} else if (gInputRecorder.mode == RECORDER_PLAYBACK) {
|
||||
gInput = InputRecorderRead();
|
||||
}
|
||||
#endif
|
||||
|
||||
gPressedKeys = (gInput ^ gPrevInput) & gInput;
|
||||
gReleasedKeys = (gInput ^ gPrevInput) & gPrevInput;
|
||||
@@ -818,7 +846,7 @@ void GetInput(void)
|
||||
}
|
||||
}
|
||||
|
||||
void HBlankIntr(void)
|
||||
static void HBlankIntr(void)
|
||||
{
|
||||
u8 i;
|
||||
int_vcount vcount = *(volatile int_vcount *)®_VCOUNT;
|
||||
@@ -832,30 +860,30 @@ void HBlankIntr(void)
|
||||
REG_IF = INTR_FLAG_HBLANK;
|
||||
}
|
||||
|
||||
void VCountIntr(void) { REG_IF = INTR_FLAG_VCOUNT; }
|
||||
static void VCountIntr(void) { REG_IF = INTR_FLAG_VCOUNT; }
|
||||
|
||||
void Dma0Intr(void) { REG_IF = INTR_FLAG_DMA0; }
|
||||
static void Dma0Intr(void) { REG_IF = INTR_FLAG_DMA0; }
|
||||
|
||||
void Dma1Intr(void) { REG_IF = INTR_FLAG_DMA1; }
|
||||
static void Dma1Intr(void) { REG_IF = INTR_FLAG_DMA1; }
|
||||
|
||||
void Dma2Intr(void) { REG_IF = INTR_FLAG_DMA2; }
|
||||
static void Dma2Intr(void) { REG_IF = INTR_FLAG_DMA2; }
|
||||
|
||||
void Dma3Intr(void) { REG_IF = INTR_FLAG_DMA3; }
|
||||
static void Dma3Intr(void) { REG_IF = INTR_FLAG_DMA3; }
|
||||
|
||||
void Timer0Intr(void) { REG_IF = INTR_FLAG_TIMER0; }
|
||||
static void Timer0Intr(void) { REG_IF = INTR_FLAG_TIMER0; }
|
||||
|
||||
void Timer1Intr(void) { REG_IF = INTR_FLAG_TIMER1; }
|
||||
static void Timer1Intr(void) { REG_IF = INTR_FLAG_TIMER1; }
|
||||
|
||||
void Timer2Intr(void) { REG_IF = INTR_FLAG_TIMER2; }
|
||||
static void Timer2Intr(void) { REG_IF = INTR_FLAG_TIMER2; }
|
||||
|
||||
void KeypadIntr(void) { REG_IF = INTR_FLAG_KEYPAD; }
|
||||
static void KeypadIntr(void) { REG_IF = INTR_FLAG_KEYPAD; }
|
||||
|
||||
void GamepakIntr(void) { REG_IF = INTR_FLAG_GAMEPAK; }
|
||||
static void GamepakIntr(void) { REG_IF = INTR_FLAG_GAMEPAK; }
|
||||
|
||||
void DummyFunc(void) { }
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
void ClearOamBufferCpuSet(void)
|
||||
static void ClearOamBufferCpuSet(void)
|
||||
{
|
||||
gNumHBlankCallbacks = 0;
|
||||
|
||||
@@ -863,35 +891,37 @@ void ClearOamBufferCpuSet(void)
|
||||
if (!(gFlags & FLAGS_20)) {
|
||||
if (gBgOffsetsHBlankPrimary == gBgOffsetsBuffer) {
|
||||
gBgOffsetsHBlankPrimary = &gBgOffsetsBuffer[1];
|
||||
gBgOffsetsHBlankSecondary = (void *)&gBgOffsetsBuffer[0];
|
||||
gBgOffsetsHBlankSecondary = &gBgOffsetsBuffer[0];
|
||||
} else {
|
||||
gBgOffsetsHBlankPrimary = &gBgOffsetsBuffer[0];
|
||||
gBgOffsetsHBlankSecondary = (void *)&gBgOffsetsBuffer[1];
|
||||
gBgOffsetsHBlankSecondary = &gBgOffsetsBuffer[1];
|
||||
}
|
||||
}
|
||||
gFlags &= ~4;
|
||||
gFlags &= ~FLAGS_EXECUTE_HBLANK_COPY;
|
||||
CpuFastFill(0x200, gOamBuffer, sizeof(gOamBuffer));
|
||||
gNumVBlankCallbacks = 0;
|
||||
gFlags &= ~FLAGS_EXECUTE_VBLANK_CALLBACKS;
|
||||
}
|
||||
#else
|
||||
void ClearOamBufferCpuSet(void)
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
static void ClearOamBufferCpuSet(void)
|
||||
{
|
||||
gNumHBlankCallbacks = 0;
|
||||
|
||||
gFlags &= ~FLAGS_EXECUTE_HBLANK_CALLBACKS;
|
||||
if (!(gFlags & FLAGS_20)) {
|
||||
if (gBgOffsetsHBlankPrimary == gUnknown_03004D54) {
|
||||
if (gBgOffsetsHBlankPrimary == gBgOffsetsPrimary) {
|
||||
gBgOffsetsHBlankPrimary = gBgOffsetsSecondary;
|
||||
gUnknown_030022AC = gUnknown_03004D54;
|
||||
gBgOffsetsHBlankSecondary = gBgOffsetsPrimary;
|
||||
} else {
|
||||
gBgOffsetsHBlankPrimary = gUnknown_03004D54;
|
||||
gUnknown_030022AC = gBgOffsetsSecondary;
|
||||
gBgOffsetsHBlankPrimary = gBgOffsetsPrimary;
|
||||
gBgOffsetsHBlankSecondary = gBgOffsetsSecondary;
|
||||
}
|
||||
}
|
||||
gFlags &= ~4;
|
||||
gFlags &= ~FLAGS_EXECUTE_HBLANK_COPY;
|
||||
CpuFastFill(0x200, gOamBuffer, sizeof(gOamBuffer));
|
||||
gNumVBlankCallbacks = 0;
|
||||
gFlags &= ~FLAGS_EXECUTE_VBLANK_CALLBACKS;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
+1
-1
@@ -976,7 +976,7 @@ OamData *OamMalloc(u8 order)
|
||||
return result;
|
||||
}
|
||||
|
||||
void CopyOamBufferToOam(void)
|
||||
void ProcessOamBuffers(void)
|
||||
{
|
||||
OamData *dstOam = &gOamBuffer[0];
|
||||
u8 i = 0;
|
||||
|
||||
Reference in new issue
Block a user