summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2016-11-01 17:50:47 -0500
committerDiegoisawesome <diego@domoreaweso.me>2016-11-01 17:50:47 -0500
commit06a8cfc9f83447c37b30dec89f56689a454e5abf (patch)
tree1f4677249cd8f286872dfc000594c2eb96319214
parent67ac6db95e537a68ebdc474f75e9ba6c0550c09d (diff)
parent555bbb5494d8eac197adc418fddcaf405b81efc5 (diff)
Merge remote-tracking branch 'refs/remotes/pret/master'
# Conflicts: # asm/libagbbackup.s # asm/save.s # asm/save_failed_screen.s # sym_bss.txt # sym_common.txt
-rw-r--r--src/gpu_regs.c70
-rw-r--r--src/malloc.c26
-rw-r--r--sym_bss.txt23
3 files changed, 52 insertions, 67 deletions
diff --git a/src/gpu_regs.c b/src/gpu_regs.c
index e2eb77240..be1f153d4 100644
--- a/src/gpu_regs.c
+++ b/src/gpu_regs.c
@@ -2,16 +2,16 @@
#define GPU_REG_BUF_SIZE 0x60
-#define GPU_REG_BUF(offset) (*(u16 *)(&gGpuRegBuffer[offset]))
+#define GPU_REG_BUF(offset) (*(u16 *)(&sGpuRegBuffer[offset]))
#define GPU_REG(offset) (*(vu16 *)(REG_BASE + offset))
#define EMPTY_SLOT 0xFF
-extern u8 gGpuRegBuffer[GPU_REG_BUF_SIZE];
-extern u8 gGpuRegWaitingList[GPU_REG_BUF_SIZE];
-extern bool8 gGpuRegBufferLocked;
-extern bool8 gShouldSyncRegIE;
-extern u16 gRegIE;
+static u8 sGpuRegBuffer[GPU_REG_BUF_SIZE];
+static u8 sGpuRegWaitingList[GPU_REG_BUF_SIZE];
+static bool8 sGpuRegBufferLocked;
+static bool8 sShouldSyncRegIE;
+static u16 sRegIE;
static void CopyBufferedValueToGpuReg(u8 regOffset);
static void SyncRegIE();
@@ -22,13 +22,13 @@ void InitGpuRegManager()
s32 i;
for (i = 0; i < GPU_REG_BUF_SIZE; i++) {
- gGpuRegBuffer[i] = 0;
- gGpuRegWaitingList[i] = EMPTY_SLOT;
+ sGpuRegBuffer[i] = 0;
+ sGpuRegWaitingList[i] = EMPTY_SLOT;
}
- gGpuRegBufferLocked = FALSE;
- gShouldSyncRegIE = FALSE;
- gRegIE = 0;
+ sGpuRegBufferLocked = FALSE;
+ sShouldSyncRegIE = FALSE;
+ sRegIE = 0;
}
static void CopyBufferedValueToGpuReg(u8 regOffset)
@@ -43,15 +43,15 @@ static void CopyBufferedValueToGpuReg(u8 regOffset)
void CopyBufferedValuesToGpuRegs()
{
- if (!gGpuRegBufferLocked) {
+ if (!sGpuRegBufferLocked) {
s32 i;
for (i = 0; i < GPU_REG_BUF_SIZE; i++) {
- u8 regOffset = gGpuRegWaitingList[i];
+ u8 regOffset = sGpuRegWaitingList[i];
if (regOffset == EMPTY_SLOT)
return;
CopyBufferedValueToGpuReg(regOffset);
- gGpuRegWaitingList[i] = EMPTY_SLOT;
+ sGpuRegWaitingList[i] = EMPTY_SLOT;
}
}
}
@@ -71,17 +71,17 @@ void SetGpuReg(u8 regOffset, u16 value)
} else {
s32 i;
- gGpuRegBufferLocked = TRUE;
+ sGpuRegBufferLocked = TRUE;
- for (i = 0; i < GPU_REG_BUF_SIZE && gGpuRegWaitingList[i] != EMPTY_SLOT; i++) {
- if (gGpuRegWaitingList[i] == regOffset) {
- gGpuRegBufferLocked = FALSE;
+ for (i = 0; i < GPU_REG_BUF_SIZE && sGpuRegWaitingList[i] != EMPTY_SLOT; i++) {
+ if (sGpuRegWaitingList[i] == regOffset) {
+ sGpuRegBufferLocked = FALSE;
return;
}
}
- gGpuRegWaitingList[i] = regOffset;
- gGpuRegBufferLocked = FALSE;
+ sGpuRegWaitingList[i] = regOffset;
+ sGpuRegBufferLocked = FALSE;
}
}
}
@@ -97,17 +97,17 @@ void SetGpuReg_ForcedBlank(u8 regOffset, u16 value)
} else {
s32 i;
- gGpuRegBufferLocked = TRUE;
+ sGpuRegBufferLocked = TRUE;
- for (i = 0; i < GPU_REG_BUF_SIZE && gGpuRegWaitingList[i] != EMPTY_SLOT; i++) {
- if (gGpuRegWaitingList[i] == regOffset) {
- gGpuRegBufferLocked = FALSE;
+ for (i = 0; i < GPU_REG_BUF_SIZE && sGpuRegWaitingList[i] != EMPTY_SLOT; i++) {
+ if (sGpuRegWaitingList[i] == regOffset) {
+ sGpuRegBufferLocked = FALSE;
return;
}
}
- gGpuRegWaitingList[i] = regOffset;
- gGpuRegBufferLocked = FALSE;
+ sGpuRegWaitingList[i] = regOffset;
+ sGpuRegBufferLocked = FALSE;
}
}
}
@@ -137,29 +137,29 @@ void ClearGpuRegBits(u8 regOffset, u16 mask)
static void SyncRegIE()
{
- if (gShouldSyncRegIE) {
+ if (sShouldSyncRegIE) {
u16 temp = REG_IME;
REG_IME = 0;
- REG_IE = gRegIE;
+ REG_IE = sRegIE;
REG_IME = temp;
- gShouldSyncRegIE = FALSE;
+ sShouldSyncRegIE = FALSE;
}
}
void EnableInterrupts(u16 mask)
{
- gRegIE |= mask;
- gShouldSyncRegIE = TRUE;
+ sRegIE |= mask;
+ sShouldSyncRegIE = TRUE;
SyncRegIE();
- UpdateRegDispstatIntrBits(gRegIE);
+ UpdateRegDispstatIntrBits(sRegIE);
}
void DisableInterrupts(u16 mask)
{
- gRegIE &= ~mask;
- gShouldSyncRegIE = TRUE;
+ sRegIE &= ~mask;
+ sShouldSyncRegIE = TRUE;
SyncRegIE();
- UpdateRegDispstatIntrBits(gRegIE);
+ UpdateRegDispstatIntrBits(sRegIE);
}
static void UpdateRegDispstatIntrBits(u16 regIE)
diff --git a/src/malloc.c b/src/malloc.c
index c93e096c2..fd9dc616a 100644
--- a/src/malloc.c
+++ b/src/malloc.c
@@ -1,7 +1,7 @@
#include "global.h"
-extern void *gHeapStart;
-extern u32 gHeapSize;
+static void *sHeapStart;
+static u32 sHeapSize;
#define MALLOC_SYSTEM_ID 0xA3A3
@@ -15,10 +15,10 @@ struct MemBlock {
// Size of the block (not including this header struct).
u32 size;
- // Previous block pointer. Equals gHeapStart if this is the first block.
+ // Previous block pointer. Equals sHeapStart if this is the first block.
struct MemBlock *prev;
- // Next block pointer. Equals gHeapStart if this is the last block.
+ // Next block pointer. Equals sHeapStart if this is the last block.
struct MemBlock *next;
// Data in the memory block. (Arrays of length 0 are a GNU extension.)
@@ -169,40 +169,40 @@ bool32 CheckMemBlockInternal(void *heapStart, void *pointer)
void InitHeap(void *heapStart, u32 heapSize)
{
- gHeapStart = heapStart;
- gHeapSize = heapSize;
+ sHeapStart = heapStart;
+ sHeapSize = heapSize;
PutFirstMemBlockHeader(heapStart, heapSize);
}
void *Alloc(u32 size)
{
- AllocInternal(gHeapStart, size);
+ AllocInternal(sHeapStart, size);
}
void *AllocZeroed(u32 size)
{
- AllocZeroedInternal(gHeapStart, size);
+ AllocZeroedInternal(sHeapStart, size);
}
void Free(void *pointer)
{
- FreeInternal(gHeapStart, pointer);
+ FreeInternal(sHeapStart, pointer);
}
bool32 CheckMemBlock(void *pointer)
{
- return CheckMemBlockInternal(gHeapStart, pointer);
+ return CheckMemBlockInternal(sHeapStart, pointer);
}
bool32 CheckHeap()
{
- struct MemBlock *pos = (struct MemBlock *)gHeapStart;
+ struct MemBlock *pos = (struct MemBlock *)sHeapStart;
do {
- if (!CheckMemBlockInternal(gHeapStart, pos->data))
+ if (!CheckMemBlockInternal(sHeapStart, pos->data))
return FALSE;
pos = pos->next;
- } while (pos != (struct MemBlock *)gHeapStart);
+ } while (pos != (struct MemBlock *)sHeapStart);
return TRUE;
}
diff --git a/sym_bss.txt b/sym_bss.txt
index a7e70dbe3..717a78c77 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -1,12 +1,9 @@
gUnknown_03000000: @ 3000000
.space 0x4
-gHeapStart: @ 3000004
- .space 0x4
-
-gHeapSize: @ 3000008
- .space 0x8
+ .include "src/malloc.o"
+ .align 4
gDma3Requests: @ 3000010
.space 0xC
@@ -25,21 +22,9 @@ gDma3ManagerLocked: @ 3000810
gDma3RequestCursor: @ 3000811
.space 0x7
-gGpuRegBuffer: @ 3000818
- .space 0x60
-
-gGpuRegWaitingList: @ 3000878
- .space 0x60
-
-gGpuRegBufferLocked: @ 30008D8
- .space 0x1
-
-gShouldSyncRegIE: @ 30008D9
- .space 0x1
-
-gRegIE: @ 30008DA
- .space 0x6
+ .include "src/gpu_regs.o"
+ .align 4
gUnknown_030008E0: @ 30008E0
.space 0x18