mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-25 15:42:51 -05:00
Module 01 static initializer; split module 04 ro/data
This commit is contained in:
parent
d23c7d311b
commit
aa6e5b3edc
|
|
@ -5,7 +5,7 @@ project(PokeDiamond)
|
|||
|
||||
enable_language(ASM)
|
||||
|
||||
file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c")
|
||||
file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
|
||||
|
||||
add_executable(PokeDiamond ${SOURCES})
|
||||
target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include)
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ endif
|
|||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
EXE := .exe
|
||||
WINE :=
|
||||
WINE :=
|
||||
else
|
||||
EXE :=
|
||||
EXE :=
|
||||
WINE := wine
|
||||
endif
|
||||
|
||||
|
|
@ -49,12 +49,16 @@ LD_TEMPLATE := ARM9-TS.lcf.template
|
|||
SRC_DIRS := src lib lib/src $(wildcard modules/*/src)
|
||||
ASM_DIRS := asm data files $(wildcard modules/*/asm)
|
||||
|
||||
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
|
||||
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
CXX_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
|
||||
S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
|
||||
|
||||
C_OBJS = $(C_FILES:%.c=$(BUILD_DIR)/%.o)
|
||||
CXX_OBJS = $(CXX_FILES:%.cpp=$(BUILD_DIR)/%.o)
|
||||
S_OBJS = $(S_FILES:%.s=$(BUILD_DIR)/%.o)
|
||||
|
||||
# Object files
|
||||
O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
|
||||
$(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
|
||||
O_FILES := $(C_OBJS) $(CXX_OBJS) $(S_OBJS)
|
||||
|
||||
# Overlay modules
|
||||
# FIXME: lcf doesn't like this
|
||||
|
|
@ -83,6 +87,7 @@ MAKELSF_FLAGS := -DCONST_34=0x34 -DCONST_3F=0x3F
|
|||
|
||||
AS = $(WINE) $(MWASMARM)
|
||||
CC = $(WINE) $(MWCCARM)
|
||||
CXX = $(WINE) $(MWCCARM)
|
||||
CPP := cpp -P
|
||||
LD = $(WINE) $(MWLDARM)
|
||||
AR := $(CROSS)ar
|
||||
|
|
@ -92,6 +97,7 @@ OBJCOPY := $(CROSS)objcopy
|
|||
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
|
||||
ASFLAGS = -proc arm5te -i ..
|
||||
CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
|
||||
CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
|
||||
LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
|
||||
|
||||
####################### Other Tools #########################
|
||||
|
|
@ -157,15 +163,18 @@ build/src/FUN_020910A4.o: MWCCVERSION = 1.2/sp2p3
|
|||
####################### Everything Else ######################
|
||||
|
||||
ifeq (,$(NODEP))
|
||||
$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $*.[cs])
|
||||
$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)))
|
||||
else
|
||||
$(BUILD_DIR)/%.o: dep :=
|
||||
endif
|
||||
|
||||
$(BUILD_DIR)/%.o: %.c $$(dep)
|
||||
$(C_OBJS): $(BUILD_DIR)/%.o: %.c $$(dep)
|
||||
$(CC) -c $(CFLAGS) -o $@ $<
|
||||
|
||||
$(BUILD_DIR)/%.o: %.s $$(dep)
|
||||
$(CXX_OBJS): $(BUILD_DIR)/%.o: %.cpp $$(dep)
|
||||
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
||||
|
||||
$(S_OBJS): $(BUILD_DIR)/%.o: %.s $$(dep)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros.lcf.inc
|
||||
|
|
|
|||
|
|
@ -410,6 +410,14 @@ SECTIONS {
|
|||
ALIGNALL(4); . = ALIGN(32);
|
||||
SDK_OVERLAY.MODULE_00.START = .;
|
||||
module_00_dummy.o (.text)
|
||||
module_00_dummy.o (.rodata)
|
||||
module_00_dummy.o (.init)
|
||||
SDK_OVERLAY.MODULE_00.SINIT_START = .;
|
||||
module_00_dummy.o (.ctor)
|
||||
module_00_dummy.o (.sinit)
|
||||
WRITEW 0;
|
||||
SDK_OVERLAY.MODULE_00.SINIT_END = .;
|
||||
. = ALIGN(32);
|
||||
module_00_dummy.o (.sdata)
|
||||
module_00_dummy.o (.data)
|
||||
SDK_OVERLAY.MODULE_00.END = .;
|
||||
|
|
@ -430,8 +438,17 @@ SECTIONS {
|
|||
ALIGNALL(4); . = ALIGN(32);
|
||||
SDK_OVERLAY.MODULE_01.START = .;
|
||||
module_01.o (.text)
|
||||
module_01.o (.rodata)
|
||||
module_01.o (.init)
|
||||
SDK_OVERLAY.MODULE_01.SINIT_START = .;
|
||||
module_01.o (.ctor)
|
||||
module_01.o (.sinit)
|
||||
WRITEW 0;
|
||||
SDK_OVERLAY.MODULE_01.SINIT_END = .;
|
||||
. = ALIGN(32);
|
||||
module_01.o (.sdata)
|
||||
module_01.o (.data)
|
||||
. = ALIGN(32);
|
||||
SDK_OVERLAY.MODULE_01.END = .;
|
||||
SDK_OVERLAY.MODULE_01.SIZE = SDK_OVERLAY.MODULE_01.END - SDK_OVERLAY.MODULE_01.START;
|
||||
} > MODULE_01
|
||||
|
|
@ -441,6 +458,7 @@ SECTIONS {
|
|||
SDK_OVERLAY.MODULE_01.BSS_START = .;
|
||||
module_01.o (.sbss)
|
||||
module_01.o (.bss)
|
||||
. = ALIGN(32);
|
||||
SDK_OVERLAY.MODULE_01.BSS_END = .;
|
||||
SDK_OVERLAY.MODULE_01.BSS_SIZE = SDK_OVERLAY.MODULE_01.BSS_END - SDK_OVERLAY.MODULE_01.BSS_START;
|
||||
} >> MODULE_01
|
||||
|
|
@ -450,6 +468,13 @@ SECTIONS {
|
|||
ALIGNALL(4); . = ALIGN(32);
|
||||
SDK_OVERLAY.MODULE_02.START = .;
|
||||
module_02_dummy.o (.text)
|
||||
module_02_dummy.o (.rodata)
|
||||
SDK_OVERLAY.MODULE_02.SINIT_START = .;
|
||||
module_02_dummy.o (.ctor)
|
||||
module_02_dummy.o (.sinit)
|
||||
WRITEW 0;
|
||||
SDK_OVERLAY.MODULE_02.SINIT_END = .;
|
||||
. = ALIGN(32);
|
||||
module_02_dummy.o (.sdata)
|
||||
module_02_dummy.o (.data)
|
||||
SDK_OVERLAY.MODULE_02.END = .;
|
||||
|
|
@ -470,6 +495,14 @@ SECTIONS {
|
|||
ALIGNALL(4); . = ALIGN(32);
|
||||
SDK_OVERLAY.MODULE_03.START = .;
|
||||
module_03_dummy.o (.text)
|
||||
module_03_dummy.o (.rodata)
|
||||
module_03_dummy.o (.init)
|
||||
SDK_OVERLAY.MODULE_03.SINIT_START = .;
|
||||
module_03_dummy.o (.ctor)
|
||||
module_03_dummy.o (.sinit)
|
||||
WRITEW 0;
|
||||
SDK_OVERLAY.MODULE_03.SINIT_END = .;
|
||||
. = ALIGN(32);
|
||||
module_03_dummy.o (.sdata)
|
||||
module_03_dummy.o (.data)
|
||||
SDK_OVERLAY.MODULE_03.END = .;
|
||||
|
|
@ -491,10 +524,20 @@ SECTIONS {
|
|||
SDK_OVERLAY.MODULE_04.START = .;
|
||||
thumb_04.o (.text)
|
||||
arm_04.o (.text)
|
||||
thumb_04.o (.sdata)
|
||||
arm_04.o (.sdata)
|
||||
thumb_04.o (.rodata)
|
||||
arm_04.o (.rodata)
|
||||
thumb_04.o (.init)
|
||||
arm_04.o (.init)
|
||||
SDK_OVERLAY.MODULE_04.SINIT_START = .;
|
||||
thumb_04.o (.ctor)
|
||||
arm_04.o (.ctor)
|
||||
thumb_04.o (.sinit)
|
||||
arm_04.o (.sinit)
|
||||
WRITEW 0;
|
||||
SDK_OVERLAY.MODULE_04.SINIT_END = .;
|
||||
. = ALIGN(32);
|
||||
thumb_04.o (.sdata)
|
||||
arm_04.o (.sdata)
|
||||
thumb_04.o (.data)
|
||||
arm_04.o (.data)
|
||||
SDK_OVERLAY.MODULE_04.END = .;
|
||||
|
|
@ -2264,7 +2307,14 @@ SECTIONS {
|
|||
|
||||
.arm9_table : {
|
||||
OVERLAY_TABLE(MODULE_00, 0)
|
||||
OVERLAY_TABLE(MODULE_01, 1)
|
||||
WRITEW SDK_OVERLAY_MODULE_01_ID;
|
||||
WRITEW SDK_OVERLAY.MODULE_01.START;
|
||||
WRITEW SDK_OVERLAY.MODULE_01.SIZE;
|
||||
WRITEW SDK_OVERLAY.MODULE_01.BSS_SIZE;
|
||||
WRITEW SDK_OVERLAY.MODULE_01.SINIT_START;
|
||||
WRITEW SDK_OVERLAY.MODULE_01.SINIT_END;
|
||||
WRITEW SDK_OVERLAY_MODULE_01_ID;
|
||||
WRITEW 0;
|
||||
OVERLAY_TABLE(MODULE_02, 2)
|
||||
OVERLAY_TABLE(MODULE_03, 3)
|
||||
OVERLAY_TABLE(MODULE_04, 4)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
#ifndef NITRO_FS_OVERLAY_H_
|
||||
#define NITRO_FS_OVERLAY_H_
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "nitro.h"
|
||||
#include "MI_exMemory.h"
|
||||
#include "FS_file.h"
|
||||
|
|
@ -8,7 +12,7 @@
|
|||
|
||||
typedef u32 FSOverlayID;
|
||||
|
||||
typedef void (*FSOverlayInitFunc) (void);
|
||||
typedef void (*FSOverlayInitFunc)(void);
|
||||
|
||||
typedef struct FSOverlayInfoHeader
|
||||
{
|
||||
|
|
@ -19,8 +23,8 @@ typedef struct FSOverlayInfoHeader
|
|||
FSOverlayInitFunc *sinit_init;
|
||||
FSOverlayInitFunc *sinit_init_end;
|
||||
u32 file_id;
|
||||
u32 compressed:24;
|
||||
u32 flag:8;
|
||||
u32 compressed: 24;
|
||||
u32 flag: 8;
|
||||
} FSOverlayInfoHeader;
|
||||
|
||||
typedef struct FSOverlayInfo
|
||||
|
|
@ -30,26 +34,35 @@ typedef struct FSOverlayInfo
|
|||
CARDRomRegion file_pos;
|
||||
} FSOverlayInfo;
|
||||
|
||||
static inline u8 *const FS_GetOverlayAddress(FSOverlayInfo * p_ovi)
|
||||
static inline u8 *const FS_GetOverlayAddress(FSOverlayInfo *p_ovi)
|
||||
{
|
||||
return p_ovi->header.ram_address;
|
||||
}
|
||||
|
||||
static inline u32 const FS_GetOverlayImageSize(FSOverlayInfo * p_ovi)
|
||||
static inline u32 const FS_GetOverlayImageSize(FSOverlayInfo *p_ovi)
|
||||
{
|
||||
return p_ovi->header.ram_size;
|
||||
}
|
||||
|
||||
static inline u32 const FS_GetOverlayTotalSize(FSOverlayInfo * p_ovi)
|
||||
static inline u32 const FS_GetOverlayTotalSize(FSOverlayInfo *p_ovi)
|
||||
{
|
||||
return p_ovi->header.ram_size + p_ovi->header.bss_size;
|
||||
}
|
||||
|
||||
BOOL FS_LoadOverlayInfo(FSOverlayInfo *p_ovi, MIProcessor target, FSOverlayID id);
|
||||
|
||||
BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id);
|
||||
|
||||
BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id);
|
||||
|
||||
BOOL FS_LoadOverlayImage(FSOverlayInfo *p_ovi);
|
||||
|
||||
void FS_StartOverlay(FSOverlayInfo *p_ovi);
|
||||
|
||||
BOOL FS_LoadOverlayImageAsync(FSOverlayInfo *p_ovi, FSFile *p_file);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif //NITRO_FS_OVERLAY_H_
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
.section .data
|
||||
.space 32
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
#include "global.h"
|
||||
|
||||
u32 UNK_021D7500[8];
|
||||
|
||||
THUMB_FUNC void MOD01_021D74E0(void)
|
||||
{
|
||||
UNK_021D7500[1]++;
|
||||
}
|
||||
|
||||
THUMB_FUNC void (*UNK_021D74F0[4])(void) = {
|
||||
MOD01_021D74E0
|
||||
};
|
||||
11
arm9/modules/01/src/module_01.cpp
Normal file
11
arm9/modules/01/src/module_01.cpp
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#include "global.h"
|
||||
#include "FS_overlay.h"
|
||||
|
||||
class Unk021D7500 {
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
public:
|
||||
THUMB_FUNC Unk021D7500() { unk4++; }
|
||||
};
|
||||
|
||||
static class Unk021D7500 UNK_021D7500;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
.section .data
|
||||
.space 32
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
.section .data
|
||||
.space 32
|
||||
|
|
@ -58938,9 +58938,12 @@ _0220BAB8:
|
|||
mov r0, r2
|
||||
bx lr
|
||||
|
||||
.section .data
|
||||
.section .rodata
|
||||
; 0x0220BAC0
|
||||
.incbin "baserom.nds", 0x1411e0, 0x4100
|
||||
.incbin "baserom.nds", 0x1411e0, 0x3D4
|
||||
|
||||
.section .data
|
||||
.incbin "baserom.nds", 0x1415C0, 0x3D20
|
||||
|
||||
.section .bss
|
||||
; 0x0220FBC0
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ SourceFileType GetFileType(std::string& path)
|
|||
|
||||
std::string extension = path.substr(pos + 1);
|
||||
|
||||
if (extension == "c")
|
||||
if (extension == "c" || extension == "cpp")
|
||||
return SourceFileType::Cpp;
|
||||
else if (extension == "s")
|
||||
return SourceFileType::Asm;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user