You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Merge branch 'master' into puppycamera2
This commit is contained in:
19
Makefile
19
Makefile
@@ -510,7 +510,7 @@ ifeq ($(COMPARE),1)
|
||||
@$(SHA1SUM) --quiet -c $(TARGET).sha1 && $(PRINT) "$(TARGET): $(GREEN)OK$(NO_COL)\n" || ($(PRINT) "$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\nThis is expected, and not an error, if you are making modifications.\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\n" && false)
|
||||
else
|
||||
@$(SHA1SUM) $(ROM)
|
||||
@$(PRINT) "${GREEN}Build succeeded.\n"
|
||||
@$(PRINT) "${GREEN}Build succeeded.$(NO_COL)\n"
|
||||
endif
|
||||
|
||||
clean:
|
||||
@@ -765,7 +765,7 @@ $(BUILD_DIR)/rsp/%.bin $(BUILD_DIR)/rsp/%_data.bin: rsp/%.s
|
||||
$(V)$(RSPASM) -sym $@.sym $(RSPASMFLAGS) -strequ CODE_FILE $(BUILD_DIR)/rsp/$*.bin -strequ DATA_FILE $(BUILD_DIR)/rsp/$*_data.bin $<
|
||||
|
||||
# Run linker script through the C preprocessor
|
||||
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)
|
||||
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(BUILD_DIR)/goddard.txt
|
||||
$(call print,Preprocessing linker script:,$<,$@)
|
||||
$(V)$(CPP) $(CPPFLAGS) -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<
|
||||
|
||||
@@ -779,10 +779,23 @@ $(BUILD_DIR)/libz.a: $(LIBZ_O_FILES)
|
||||
@$(PRINT) "$(GREEN)Linking libz: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(AR) rcs -o $@ $(LIBZ_O_FILES)
|
||||
|
||||
# SS2: Goddard rules to get size
|
||||
$(BUILD_DIR)/goddard.ld: goddard.ld $(BUILD_DIR)/libgoddard.a
|
||||
$(call print,Preprocessing linker script:,$<,$@)
|
||||
$(V)$(CPP) $(CPPFLAGS) -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<
|
||||
|
||||
$(BUILD_DIR)/goddard.elf: $(BUILD_DIR)/goddard.ld
|
||||
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $< -Map $(BUILD_DIR)/goddard.map --no-check-sections -o $@ -T tools/hardcoded_syms.txt $(wildcard $(BUILD_DIR)/src/menu/*.o) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib -lgoddard -u sprintf -u osMapTLB -Llib/gcclib/$(LIBGCCDIR) -lgcc
|
||||
|
||||
$(BUILD_DIR)/goddard.txt: $(BUILD_DIR)/goddard.elf
|
||||
$(call print,Getting Goddard size...)
|
||||
$(V)python3 tools/getGoddardSize.py $(BUILD_DIR)/goddard.map
|
||||
|
||||
# Link SM64 ELF file
|
||||
$(ELF): $(O_FILES) $(YAY0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libz.a $(BUILD_DIR)/libgoddard.a
|
||||
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB -Llib/gcclib/$(LIBGCCDIR) -lgcc
|
||||
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -T goddard.txt -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB -Llib/gcclib/$(LIBGCCDIR) -lgcc
|
||||
|
||||
# Build ROM
|
||||
$(ROM): $(ELF)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
diff --git a/include/text_strings.h.in b/include/text_strings.h.in
|
||||
index d266058..4b12426 100644
|
||||
index 8ccc6b1..d2bb516 100644
|
||||
--- a/include/text_strings.h.in
|
||||
+++ b/include/text_strings.h.in
|
||||
@@ -34,6 +34,12 @@
|
||||
#define TEXT_HUD_WIDE_INFO2 _("STRETCH THE IMAGE TO 16:9")
|
||||
@@ -33,6 +33,12 @@
|
||||
#define TEXT_HUD_WIDE_INFO _("PLEASE CONFIGURE YOUR DISPLAY OR YOUR EMULATOR TO\nSTRETCH THE IMAGE TO 16:9")
|
||||
#endif
|
||||
|
||||
+#define TEXT_CAM_INFO_SLOWEST _("CAM SPEED: SLOWEST")
|
||||
@@ -302,13 +302,13 @@ index dfcf16a..e56f8c0 100644
|
||||
}
|
||||
}
|
||||
diff --git a/src/game/game_init.c b/src/game/game_init.c
|
||||
index 6cfa8f5..63158e1 100644
|
||||
index 8693507..fb8729d 100644
|
||||
--- a/src/game/game_init.c
|
||||
+++ b/src/game/game_init.c
|
||||
@@ -46,6 +46,11 @@ OSContPad gControllerPads[4];
|
||||
u8 gControllerBits;
|
||||
u8 gIsConsole;
|
||||
u8 gBorderHeight;
|
||||
@@ -49,6 +49,11 @@ u8 gBorderHeight;
|
||||
#ifdef CUSTOM_DEBUG
|
||||
u8 gCustomDebugMode;
|
||||
#endif
|
||||
+u8 gCameraSpeed = 2;
|
||||
+u8 gWaterCamOverride;
|
||||
+u8 gFlyingCamOverride;
|
||||
@@ -317,7 +317,7 @@ index 6cfa8f5..63158e1 100644
|
||||
#ifdef EEP
|
||||
s8 gEepromProbe;
|
||||
#endif
|
||||
@@ -715,6 +720,7 @@ void thread5_game_loop(UNUSED void *arg) {
|
||||
@@ -725,6 +730,7 @@ void thread5_game_loop(UNUSED void *arg) {
|
||||
|
||||
play_music(SEQ_PLAYER_SFX, SEQUENCE_ARGS(0, SEQ_SOUND_PLAYER), 0);
|
||||
set_sound_mode(save_file_get_sound_mode());
|
||||
@@ -326,7 +326,7 @@ index 6cfa8f5..63158e1 100644
|
||||
gWidescreen = save_file_get_widescreen_mode();
|
||||
#endif
|
||||
diff --git a/src/game/game_init.h b/src/game/game_init.h
|
||||
index 87386ce..47e9724 100644
|
||||
index f3f650c..fdf20b6 100644
|
||||
--- a/src/game/game_init.h
|
||||
+++ b/src/game/game_init.h
|
||||
@@ -45,6 +45,10 @@ extern u8 gIsConsole;
|
||||
@@ -338,14 +338,14 @@ index 87386ce..47e9724 100644
|
||||
+extern u8 gFlyingCamOverride;
|
||||
+extern u8 gKeepCliffCam;
|
||||
extern u8 gBorderHeight;
|
||||
#ifdef EEP
|
||||
extern s8 gEepromProbe;
|
||||
#ifdef CUSTOM_DEBUG
|
||||
extern u8 gCustomDebugMode;
|
||||
diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c
|
||||
index 9cd458a..ac2d18c 100644
|
||||
index 158154c..9ffefec 100644
|
||||
--- a/src/game/ingame_menu.c
|
||||
+++ b/src/game/ingame_menu.c
|
||||
@@ -39,6 +39,12 @@ u8 textWideInfo[] = { TEXT_HUD_WIDE_INFO };
|
||||
u8 textWideInfo2[] = { TEXT_HUD_WIDE_INFO2 };
|
||||
@@ -38,6 +38,12 @@ u8 textPressL[] = { TEXT_HUD_PRESS_L };
|
||||
u8 textWideInfo[] = { TEXT_HUD_WIDE_INFO };
|
||||
#endif
|
||||
|
||||
+u8 textCamInfoSlowest[] = { TEXT_CAM_INFO_SLOWEST };
|
||||
@@ -357,7 +357,7 @@ index 9cd458a..ac2d18c 100644
|
||||
extern u8 gLastCompletedCourseNum;
|
||||
extern u8 gLastCompletedStarNum;
|
||||
|
||||
@@ -1350,6 +1356,45 @@ void reset_red_coins_collected(void) {
|
||||
@@ -1434,6 +1440,45 @@ void reset_red_coins_collected(void) {
|
||||
gRedCoinsCollected = 0;
|
||||
}
|
||||
|
||||
@@ -403,19 +403,23 @@ index 9cd458a..ac2d18c 100644
|
||||
void change_dialog_camera_angle(void) {
|
||||
if (cam_select_alt_mode(0) == CAM_SELECTION_MARIO) {
|
||||
gDialogCameraAngleIndex = CAM_SELECTION_MARIO;
|
||||
@@ -1779,6 +1824,7 @@ s16 render_pause_courses_and_castle(void) {
|
||||
@@ -1866,6 +1911,11 @@ s16 render_pause_courses_and_castle(void) {
|
||||
}
|
||||
#ifdef WIDE
|
||||
render_widescreen_setting();
|
||||
+ render_camera_speed_setting();
|
||||
if (gPlayer1Controller->buttonPressed & L_TRIG){
|
||||
gWidescreen ^= 1;
|
||||
save_file_set_widescreen_mode(gWidescreen);
|
||||
+ if (gPlayer1Controller->buttonPressed & L_TRIG){
|
||||
+ gWidescreen ^= 1;
|
||||
+ save_file_set_widescreen_mode(gWidescreen);
|
||||
+ }
|
||||
#endif
|
||||
if (gDialogTextAlpha < 250) {
|
||||
gDialogTextAlpha += 25;
|
||||
diff --git a/src/game/mario.c b/src/game/mario.c
|
||||
index b381afa..7cb9549 100644
|
||||
index c0b5f76..b6da9d4 100644
|
||||
--- a/src/game/mario.c
|
||||
+++ b/src/game/mario.c
|
||||
@@ -1443,32 +1443,39 @@ void update_mario_inputs(struct MarioState *m) {
|
||||
@@ -1460,32 +1460,39 @@ void update_mario_inputs(struct MarioState *m) {
|
||||
void set_submerged_cam_preset_and_spawn_bubbles(struct MarioState *m) {
|
||||
f32 heightBelowWater;
|
||||
s16 camPreset;
|
||||
@@ -550,7 +554,7 @@ index b27d869..7fbf045 100644
|
||||
if (save_file_get_flags() & SAVE_FLAG_CAP_ON_GROUND) {
|
||||
switch (gSaveBuffer.files[gCurrSaveFileNum - 1][0].capLevel) {
|
||||
diff --git a/src/game/save_file.h b/src/game/save_file.h
|
||||
index 00fc042..7062ead 100644
|
||||
index 3ac0c4d..d46a7e1 100644
|
||||
--- a/src/game/save_file.h
|
||||
+++ b/src/game/save_file.h
|
||||
@@ -62,6 +62,7 @@ struct MainMenuSaveData
|
||||
@@ -560,7 +564,7 @@ index 00fc042..7062ead 100644
|
||||
+ u8 cameraSpeedSetting: 3;
|
||||
|
||||
#ifdef VERSION_EU
|
||||
u16 language;
|
||||
u8 language: 2;
|
||||
@@ -167,6 +168,8 @@ u16 save_file_get_sound_mode(void);
|
||||
u8 save_file_get_widescreen_mode(void);
|
||||
void save_file_set_widescreen_mode(u8 mode);
|
||||
|
||||
46
goddard.ld
Normal file
46
goddard.ld
Normal file
@@ -0,0 +1,46 @@
|
||||
OUTPUT_ARCH (mips)
|
||||
|
||||
#define BEGIN_SEG(name, addr) \
|
||||
_##name##SegmentStart = ADDR(.name); \
|
||||
_##name##SegmentRomStart = __romPos; \
|
||||
.name addr : AT(__romPos)
|
||||
|
||||
#define END_SEG(name) \
|
||||
_##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \
|
||||
_##name##SegmentRomEnd = __romPos + SIZEOF(.name); \
|
||||
__romPos += SIZEOF(.name);
|
||||
|
||||
#define BEGIN_NOLOAD(name) \
|
||||
_##name##SegmentBssStart = ADDR(.name.noload); \
|
||||
.name.noload (NOLOAD) :
|
||||
|
||||
#define END_NOLOAD(name) \
|
||||
_##name##SegmentBssEnd = ADDR(.name.noload) + SIZEOF(.name.noload); \
|
||||
_##name##SegmentBssSize = SIZEOF(.name.noload);
|
||||
|
||||
SECTIONS {
|
||||
__romPos = 0;
|
||||
SEG_GODDARD = 0x80345670;
|
||||
BEGIN_SEG(goddard, SEG_GODDARD)
|
||||
{
|
||||
#define LOAD
|
||||
#include "goddard.ld.inc"
|
||||
#undef LOAD
|
||||
. = ALIGN(16);
|
||||
}
|
||||
END_SEG(goddard)
|
||||
BEGIN_NOLOAD(goddard) {
|
||||
#define NOLOAD
|
||||
#include "goddard.ld.inc"
|
||||
#undef NOLOAD
|
||||
. = ALIGN(16);
|
||||
}
|
||||
END_NOLOAD(goddard)
|
||||
|
||||
GODDARD_SIZE = SIZEOF(.goddard) + SIZEOF(.goddard.noload);
|
||||
|
||||
/DISCARD/ :
|
||||
{
|
||||
*(*);
|
||||
}
|
||||
}
|
||||
41
goddard.ld.inc
Normal file
41
goddard.ld.inc
Normal file
@@ -0,0 +1,41 @@
|
||||
#ifdef LOAD
|
||||
KEEP(BUILD_DIR/src/menu*.o(.text));
|
||||
KEEP(BUILD_DIR/src/menu*.o(.data*));
|
||||
KEEP(BUILD_DIR/src/menu*.o(.rodata*));
|
||||
#ifdef KEEP_MARIO_HEAD
|
||||
KEEP(BUILD_DIR/libgoddard.a:*.o(.text));
|
||||
KEEP(BUILD_DIR/libgoddard.a:gd_main.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:draw_objects.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:objects.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:particles.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:dynlist_proc.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:debug_utils.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:joints.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:shape_helper.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:renderer.o(.data*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:gd_main.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:gd_memory.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:draw_objects.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:objects.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:skin_movement.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:particles.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:dynlist_proc.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:old_menu.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:debug_utils.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:joints.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:skin.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:gd_math.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:shape_helper.o(.rodata*));
|
||||
KEEP(BUILD_DIR/libgoddard.a:renderer.o(.rodata*));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef NOLOAD
|
||||
KEEP(BUILD_DIR/src/menu*.o(.bss*));
|
||||
#ifdef KEEP_MARIO_HEAD
|
||||
KEEP(BUILD_DIR/libgoddard.a:*.o(.bss*));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
*/
|
||||
|
||||
#define SEG_POOL_START _framebuffersSegmentBssEnd // 0x0165000 in size
|
||||
#define SEG_GODDARD SEG_POOL_START + 0x113000
|
||||
|
||||
#define POOL_SIZE RAM_END - SEG_POOL_START
|
||||
|
||||
#endif // SEGMENTS_H
|
||||
|
||||
50
sm64.ld
50
sm64.ld
@@ -190,6 +190,7 @@ SECTIONS
|
||||
lib/PR/hvqm/hvqm2sp1.o(.rodata*);
|
||||
}
|
||||
END_SEG(main)
|
||||
ASSERT((_mainSegmentRomEnd <= 0x101000), "Error: Please shrink your main segment to under 1MB.")
|
||||
BEGIN_NOLOAD(main)
|
||||
{
|
||||
BUILD_DIR/src/game*.o(.*bss*);
|
||||
@@ -215,8 +216,6 @@ SECTIONS
|
||||
}
|
||||
END_NOLOAD(main)
|
||||
|
||||
/*ASSERT((. <= SEG_ENGINE), "Error: main segment extended into engine.")*/
|
||||
|
||||
. = _mainSegmentBssEnd;
|
||||
|
||||
BEGIN_SEG(engine, .)
|
||||
@@ -236,8 +235,6 @@ SECTIONS
|
||||
}
|
||||
END_NOLOAD(engine)
|
||||
|
||||
/*ASSERT((. <= SEG_FRAMEBUFFERS), "Error: engine segment extended into framebuffers.")*/
|
||||
|
||||
. = _engineSegmentBssEnd;
|
||||
BEGIN_NOLOAD(framebuffers)
|
||||
{
|
||||
@@ -301,47 +298,20 @@ SECTIONS
|
||||
END_SEG(behavior)
|
||||
|
||||
/* 0x8016F000 21D7D0-255EC0 [386F0] */
|
||||
BEGIN_SEG(goddard, SEG_GODDARD)
|
||||
BEGIN_SEG(goddard, RAM_END - GODDARD_SIZE)
|
||||
{
|
||||
BUILD_DIR/src/menu*.o(.text);
|
||||
BUILD_DIR/src/menu*.o(.data*);
|
||||
BUILD_DIR/src/menu*.o(.rodata*);
|
||||
#ifdef KEEP_MARIO_HEAD
|
||||
BUILD_DIR/libgoddard.a:*.o(.text);
|
||||
/* goddard subsystem data */
|
||||
BUILD_DIR/libgoddard.a:gd_main.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:draw_objects.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:objects.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:particles.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:dynlist_proc.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:debug_utils.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:joints.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:shape_helper.o(.data*);
|
||||
BUILD_DIR/libgoddard.a:renderer.o(.data*);
|
||||
/* goddard subsystem rodata */
|
||||
BUILD_DIR/libgoddard.a:gd_main.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:gd_memory.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:draw_objects.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:objects.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:skin_movement.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:particles.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:dynlist_proc.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:old_menu.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:debug_utils.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:joints.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:skin.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:gd_math.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:shape_helper.o(.rodata*);
|
||||
BUILD_DIR/libgoddard.a:renderer.o(.rodata*);
|
||||
#endif
|
||||
#define LOAD
|
||||
#include "goddard.ld.inc"
|
||||
#undef LOAD
|
||||
. = ALIGN(16);
|
||||
}
|
||||
END_SEG(goddard)
|
||||
BEGIN_NOLOAD(goddard)
|
||||
{
|
||||
BUILD_DIR/src/menu*.o(.bss*);
|
||||
#ifdef KEEP_MARIO_HEAD
|
||||
BUILD_DIR/libgoddard.a:*.o(.bss*);
|
||||
#endif
|
||||
#define NOLOAD
|
||||
#include "goddard.ld.inc"
|
||||
#undef NOLOAD
|
||||
. = ALIGN(16);
|
||||
}
|
||||
END_NOLOAD(goddard)
|
||||
|
||||
|
||||
@@ -416,6 +416,11 @@ void select_gfx_pool(void) {
|
||||
* - Selects which framebuffer will be rendered and displayed to next time.
|
||||
*/
|
||||
void display_and_vsync(void) {
|
||||
if (IO_READ(DPC_PIPEBUSY_REG) && gIsConsole != 1)
|
||||
{
|
||||
gIsConsole = 1;
|
||||
gBorderHeight = BORDER_HEIGHT_CONSOLE;
|
||||
}
|
||||
profiler_log_thread5_time(BEFORE_DISPLAY_LISTS);
|
||||
osRecvMesg(&gGfxVblankQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
if (gGoddardVblankCallback != NULL) {
|
||||
|
||||
12
tools/getGoddardSize.py
Normal file
12
tools/getGoddardSize.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import sys, os
|
||||
|
||||
with open(sys.argv[1]) as f:
|
||||
for line in f:
|
||||
if "GODDARD_SIZE" in line:
|
||||
tokens=line.split()
|
||||
with open("build/us/goddard.txt", "w+") as f:
|
||||
sz = int(tokens[0], 16)
|
||||
sz += 16
|
||||
sz &= 0xFFFFFFF0
|
||||
f.write("GODDARD_SIZE = 0x%X;" % sz)
|
||||
|
||||
5091
tools/hardcoded_syms.txt
Normal file
5091
tools/hardcoded_syms.txt
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user