mirror of https://github.com/pret/pokefirered
Merge branch 'porymap-6' into generate-map-constants
This commit is contained in:
commit
587d494421
110
Makefile
110
Makefile
|
|
@ -150,12 +150,20 @@ ifneq (,$(MAKECMDGOALS))
|
|||
endif
|
||||
endif
|
||||
|
||||
.SHELLSTATUS ?= 0
|
||||
|
||||
ifeq ($(SETUP_PREREQS),1)
|
||||
# If set on: Default target or a rule requiring a scan
|
||||
# Forcibly execute `make tools` since we need them for what we are doing.
|
||||
$(call infoshell, $(MAKE) -f make_tools.mk)
|
||||
$(foreach line, $(shell $(MAKE) -f make_tools.mk | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||
ifneq ($(.SHELLSTATUS),0)
|
||||
$(error Errors occurred while building tools. See error messages above for more details)
|
||||
endif
|
||||
# Oh and also generate mapjson sources before we use `SCANINC`.
|
||||
$(call infoshell, $(MAKE) generated)
|
||||
$(foreach line, $(shell $(MAKE) generated | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||
ifneq ($(.SHELLSTATUS),0)
|
||||
$(error Errors occurred while generating map-related sources. See error messages above for more details)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Collect sources
|
||||
|
|
@ -237,7 +245,10 @@ include spritesheet_rules.mk
|
|||
include json_data_rules.mk
|
||||
include audio_rules.mk
|
||||
|
||||
# NOTE: Tools must have been built prior (FIXME)
|
||||
# so you can't really call this rule directly
|
||||
generated: $(AUTO_GEN_TARGETS)
|
||||
@: # Silence the "Nothing to be done for `generated'" message, which some people were confusing for an error.
|
||||
|
||||
%.s: ;
|
||||
%.png: ;
|
||||
|
|
@ -252,8 +263,6 @@ generated: $(AUTO_GEN_TARGETS)
|
|||
%.lz: % ; $(GFX) $< $@
|
||||
%.rl: % ; $(GFX) $< $@
|
||||
|
||||
# NOTE: Tools must have been built prior (FIXME)
|
||||
generated: tools $(AUTO_GEN_TARGETS)
|
||||
clean-generated:
|
||||
@rm -f $(AUTO_GEN_TARGETS)
|
||||
@echo "rm -f <AUTO_GEN_TARGETS>"
|
||||
|
|
@ -288,71 +297,52 @@ endif
|
|||
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
|
||||
# It doesn't look like $(shell) can be deferred so there might not be a better way (Icedude_907: there is soon).
|
||||
|
||||
# For C dependencies.
|
||||
# Args: $1 = Output file without extension (build/assets/src/data), $2 = Input file (src/data.c)
|
||||
define C_DEP
|
||||
$(call C_DEP_IMPL,$1,$2,$1)
|
||||
endef
|
||||
# Internal implementation details.
|
||||
# $1: Output file without extension, $2 input file, $3 temp path (if keeping)
|
||||
define C_DEP_IMPL
|
||||
$1.o: $2
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
|
||||
ifneq ($(KEEP_TEMPS),1)
|
||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
||||
else
|
||||
@$$(CPP) $$(CPPFLAGS) $$< -o $3.i
|
||||
@$$(PREPROC) $3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $3.s
|
||||
@echo -e ".text\n\t.align\t2, 0 @ Don't pad with nop\n" >> $3.s
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $3.s
|
||||
@$(CPP) $(CPPFLAGS) $< -o $*.i
|
||||
@$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $*.s
|
||||
$(AS) $(ASFLAGS) -o $@ $*.s
|
||||
endif
|
||||
$1.d: $2
|
||||
$(SCANINC) -M $1.d $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $2
|
||||
|
||||
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
$1.o: $1.d
|
||||
-include $1.d
|
||||
endif
|
||||
endef
|
||||
|
||||
# Create generic rules if no dependency scanning, else create the real rules
|
||||
ifeq ($(NODEP),1)
|
||||
$(eval $(call C_DEP,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.c))
|
||||
else
|
||||
$(foreach src,$(C_SRCS),$(eval $(call C_DEP,$(OBJ_DIR)/$(basename $(src)),$(src))))
|
||||
-include $(addprefix $(OBJ_DIR)/,$(C_SRCS:.c=.d))
|
||||
endif
|
||||
|
||||
# Similar methodology for Assembly files
|
||||
# $1: Output path without extension, $2: Input file (`*.s`)
|
||||
define ASM_DEP
|
||||
$1.o: $2
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $$<
|
||||
$(call ASM_SCANINC,$1,$2)
|
||||
endef
|
||||
# As above but first doing a preprocessor pass
|
||||
define ASM_DEP_PREPROC
|
||||
$1.o: $2
|
||||
$$(PREPROC) $$< charmap.txt | $$(CPP) $(INCLUDE_SCANINC_ARGS) - | $$(PREPROC) -ie $$< charmap.txt | $$(AS) $$(ASFLAGS) -o $$@
|
||||
$(call ASM_SCANINC,$1,$2)
|
||||
endef
|
||||
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
$(ASM_BUILDDIR)/%.d: $(ASM_SUBDIR)/%.s
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||
|
||||
define ASM_SCANINC
|
||||
ifneq ($(NODEP),1)
|
||||
$1.o: $1.d
|
||||
$1.d: $2
|
||||
$(SCANINC) -M $1.d $(INCLUDE_SCANINC_ARGS) -I "" $2
|
||||
-include $1.d
|
||||
-include $(addprefix $(OBJ_DIR)/,$(ASM_SRCS:.s=.d))
|
||||
endif
|
||||
endef
|
||||
|
||||
# Dummy rules or real rules
|
||||
ifeq ($(NODEP),1)
|
||||
$(eval $(call ASM_DEP,$(ASM_BUILDDIR)/%,$(ASM_SUBDIR)/%.s))
|
||||
$(eval $(call ASM_DEP_PREPROC,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.s))
|
||||
$(eval $(call ASM_DEP_PREPROC,$(DATA_ASM_BUILDDIR)/%,$(DATA_ASM_SUBDIR)/%.s))
|
||||
else
|
||||
$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
||||
$(foreach src, $(C_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
||||
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
|
||||
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.s
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(C_ASM_SRCS:.s=.d))
|
||||
endif
|
||||
|
||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
|
||||
$(DATA_ASM_BUILDDIR)/%.d: $(DATA_ASM_SUBDIR)/%.s
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(REGULAR_DATA_ASM_SRCS:.s=.d))
|
||||
endif
|
||||
|
||||
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
||||
|
|
@ -376,8 +366,10 @@ endif
|
|||
# Final rules
|
||||
|
||||
# Elf from object files
|
||||
LDFLAGS = -Map ../../$(MAP)
|
||||
$(ELF): $(LD_SCRIPT) $(LD_SCRIPT_DEPS) $(OBJS)
|
||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
|
||||
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ <objs> <libs> | cat"
|
||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(GAME_REVISION) --silent
|
||||
|
||||
# Builds the rom from the elf file
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
lman
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
gFlashTimeoutFlag
|
||||
PollFlashStatus
|
||||
WaitForFlashWrite
|
||||
ProgramFlashSector
|
||||
gFlash
|
||||
ProgramFlashByte
|
||||
gFlashNumRemainingBytes
|
||||
EraseFlashChip
|
||||
EraseFlashSector
|
||||
gFlashMaxTime
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
gMonShrinkDuration
|
||||
gMonShrinkDelta
|
||||
gMonShrinkDistance
|
||||
|
|
@ -1 +0,0 @@
|
|||
gPokedudeBattlerStates
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
gPreBattleCallback1
|
||||
gBattleMainFunc
|
||||
gBattleResults
|
||||
gLeveledUpInBattle
|
||||
gBattlerControllerFuncs
|
||||
gHealthboxSpriteIds
|
||||
gMultiUsePlayerCursor
|
||||
gNumberOfMovesToChoose
|
||||
gBattleControllerData
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
gMultibootStart
|
||||
gMultibootStatus
|
||||
gMultibootSize
|
||||
gMultibootParam
|
||||
|
|
@ -1 +0,0 @@
|
|||
gWindowTileAutoAllocEnabled
|
||||
|
|
@ -1 +0,0 @@
|
|||
UnusedVarNeededToMatch
|
||||
|
|
@ -1 +0,0 @@
|
|||
gEReaderData
|
||||
|
|
@ -1 +0,0 @@
|
|||
gLastQuestLogStoredFlagOrVarIdx
|
||||
|
|
@ -1 +0,0 @@
|
|||
gCB2_AfterEvolution
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
gFameChecker_ListMenuTemplate
|
||||
gIconDescriptionBoxIsOpen
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
gFieldCamera
|
||||
gTotalCameraPixelOffsetY
|
||||
gTotalCameraPixelOffsetX
|
||||
|
|
@ -1 +0,0 @@
|
|||
gFieldInputRecord
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
sFieldSpecialsListMenuTemplate
|
||||
sFieldSpecialsListMenuScrollBuffer
|
||||
|
|
@ -1 +0,0 @@
|
|||
VMap
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
gHelpSystemState
|
||||
gHelpContextIdBackup
|
||||
|
|
@ -1 +0,0 @@
|
|||
gHelpSystemEnabled
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
gCanvasColumnStart
|
||||
gCanvasPixels
|
||||
gCanvasRowEnd
|
||||
gCanvasHeight
|
||||
gCanvasColumnEnd
|
||||
gCanvasRowStart
|
||||
gCanvasMonPersonality
|
||||
gCanvasWidth
|
||||
gCanvasPalette
|
||||
gCanvasPaletteStart
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
gRfuSlotStatusUNI
|
||||
gRfuSlotStatusNI
|
||||
gRfuLinkStatus
|
||||
gRfuStatic
|
||||
gRfuFixed
|
||||
|
|
@ -1 +0,0 @@
|
|||
gRfuSIO32Id
|
||||
|
|
@ -1 +0,0 @@
|
|||
gSTWIStatus
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
gLinkPartnersHeldKeys
|
||||
gLinkDebugSeed
|
||||
gLocalLinkPlayerBlock
|
||||
gLinkErrorOccurred
|
||||
gLinkDebugFlags
|
||||
gLinkFiller1
|
||||
gRemoteLinkPlayersNotReceived
|
||||
gBlockReceivedStatus
|
||||
gLinkFiller2
|
||||
gLinkHeldKeys
|
||||
gRecvCmds
|
||||
gLinkStatus
|
||||
gLinkDummy1
|
||||
gLinkDummy2
|
||||
gReadyToExitStandby
|
||||
gReadyToCloseLink
|
||||
gReadyCloseLinkType
|
||||
gSuppressLinkErrorMessage
|
||||
gWirelessCommType
|
||||
gSavedLinkPlayerCount
|
||||
gSendCmd
|
||||
gSavedMultiplayerId
|
||||
gReceivedRemoteLinkPlayers
|
||||
gLinkTestBGInfo
|
||||
gLinkCallback
|
||||
gShouldAdvanceLinkState
|
||||
gLinkTestBlockChecksums
|
||||
gBlockRequestType
|
||||
gLinkFiller3
|
||||
gLinkFiller4
|
||||
gLinkFiller5
|
||||
gLastSendQueueCount
|
||||
gLink
|
||||
gLastRecvQueueCount
|
||||
gLinkSavedIme
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
gHostRfuGameData
|
||||
gRfu
|
||||
gHostRfuUsername
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
gListMenuOverride
|
||||
gMultiuseListMenuTemplate
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
gFlashMemoryPresent
|
||||
gSaveBlock1Ptr
|
||||
gSaveBlock2Ptr
|
||||
gPokemonStoragePtr
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
gSoundInfo
|
||||
gPokemonCrySongs
|
||||
gPokemonCryMusicPlayers
|
||||
gMPlayJumpTable
|
||||
gCgbChans
|
||||
gPokemonCryTracks
|
||||
gPokemonCrySong
|
||||
gMPlayInfo_BGM
|
||||
gMPlayInfo_SE1
|
||||
gMPlayInfo_SE2
|
||||
gMPlayMemAccArea
|
||||
gMPlayInfo_SE3
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
gKeyRepeatStartDelay
|
||||
gLinkTransferringData
|
||||
gMain
|
||||
gKeyRepeatContinueDelay
|
||||
gSoftResetDisabled
|
||||
gIntrTable
|
||||
sVcountAfterSound
|
||||
gLinkVSyncDisabled
|
||||
IntrMain_Buffer
|
||||
sVcountAtIntr
|
||||
sVcountBeforeSound
|
||||
gPcmDmaCounter
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
gBGTilemapBuffers1
|
||||
gBGTilemapBuffers2
|
||||
gBGTilemapBuffers3
|
||||
gFieldCallback
|
||||
gFieldCallback2
|
||||
gHeldKeyCodeToSend
|
||||
gLocalLinkPlayerId
|
||||
gFieldLinkPlayerCount
|
||||
|
|
@ -1 +0,0 @@
|
|||
gItemUseCB
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
gQuestLogPlaybackState
|
||||
sMaxActionsInScene
|
||||
gQuestLogFieldInput
|
||||
sCurSceneActions
|
||||
|
|
@ -1 +0,0 @@
|
|||
gRngValue
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
gLastWrittenSector
|
||||
gLastSaveCounter
|
||||
gLastKnownGoodSector
|
||||
gDamagedSaveSectors
|
||||
gSaveCounter
|
||||
gSaveDataBufferPtr
|
||||
gIncrementalSectorId
|
||||
gSaveUnusedVar
|
||||
gSaveFileStatus
|
||||
gGameContinueCallback
|
||||
gRamSaveSectorLocations
|
||||
gSaveAttemptStatus
|
||||
|
|
@ -1 +0,0 @@
|
|||
sIsInSaveFailedScreen
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
sQuestLogScriptContextPtr
|
||||
gSelectedObjectEvent
|
||||
|
|
@ -1 +0,0 @@
|
|||
gDisableMusic
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
gOamMatrixAllocBitmap
|
||||
gReservedSpritePaletteCount
|
||||
|
|
@ -1 +0,0 @@
|
|||
gTasks
|
||||
|
|
@ -1 +0,0 @@
|
|||
gTextFlags
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
gFonts
|
||||
gGlyphInfo
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
gWindowClearTile
|
||||
gWindowBgTilemapBuffers
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
# Will be moved to build/ eventually
|
||||
map_groups.h
|
||||
layouts.h
|
||||
region_map_sections.h
|
||||
map_event_ids.h
|
||||
|
|
|
|||
|
|
@ -1,214 +0,0 @@
|
|||
#ifndef GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
|
||||
#define GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
|
||||
|
||||
#define MAPSEC_LITTLEROOT_TOWN 0x00
|
||||
#define MAPSEC_OLDALE_TOWN 0x01
|
||||
#define MAPSEC_DEWFORD_TOWN 0x02
|
||||
#define MAPSEC_LAVARIDGE_TOWN 0x03
|
||||
#define MAPSEC_FALLARBOR_TOWN 0x04
|
||||
#define MAPSEC_VERDANTURF_TOWN 0x05
|
||||
#define MAPSEC_PACIFIDLOG_TOWN 0x06
|
||||
#define MAPSEC_PETALBURG_CITY 0x07
|
||||
#define MAPSEC_SLATEPORT_CITY 0x08
|
||||
#define MAPSEC_MAUVILLE_CITY 0x09
|
||||
#define MAPSEC_RUSTBORO_CITY 0x0A
|
||||
#define MAPSEC_FORTREE_CITY 0x0B
|
||||
#define MAPSEC_LILYCOVE_CITY 0x0C
|
||||
#define MAPSEC_MOSSDEEP_CITY 0x0D
|
||||
#define MAPSEC_SOOTOPOLIS_CITY 0x0E
|
||||
#define MAPSEC_EVER_GRANDE_CITY 0x0F
|
||||
#define MAPSEC_ROUTE_101 0x10
|
||||
#define MAPSEC_ROUTE_102 0x11
|
||||
#define MAPSEC_ROUTE_103 0x12
|
||||
#define MAPSEC_ROUTE_104 0x13
|
||||
#define MAPSEC_ROUTE_105 0x14
|
||||
#define MAPSEC_ROUTE_106 0x15
|
||||
#define MAPSEC_ROUTE_107 0x16
|
||||
#define MAPSEC_ROUTE_108 0x17
|
||||
#define MAPSEC_ROUTE_109 0x18
|
||||
#define MAPSEC_ROUTE_110 0x19
|
||||
#define MAPSEC_ROUTE_111 0x1A
|
||||
#define MAPSEC_ROUTE_112 0x1B
|
||||
#define MAPSEC_ROUTE_113 0x1C
|
||||
#define MAPSEC_ROUTE_114 0x1D
|
||||
#define MAPSEC_ROUTE_115 0x1E
|
||||
#define MAPSEC_ROUTE_116 0x1F
|
||||
#define MAPSEC_ROUTE_117 0x20
|
||||
#define MAPSEC_ROUTE_118 0x21
|
||||
#define MAPSEC_ROUTE_119 0x22
|
||||
#define MAPSEC_ROUTE_120 0x23
|
||||
#define MAPSEC_ROUTE_121 0x24
|
||||
#define MAPSEC_ROUTE_122 0x25
|
||||
#define MAPSEC_ROUTE_123 0x26
|
||||
#define MAPSEC_ROUTE_124 0x27
|
||||
#define MAPSEC_ROUTE_125 0x28
|
||||
#define MAPSEC_ROUTE_126 0x29
|
||||
#define MAPSEC_ROUTE_127 0x2A
|
||||
#define MAPSEC_ROUTE_128 0x2B
|
||||
#define MAPSEC_ROUTE_129 0x2C
|
||||
#define MAPSEC_ROUTE_130 0x2D
|
||||
#define MAPSEC_ROUTE_131 0x2E
|
||||
#define MAPSEC_ROUTE_132 0x2F
|
||||
#define MAPSEC_ROUTE_133 0x30
|
||||
#define MAPSEC_ROUTE_134 0x31
|
||||
#define MAPSEC_UNDERWATER_124 0x32
|
||||
#define MAPSEC_UNDERWATER_125 0x33
|
||||
#define MAPSEC_UNDERWATER_126 0x34
|
||||
#define MAPSEC_UNDERWATER_127 0x35
|
||||
#define MAPSEC_UNDERWATER_SOOTOPOLIS 0x36
|
||||
#define MAPSEC_GRANITE_CAVE 0x37
|
||||
#define MAPSEC_MT_CHIMNEY 0x38
|
||||
#define MAPSEC_SAFARI_ZONE 0x39
|
||||
#define MAPSEC_BATTLE_FRONTIER 0x3A
|
||||
#define MAPSEC_PETALBURG_WOODS 0x3B
|
||||
#define MAPSEC_RUSTURF_TUNNEL 0x3C
|
||||
#define MAPSEC_ABANDONED_SHIP 0x3D
|
||||
#define MAPSEC_NEW_MAUVILLE 0x3E
|
||||
#define MAPSEC_METEOR_FALLS 0x3F
|
||||
#define MAPSEC_METEOR_FALLS2 0x40
|
||||
#define MAPSEC_MT_PYRE 0x41
|
||||
#define MAPSEC_AQUA_HIDEOUT_OLD 0x42
|
||||
#define MAPSEC_SHOAL_CAVE 0x43
|
||||
#define MAPSEC_SEAFLOOR_CAVERN 0x44
|
||||
#define MAPSEC_UNDERWATER_128 0x45
|
||||
#define MAPSEC_VICTORY_ROAD 0x46
|
||||
#define MAPSEC_MIRAGE_ISLAND 0x47
|
||||
#define MAPSEC_CAVE_OF_ORIGIN 0x48
|
||||
#define MAPSEC_SOUTHERN_ISLAND 0x49
|
||||
#define MAPSEC_FIERY_PATH 0x4A
|
||||
#define MAPSEC_FIERY_PATH2 0x4B
|
||||
#define MAPSEC_JAGGED_PASS 0x4C
|
||||
#define MAPSEC_JAGGED_PASS2 0x4D
|
||||
#define MAPSEC_SEALED_CHAMBER 0x4E
|
||||
#define MAPSEC_UNDERWATER_SEALED_CHAMBER 0x4F
|
||||
#define MAPSEC_SCORCHED_SLAB 0x50
|
||||
#define MAPSEC_ISLAND_CAVE 0x51
|
||||
#define MAPSEC_DESERT_RUINS 0x52
|
||||
#define MAPSEC_ANCIENT_TOMB 0x53
|
||||
#define MAPSEC_INSIDE_OF_TRUCK 0x54
|
||||
#define MAPSEC_SKY_PILLAR 0x55
|
||||
#define MAPSEC_SECRET_BASE 0x56
|
||||
#define MAPSEC_DYNAMIC 0x57
|
||||
|
||||
#define MAPSECS_KANTO 0x58
|
||||
|
||||
#define MAPSEC_PALLET_TOWN 0x58
|
||||
#define MAPSEC_VIRIDIAN_CITY 0x59
|
||||
#define MAPSEC_PEWTER_CITY 0x5A
|
||||
#define MAPSEC_CERULEAN_CITY 0x5B
|
||||
#define MAPSEC_LAVENDER_TOWN 0x5C
|
||||
#define MAPSEC_VERMILION_CITY 0x5D
|
||||
#define MAPSEC_CELADON_CITY 0x5E
|
||||
#define MAPSEC_FUCHSIA_CITY 0x5F
|
||||
#define MAPSEC_CINNABAR_ISLAND 0x60
|
||||
#define MAPSEC_INDIGO_PLATEAU 0x61
|
||||
#define MAPSEC_SAFFRON_CITY 0x62
|
||||
#define MAPSEC_ROUTE_4_POKECENTER 0x63
|
||||
#define MAPSEC_ROUTE_10_POKECENTER 0x64
|
||||
#define MAPSEC_ROUTE_1 0x65
|
||||
#define MAPSEC_ROUTE_2 0x66
|
||||
#define MAPSEC_ROUTE_3 0x67
|
||||
#define MAPSEC_ROUTE_4 0x68
|
||||
#define MAPSEC_ROUTE_5 0x69
|
||||
#define MAPSEC_ROUTE_6 0x6A
|
||||
#define MAPSEC_ROUTE_7 0x6B
|
||||
#define MAPSEC_ROUTE_8 0x6C
|
||||
#define MAPSEC_ROUTE_9 0x6D
|
||||
#define MAPSEC_ROUTE_10 0x6E
|
||||
#define MAPSEC_ROUTE_11 0x6F
|
||||
#define MAPSEC_ROUTE_12 0x70
|
||||
#define MAPSEC_ROUTE_13 0x71
|
||||
#define MAPSEC_ROUTE_14 0x72
|
||||
#define MAPSEC_ROUTE_15 0x73
|
||||
#define MAPSEC_ROUTE_16 0x74
|
||||
#define MAPSEC_ROUTE_17 0x75
|
||||
#define MAPSEC_ROUTE_18 0x76
|
||||
#define MAPSEC_ROUTE_19 0x77
|
||||
#define MAPSEC_ROUTE_20 0x78
|
||||
#define MAPSEC_ROUTE_21 0x79
|
||||
#define MAPSEC_ROUTE_22 0x7A
|
||||
#define MAPSEC_ROUTE_23 0x7B
|
||||
#define MAPSEC_ROUTE_24 0x7C
|
||||
#define MAPSEC_ROUTE_25 0x7D
|
||||
#define MAPSEC_VIRIDIAN_FOREST 0x7E
|
||||
#define MAPSEC_MT_MOON 0x7F
|
||||
#define MAPSEC_S_S_ANNE 0x80
|
||||
#define MAPSEC_UNDERGROUND_PATH 0x81
|
||||
#define MAPSEC_UNDERGROUND_PATH_2 0x82
|
||||
#define MAPSEC_DIGLETTS_CAVE 0x83
|
||||
#define MAPSEC_KANTO_VICTORY_ROAD 0x84
|
||||
#define MAPSEC_ROCKET_HIDEOUT 0x85
|
||||
#define MAPSEC_SILPH_CO 0x86
|
||||
#define MAPSEC_POKEMON_MANSION 0x87
|
||||
#define MAPSEC_KANTO_SAFARI_ZONE 0x88
|
||||
#define MAPSEC_POKEMON_LEAGUE 0x89
|
||||
#define MAPSEC_ROCK_TUNNEL 0x8A
|
||||
#define MAPSEC_SEAFOAM_ISLANDS 0x8B
|
||||
#define MAPSEC_POKEMON_TOWER 0x8C
|
||||
#define MAPSEC_CERULEAN_CAVE 0x8D
|
||||
#define MAPSEC_POWER_PLANT 0x8E
|
||||
|
||||
#define MAPSECS_SEVII_123 0x8F
|
||||
|
||||
#define MAPSEC_ONE_ISLAND 0x8F
|
||||
#define MAPSEC_TWO_ISLAND 0x90
|
||||
#define MAPSEC_THREE_ISLAND 0x91
|
||||
#define MAPSEC_FOUR_ISLAND 0x92
|
||||
#define MAPSEC_FIVE_ISLAND 0x93
|
||||
#define MAPSEC_SEVEN_ISLAND 0x94
|
||||
#define MAPSEC_SIX_ISLAND 0x95
|
||||
#define MAPSEC_KINDLE_ROAD 0x96
|
||||
#define MAPSEC_TREASURE_BEACH 0x97
|
||||
#define MAPSEC_CAPE_BRINK 0x98
|
||||
#define MAPSEC_BOND_BRIDGE 0x99
|
||||
#define MAPSEC_THREE_ISLE_PORT 0x9A
|
||||
#define MAPSEC_SEVII_ISLE_6 0x9B
|
||||
#define MAPSEC_SEVII_ISLE_7 0x9C
|
||||
#define MAPSEC_SEVII_ISLE_8 0x9D
|
||||
#define MAPSEC_SEVII_ISLE_9 0x9E
|
||||
#define MAPSEC_RESORT_GORGEOUS 0x9F
|
||||
#define MAPSEC_WATER_LABYRINTH 0xA0
|
||||
#define MAPSEC_FIVE_ISLE_MEADOW 0xA1
|
||||
#define MAPSEC_MEMORIAL_PILLAR 0xA2
|
||||
#define MAPSEC_OUTCAST_ISLAND 0xA3
|
||||
#define MAPSEC_GREEN_PATH 0xA4
|
||||
#define MAPSEC_WATER_PATH 0xA5
|
||||
#define MAPSEC_RUIN_VALLEY 0xA6
|
||||
#define MAPSEC_TRAINER_TOWER 0xA7
|
||||
#define MAPSEC_CANYON_ENTRANCE 0xA8
|
||||
#define MAPSEC_SEVAULT_CANYON 0xA9
|
||||
#define MAPSEC_TANOBY_RUINS 0xAA
|
||||
#define MAPSEC_SEVII_ISLE_22 0xAB
|
||||
#define MAPSEC_SEVII_ISLE_23 0xAC
|
||||
#define MAPSEC_SEVII_ISLE_24 0xAD
|
||||
#define MAPSEC_NAVEL_ROCK 0xAE
|
||||
#define MAPSEC_MT_EMBER 0xAF
|
||||
#define MAPSEC_BERRY_FOREST 0xB0
|
||||
#define MAPSEC_ICEFALL_CAVE 0xB1
|
||||
#define MAPSEC_ROCKET_WAREHOUSE 0xB2
|
||||
#define MAPSEC_TRAINER_TOWER_2 0xB3
|
||||
#define MAPSEC_DOTTED_HOLE 0xB4
|
||||
#define MAPSEC_LOST_CAVE 0xB5
|
||||
#define MAPSEC_PATTERN_BUSH 0xB6
|
||||
#define MAPSEC_ALTERING_CAVE 0xB7
|
||||
#define MAPSEC_TANOBY_CHAMBERS 0xB8
|
||||
#define MAPSEC_THREE_ISLE_PATH 0xB9
|
||||
#define MAPSEC_TANOBY_KEY 0xBA
|
||||
#define MAPSEC_BIRTH_ISLAND 0xBB
|
||||
#define MAPSEC_MONEAN_CHAMBER 0xBC
|
||||
#define MAPSEC_LIPTOO_CHAMBER 0xBD
|
||||
#define MAPSEC_WEEPTH_CHAMBER 0xBE
|
||||
#define MAPSEC_DILFORD_CHAMBER 0xBF
|
||||
#define MAPSEC_SCUFIB_CHAMBER 0xC0
|
||||
#define MAPSEC_RIXY_CHAMBER 0xC1
|
||||
#define MAPSEC_VIAPOIS_CHAMBER 0xC2
|
||||
#define MAPSEC_EMBER_SPA 0xC3
|
||||
#define MAPSEC_SPECIAL_AREA 0xC4
|
||||
#define MAPSEC_NONE 0xC5
|
||||
#define MAPSEC_COUNT 0xC6
|
||||
|
||||
#define METLOC_SPECIAL_EGG 0xFD
|
||||
#define METLOC_IN_GAME_TRADE 0xFE
|
||||
#define METLOC_FATEFUL_ENCOUNTER 0xFF
|
||||
|
||||
#endif //GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
|
||||
|
|
@ -13,6 +13,7 @@
|
|||
#define IWRAM_DATA __attribute__((section("iwram_data")))
|
||||
#define EWRAM_DATA __attribute__((section("ewram_data")))
|
||||
#endif
|
||||
#define COMMON_DATA __attribute__((section("common_data")))
|
||||
|
||||
#if MODERN
|
||||
#define NOINLINE __attribute__((noinline))
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@ $(DATA_SRC_SUBDIR)/region_map/region_map_entry_strings.h: $(DATA_SRC_SUBDIR)/reg
|
|||
|
||||
$(C_BUILDDIR)/region_map.o: c_dep += $(DATA_SRC_SUBDIR)/region_map/region_map_entry_strings.h
|
||||
|
||||
AUTO_GEN_TARGETS += include/constants/region_map_sections.h
|
||||
include/constants/region_map_sections.h: $(DATA_SRC_SUBDIR)/region_map/region_map_sections.json $(DATA_SRC_SUBDIR)/region_map/region_map_sections.constants.json.txt
|
||||
$(JSONPROC) $^ $@
|
||||
|
||||
AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/items.h
|
||||
$(DATA_SRC_SUBDIR)/items.h: $(DATA_SRC_SUBDIR)/items.json $(DATA_SRC_SUBDIR)/items.json.txt
|
||||
$(JSONPROC) $^ $@
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ SECTIONS {
|
|||
|
||||
/* COMMON starts at 0x30030E0 */
|
||||
INCLUDE "sym_common.ld"
|
||||
src/*.o(COMMON);
|
||||
|
||||
*libc.a:sbrkr.o(COMMON);
|
||||
end = .;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ SECTIONS {
|
|||
|
||||
/* COMMON starts at 0x30022A8 */
|
||||
*(COMMON);
|
||||
*(common_data);
|
||||
end = .;
|
||||
__end__ = .;
|
||||
} > IWRAM
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
#define FSP_ON 0x01
|
||||
#define FSP_START 0x02
|
||||
|
||||
LINK_MANAGER lman;
|
||||
COMMON_DATA LINK_MANAGER lman = {0};
|
||||
|
||||
static void rfu_LMAN_clearVariables(void);
|
||||
static void rfu_LMAN_settingPCSWITCH(u32 rand);
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@ static u16 sTimerCount;
|
|||
static vu16 *sTimerReg;
|
||||
static u16 sSavedIme;
|
||||
|
||||
u8 gFlashTimeoutFlag;
|
||||
u8 (*PollFlashStatus)(u8 *);
|
||||
u16 (*WaitForFlashWrite)(u8 phase, u8 *addr, u8 lastData);
|
||||
u16 (*ProgramFlashSector)(u16 sectorNum, void *src);
|
||||
const struct FlashType *gFlash;
|
||||
u16 (*ProgramFlashByte)(u16 sectorNum, u32 offset, u8 data);
|
||||
u16 gFlashNumRemainingBytes;
|
||||
u16 (*EraseFlashChip)();
|
||||
u16 (*EraseFlashSector)(u16 sectorNum);
|
||||
const u16 *gFlashMaxTime;
|
||||
COMMON_DATA u8 gFlashTimeoutFlag = 0;
|
||||
COMMON_DATA u8 (*PollFlashStatus)(u8 *) = NULL;
|
||||
COMMON_DATA u16 (*WaitForFlashWrite)(u8 phase, u8 *addr, u8 lastData) = NULL;
|
||||
COMMON_DATA u16 (*ProgramFlashSector)(u16 sectorNum, void *src) = NULL;
|
||||
COMMON_DATA const struct FlashType *gFlash = NULL;
|
||||
COMMON_DATA u16 (*ProgramFlashByte)(u16 sectorNum, u32 offset, u8 data) = NULL;
|
||||
COMMON_DATA u16 gFlashNumRemainingBytes = 0;
|
||||
COMMON_DATA u16 (*EraseFlashChip)() = NULL;
|
||||
COMMON_DATA u16 (*EraseFlashSector)(u16 sectorNum) = NULL;
|
||||
COMMON_DATA const u16 *gFlashMaxTime = NULL;
|
||||
|
||||
void SetReadFlash1(u16 *dest);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@
|
|||
#define TAG_PARTICLES_LUXURYBALL 55030
|
||||
#define TAG_PARTICLES_PREMIERBALL 55031
|
||||
|
||||
u32 gMonShrinkDuration;
|
||||
u16 gMonShrinkDelta;
|
||||
u16 gMonShrinkDistance;
|
||||
COMMON_DATA u32 gMonShrinkDuration = 0;
|
||||
COMMON_DATA u16 gMonShrinkDelta = 0;
|
||||
COMMON_DATA u16 gMonShrinkDistance = 0;
|
||||
|
||||
static void AnimTask_UnusedLevelUpHealthBox_Step(u8);
|
||||
static void AnimTask_FlashHealthboxOnLevelUp_Step(u8);
|
||||
|
|
|
|||
|
|
@ -2424,7 +2424,7 @@ static const struct PokedudeBattlePartyInfo *const sPokedudeBattlePartyPointers[
|
|||
[TTVSCR_CATCHING] = sParties_Catching,
|
||||
};
|
||||
|
||||
struct PokedudeBattlerState *gPokedudeBattlerStates[MAX_BATTLERS_COUNT];
|
||||
COMMON_DATA struct PokedudeBattlerState *gPokedudeBattlerStates[MAX_BATTLERS_COUNT] = {0};
|
||||
|
||||
static void PokedudeSimulateInputChooseAction(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -220,15 +220,15 @@ EWRAM_DATA u16 gBattleMovePower = 0;
|
|||
EWRAM_DATA u16 gMoveToLearn = 0;
|
||||
EWRAM_DATA u8 gBattleMonForms[MAX_BATTLERS_COUNT] = {0};
|
||||
|
||||
void (*gPreBattleCallback1)(void);
|
||||
void (*gBattleMainFunc)(void);
|
||||
struct BattleResults gBattleResults;
|
||||
u8 gLeveledUpInBattle;
|
||||
void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
|
||||
u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
|
||||
u8 gMultiUsePlayerCursor;
|
||||
u8 gNumberOfMovesToChoose;
|
||||
u8 gBattleControllerData[MAX_BATTLERS_COUNT];
|
||||
COMMON_DATA void (*gPreBattleCallback1)(void) = NULL;
|
||||
COMMON_DATA void (*gBattleMainFunc)(void) = NULL;
|
||||
COMMON_DATA struct BattleResults gBattleResults = {0};
|
||||
COMMON_DATA u8 gLeveledUpInBattle = 0;
|
||||
COMMON_DATA void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void) = {0};
|
||||
COMMON_DATA u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT] = {0};
|
||||
COMMON_DATA u8 gMultiUsePlayerCursor = 0;
|
||||
COMMON_DATA u8 gNumberOfMovesToChoose = 0;
|
||||
COMMON_DATA u8 gBattleControllerData[MAX_BATTLERS_COUNT] = {0};
|
||||
|
||||
static const struct ScanlineEffectParams sIntroScanlineParams16Bit =
|
||||
{
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ static const u8 sText_PkmnAnchoredItself[] = _("{B_DEF_NAME_WITH_PREFIX} anchore
|
|||
static const u8 sText_PkmnWasMadeDrowsy[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!");
|
||||
static const u8 sText_PkmnKnockedOff[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!");
|
||||
static const u8 sText_PkmnSwappedAbilities[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!");
|
||||
static const u8 sText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent's moveシsス!");
|
||||
static const u8 sText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent's move(s)!");
|
||||
static const u8 sText_PkmnWantsGrudge[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!");
|
||||
static const u8 sText_PkmnLostPPGrudge[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost\nall its PP due to the GRUDGE!");
|
||||
static const u8 sText_PkmnShroudedItself[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!");
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@ enum {
|
|||
STATE_RETRY,
|
||||
};
|
||||
|
||||
const void *gMultibootStart;
|
||||
int gMultibootStatus;
|
||||
size_t gMultibootSize;
|
||||
struct MultiBootParam gMultibootParam;
|
||||
COMMON_DATA const void *gMultibootStart = NULL;
|
||||
COMMON_DATA int gMultibootStatus = 0;
|
||||
COMMON_DATA size_t gMultibootSize = 0;
|
||||
COMMON_DATA struct MultiBootParam gMultibootParam = {0};
|
||||
|
||||
static void CB2_BerryFix(void);
|
||||
static void Task_BerryFixMain(u8 taskId);
|
||||
|
|
|
|||
2
src/bg.c
2
src/bg.c
|
|
@ -43,7 +43,7 @@ static struct BgConfig2 sGpuBgConfigs2[4];
|
|||
static u32 sDmaBusyBitfield[4];
|
||||
static u8 gpu_tile_allocation_map_bg[0x100];
|
||||
|
||||
bool32 gWindowTileAutoAllocEnabled;
|
||||
COMMON_DATA bool32 gWindowTileAutoAllocEnabled = 0;
|
||||
|
||||
static const struct BgConfig sZeroedBgControlStruct = { 0 };
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#include "constants/field_weather.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
u32 UnusedVarNeededToMatch[8];
|
||||
COMMON_DATA u32 UnusedVarNeededToMatch[8] = {0};
|
||||
|
||||
static void Task_LinkupStart(u8 taskId);
|
||||
static void Task_LinkupAwaitConnection(u8 taskId);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
{{ doNotModifyHeader }}
|
||||
#ifndef GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
|
||||
#define GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
|
||||
|
||||
enum {
|
||||
## for map_section in map_sections
|
||||
{{ map_section.id }},
|
||||
## endfor
|
||||
MAPSEC_NONE,
|
||||
MAPSEC_COUNT
|
||||
};
|
||||
|
||||
// Values before KANTO_MAPSEC_START are assumed to have no data.
|
||||
#define KANTO_MAPSEC_START MAPSEC_PALLET_TOWN
|
||||
|
||||
// Values starting from SEVII_MAPSEC_START are assumed to have data in sSeviiMapsecs.
|
||||
#define SEVII_MAPSEC_START MAPSEC_ONE_ISLAND
|
||||
|
||||
// Special location IDs that use the same value space as MAPSECs.
|
||||
#define METLOC_SPECIAL_EGG 0xFD
|
||||
#define METLOC_IN_GAME_TRADE 0xFE
|
||||
#define METLOC_FATEFUL_ENCOUNTER 0xFF
|
||||
|
||||
#endif // GUARD_CONSTANTS_REGION_MAP_SECTIONS_H
|
||||
|
|
@ -3,24 +3,30 @@
|
|||
#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
|
||||
|
||||
## for map_section in map_sections
|
||||
{% if isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.map_section) }}{% endif %}
|
||||
{% if existsIn(map_section, "name") and isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.id) }}{% endif %}
|
||||
## endfor
|
||||
|
||||
static const u8 *const sMapNames[] = {
|
||||
## for map_section in map_sections
|
||||
[{{ map_section.map_section }} - MAPSECS_KANTO] = sMapsecName_{{ cleanString(map_section.name) }}{% if existsIn(map_section, "name_clone") %}_Clone{% endif %},
|
||||
{% if existsIn(map_section, "name") %}
|
||||
[{{ map_section.id }} - KANTO_MAPSEC_START] = sMapsecName_{{ cleanString(map_section.name) }}{% if existsIn(map_section, "name_clone") %}_Clone{% endif %},
|
||||
{% endif %}
|
||||
## endfor
|
||||
};
|
||||
|
||||
static const u16 sMapSectionTopLeftCorners[MAPSEC_COUNT][2] = {
|
||||
## for map_section in map_sections
|
||||
[{{ map_section.map_section }} - MAPSECS_KANTO] = { {{ map_section.x }}, {{ map_section.y }} },
|
||||
{% if existsIn(map_section, "x") and existsIn(map_section, "y") %}
|
||||
[{{ map_section.id }} - KANTO_MAPSEC_START] = { {{ map_section.x }}, {{ map_section.y }} },
|
||||
{% endif %}
|
||||
## endfor
|
||||
};
|
||||
|
||||
static const u16 sMapSectionDimensions[MAPSEC_COUNT][2] = {
|
||||
## for map_section in map_sections
|
||||
[{{ map_section.map_section }} - MAPSECS_KANTO] = { {{ map_section.width }}, {{ map_section.height }} },
|
||||
{% if existsIn(map_section, "width") and existsIn(map_section, "height") %}
|
||||
[{{ map_section.id }} - KANTO_MAPSEC_START] = { {{ map_section.width }}, {{ map_section.height }} },
|
||||
{% endif %}
|
||||
## endfor
|
||||
};
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -3,16 +3,18 @@
|
|||
#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRY_STRINGS_H
|
||||
|
||||
## for map_section in map_sections
|
||||
{% if isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.map_section) }}{% endif %}
|
||||
{% if existsIn(map_section, "name") and isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.id) }}{% endif %}
|
||||
## endfor
|
||||
|
||||
## for map_section in map_sections
|
||||
{% if getVar(map_section.name) == map_section.map_section %}
|
||||
{% if existsIn(map_section, "name") %}
|
||||
{% if getVar(map_section.name) == map_section.id %}
|
||||
static const u8 sMapsecName_{{ cleanString(map_section.name) }}[] = _("{{ map_section.name }}");
|
||||
{% endif %}
|
||||
{% if existsIn(map_section, "name_clone") %}
|
||||
static const u8 sMapsecName_{{ cleanString(map_section.name) }}_Clone[] = _("{{ map_section.name }}");
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
## endfor
|
||||
|
||||
#endif // GUARD_DATA_REGION_MAP_REGION_MAP_ENTRY_STRINGS_H
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ struct EReaderData
|
|||
|
||||
static void Task_EReader(u8);
|
||||
|
||||
struct EReaderData gEReaderData;
|
||||
COMMON_DATA struct EReaderData gEReaderData = {0};
|
||||
|
||||
extern const u8 gMultiBootProgram_EReader_Start[];
|
||||
extern const u8 gMultiBootProgram_EReader_End[];
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ EWRAM_DATA u16 gSpecialVar_PrevTextColor = 0;
|
|||
EWRAM_DATA u16 gSpecialVar_0x8014 = 0;
|
||||
EWRAM_DATA u8 sSpecialFlags[SPECIAL_FLAGS_SIZE] = {};
|
||||
|
||||
u16 gLastQuestLogStoredFlagOrVarIdx;
|
||||
COMMON_DATA u16 gLastQuestLogStoredFlagOrVarIdx = 0;
|
||||
|
||||
extern u16 *const gSpecialVars[];
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL;
|
|||
static EWRAM_DATA u16 *sBgAnimPal = NULL;
|
||||
|
||||
// IWRAM common
|
||||
void (*gCB2_AfterEvolution)(void);
|
||||
COMMON_DATA void (*gCB2_AfterEvolution)(void) = NULL;
|
||||
|
||||
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
|
||||
#define sEvoGraphicsTaskId gBattleCommunication[2]
|
||||
|
|
|
|||
|
|
@ -57,8 +57,8 @@ static EWRAM_DATA struct FameCheckerData * sFameCheckerData = NULL;
|
|||
static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL;
|
||||
static EWRAM_DATA s32 sLastMenuIdx = 0;
|
||||
|
||||
struct ListMenuTemplate gFameChecker_ListMenuTemplate;
|
||||
u8 gIconDescriptionBoxIsOpen;
|
||||
COMMON_DATA struct ListMenuTemplate gFameChecker_ListMenuTemplate = {0};
|
||||
COMMON_DATA u8 gIconDescriptionBoxIsOpen = 0;
|
||||
|
||||
static void MainCB2_LoadFameChecker(void);
|
||||
static void LoadUISpriteSheetsAndPalettes(void);
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@ static s16 sVerticalCameraPan;
|
|||
static u8 sBikeCameraPanFlag;
|
||||
static void (*sFieldCameraPanningCallback)(void);
|
||||
|
||||
struct CameraObject gFieldCamera;
|
||||
u16 gTotalCameraPixelOffsetY;
|
||||
u16 gTotalCameraPixelOffsetX;
|
||||
COMMON_DATA struct CameraObject gFieldCamera = {0};
|
||||
COMMON_DATA u16 gTotalCameraPixelOffsetY = 0;
|
||||
COMMON_DATA u16 gTotalCameraPixelOffsetX = 0;
|
||||
|
||||
// text
|
||||
static void move_tilemap_camera_to_upper_left_corner_(struct FieldCameraOffset *cameraOffset)
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ static bool8 TryDoorWarp(struct MapPosition * position, u16 metatileBehavior, u8
|
|||
static s8 GetWarpEventAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
|
||||
static const u8 *GetCoordEventScriptAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
|
||||
|
||||
struct FieldInput gFieldInputRecord;
|
||||
COMMON_DATA struct FieldInput gFieldInputRecord = {0};
|
||||
|
||||
void FieldClearPlayerInput(struct FieldInput *input)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ static EWRAM_DATA u16 sListMenuLastScrollPosition = 0;
|
|||
static EWRAM_DATA u8 sPCBoxToSendMon = 0;
|
||||
static EWRAM_DATA u8 sBrailleTextCursorSpriteID = 0;
|
||||
|
||||
struct ListMenuTemplate sFieldSpecialsListMenuTemplate;
|
||||
u16 sFieldSpecialsListMenuScrollBuffer;
|
||||
COMMON_DATA struct ListMenuTemplate sFieldSpecialsListMenuTemplate = {0};
|
||||
COMMON_DATA u16 sFieldSpecialsListMenuScrollBuffer = 0;
|
||||
|
||||
static void Task_AnimatePcTurnOn(u8 taskId);
|
||||
static void PcTurnOnUpdateMetatileId(bool16 flag);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ struct ConnectionFlags
|
|||
u8 east:1;
|
||||
};
|
||||
|
||||
struct BackupMapLayout VMap;
|
||||
COMMON_DATA struct BackupMapLayout VMap = {0};
|
||||
EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
|
||||
EWRAM_DATA struct MapHeader gMapHeader = {};
|
||||
EWRAM_DATA struct Camera gCamera = {};
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ struct HelpSystemState
|
|||
u8 scrollSub;
|
||||
};
|
||||
|
||||
struct HelpSystemState gHelpSystemState;
|
||||
u16 gHelpContextIdBackup;
|
||||
COMMON_DATA struct HelpSystemState gHelpSystemState = {0};
|
||||
COMMON_DATA u16 gHelpContextIdBackup = 0;
|
||||
|
||||
static bool32 IsCurrentMapInArray(const u16 * mapIdxs);
|
||||
static void BuildMainTopicsListAndMoveToH00(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#define ZERO 0
|
||||
|
||||
bool8 gHelpSystemEnabled;
|
||||
COMMON_DATA bool8 gHelpSystemEnabled = 0;
|
||||
|
||||
struct HelpSystemVideoState
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@
|
|||
#include "image_processing_effects.h"
|
||||
|
||||
// IWRAM common
|
||||
u8 gCanvasColumnStart;
|
||||
u16 (*gCanvasPixels)[][32];
|
||||
u8 gCanvasRowEnd;
|
||||
u8 gCanvasHeight;
|
||||
u8 gCanvasColumnEnd;
|
||||
u8 gCanvasRowStart;
|
||||
u8 gCanvasMonPersonality;
|
||||
u8 gCanvasWidth;
|
||||
u16 *gCanvasPalette;
|
||||
u16 gCanvasPaletteStart;
|
||||
COMMON_DATA u8 gCanvasColumnStart = 0;
|
||||
COMMON_DATA u16 (*gCanvasPixels)[][32] = {0};
|
||||
COMMON_DATA u8 gCanvasRowEnd = 0;
|
||||
COMMON_DATA u8 gCanvasHeight = 0;
|
||||
COMMON_DATA u8 gCanvasColumnEnd = 0;
|
||||
COMMON_DATA u8 gCanvasRowStart = 0;
|
||||
COMMON_DATA u8 gCanvasMonPersonality = 0;
|
||||
COMMON_DATA u8 gCanvasWidth = 0;
|
||||
COMMON_DATA u16 *gCanvasPalette = NULL;
|
||||
COMMON_DATA u16 gCanvasPaletteStart = 0;
|
||||
|
||||
static void ApplyImageEffect_Pointillism(void);
|
||||
static void ApplyImageEffect_Blur(void);
|
||||
|
|
|
|||
|
|
@ -68,11 +68,11 @@ static void rfu_STC_NI_receive_Sender(u8, u8, const struct RfuLocalStruct *, con
|
|||
static void rfu_STC_NI_initSlot_asRecvDataEntity(u8, struct NIComm *);
|
||||
static void rfu_STC_NI_initSlot_asRecvControllData(u8, struct NIComm *);
|
||||
|
||||
struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX];
|
||||
struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX];
|
||||
struct RfuLinkStatus *gRfuLinkStatus;
|
||||
struct RfuStatic *gRfuStatic;
|
||||
struct RfuFixed *gRfuFixed;
|
||||
COMMON_DATA struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX] = {0};
|
||||
COMMON_DATA struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX] = {0};
|
||||
COMMON_DATA struct RfuLinkStatus *gRfuLinkStatus = NULL;
|
||||
COMMON_DATA struct RfuStatic *gRfuStatic = NULL;
|
||||
COMMON_DATA struct RfuFixed *gRfuFixed = NULL;
|
||||
|
||||
static const struct LLSFStruct llsf_struct[2] = {
|
||||
[MODE_CHILD] = {
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ struct RfuSIO32Id
|
|||
u16 lastId;
|
||||
};
|
||||
|
||||
struct RfuSIO32Id gRfuSIO32Id;
|
||||
COMMON_DATA struct RfuSIO32Id gRfuSIO32Id = {0};
|
||||
|
||||
static const u16 Sio32ConnectionData[] = { 0x494e, 0x544e, 0x4e45, 0x4f44 }; // NINTENDO
|
||||
static const char Sio32IDLib_Var[] = "Sio32ID_030820";
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ static void STWI_stop_timer(void);
|
|||
static s32 STWI_restart_Command(void);
|
||||
static s32 STWI_reset_ClockCounter(void);
|
||||
|
||||
struct STWIStatus *gSTWIStatus;
|
||||
COMMON_DATA struct STWIStatus *gSTWIStatus = NULL;
|
||||
|
||||
void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam)
|
||||
{
|
||||
|
|
|
|||
70
src/link.c
70
src/link.c
|
|
@ -62,41 +62,41 @@ static u16 sRecvNonzeroCheck;
|
|||
static u8 sChecksumAvailable;
|
||||
static u8 sHandshakePlayerCount;
|
||||
|
||||
u16 gLinkPartnersHeldKeys[6];
|
||||
u32 gLinkDebugSeed;
|
||||
struct LinkPlayerBlock gLocalLinkPlayerBlock;
|
||||
bool8 gLinkErrorOccurred;
|
||||
u32 gLinkDebugFlags;
|
||||
u32 gLinkFiller1;
|
||||
bool8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS];
|
||||
u8 gBlockReceivedStatus[MAX_LINK_PLAYERS];
|
||||
u32 gLinkFiller2;
|
||||
u16 gLinkHeldKeys;
|
||||
u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
|
||||
u32 gLinkStatus;
|
||||
bool8 gLinkDummy1; // Never read
|
||||
bool8 gLinkDummy2; // Never read
|
||||
bool8 gReadyToExitStandby[MAX_LINK_PLAYERS];
|
||||
bool8 gReadyToCloseLink[MAX_LINK_PLAYERS];
|
||||
u16 gReadyCloseLinkType;
|
||||
u8 gSuppressLinkErrorMessage;
|
||||
u8 gWirelessCommType;
|
||||
u8 gSavedLinkPlayerCount;
|
||||
u16 gSendCmd[CMD_LENGTH];
|
||||
u8 gSavedMultiplayerId;
|
||||
bool8 gReceivedRemoteLinkPlayers;
|
||||
struct LinkTestBGInfo gLinkTestBGInfo;
|
||||
void (*gLinkCallback)(void);
|
||||
u8 gShouldAdvanceLinkState;
|
||||
u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
|
||||
u8 gBlockRequestType;
|
||||
u32 gLinkFiller3; // file
|
||||
u32 gLinkFiller4; // boundary
|
||||
u32 gLinkFiller5; // here?
|
||||
u8 gLastSendQueueCount;
|
||||
struct Link gLink;
|
||||
u8 gLastRecvQueueCount;
|
||||
u16 gLinkSavedIme;
|
||||
COMMON_DATA u16 gLinkPartnersHeldKeys[6] = {0};
|
||||
COMMON_DATA u32 gLinkDebugSeed = 0;
|
||||
COMMON_DATA struct LinkPlayerBlock gLocalLinkPlayerBlock = {0};
|
||||
COMMON_DATA bool8 gLinkErrorOccurred = 0;
|
||||
COMMON_DATA u32 gLinkDebugFlags = 0;
|
||||
COMMON_DATA u32 gLinkFiller1 = 0;
|
||||
COMMON_DATA bool8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS] = {0};
|
||||
COMMON_DATA u8 gBlockReceivedStatus[MAX_LINK_PLAYERS] = {0};
|
||||
COMMON_DATA u32 gLinkFiller2 = 0;
|
||||
COMMON_DATA u16 gLinkHeldKeys = 0;
|
||||
COMMON_DATA u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH] = {0};
|
||||
COMMON_DATA u32 gLinkStatus = 0;
|
||||
COMMON_DATA bool8 gLinkDummy1 = 0; // Never read
|
||||
COMMON_DATA bool8 gLinkDummy2 = 0; // Never read
|
||||
COMMON_DATA bool8 gReadyToExitStandby[MAX_LINK_PLAYERS] = {0};
|
||||
COMMON_DATA bool8 gReadyToCloseLink[MAX_LINK_PLAYERS] = {0};
|
||||
COMMON_DATA u16 gReadyCloseLinkType = 0;
|
||||
COMMON_DATA u8 gSuppressLinkErrorMessage = 0;
|
||||
COMMON_DATA u8 gWirelessCommType = 0;
|
||||
COMMON_DATA u8 gSavedLinkPlayerCount = 0;
|
||||
COMMON_DATA u16 gSendCmd[CMD_LENGTH] = {0};
|
||||
COMMON_DATA u8 gSavedMultiplayerId = 0;
|
||||
COMMON_DATA bool8 gReceivedRemoteLinkPlayers = 0;
|
||||
COMMON_DATA struct LinkTestBGInfo gLinkTestBGInfo = {0};
|
||||
COMMON_DATA void (*gLinkCallback)(void) = NULL;
|
||||
COMMON_DATA u8 gShouldAdvanceLinkState = 0;
|
||||
COMMON_DATA u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS] = {0};
|
||||
COMMON_DATA u8 gBlockRequestType = 0;
|
||||
COMMON_DATA u32 gLinkFiller3 = 0; // file
|
||||
COMMON_DATA u32 gLinkFiller4 = 0; // boundary
|
||||
COMMON_DATA u32 gLinkFiller5 = 0; // here?
|
||||
COMMON_DATA u8 gLastSendQueueCount = 0;
|
||||
COMMON_DATA struct Link gLink = {0};
|
||||
COMMON_DATA u8 gLastRecvQueueCount = 0;
|
||||
COMMON_DATA u16 gLinkSavedIme = 0;
|
||||
|
||||
static EWRAM_DATA bool8 sLinkTestDebugValuesEnabled = FALSE;
|
||||
static EWRAM_DATA bool8 sDummyFlag = FALSE;
|
||||
|
|
|
|||
|
|
@ -75,9 +75,9 @@ static u32 sRfuAPIBuffer[RFU_API_BUFF_SIZE_RAM / 4];
|
|||
static u8 sResendBlock8[CMD_LENGTH * 2];
|
||||
static u16 sResendBlock16[CMD_LENGTH];
|
||||
|
||||
struct RfuGameData gHostRfuGameData;
|
||||
struct RfuManager gRfu;
|
||||
u8 gHostRfuUsername[PLAYER_NAME_LENGTH + 1];
|
||||
COMMON_DATA struct RfuGameData gHostRfuGameData = {0};
|
||||
COMMON_DATA struct RfuManager gRfu = {0};
|
||||
COMMON_DATA u8 gHostRfuUsername[PLAYER_NAME_LENGTH + 1] = {0};
|
||||
|
||||
static void InitChildRecvBuffers(void);
|
||||
static void InitParentSendData(void);
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ struct MoveMenuInfoIcon
|
|||
|
||||
static EWRAM_DATA struct MysteryGiftLinkMenuStruct sMysteryGiftLinkMenu = {0};
|
||||
|
||||
struct ListMenuOverride gListMenuOverride;
|
||||
struct ListMenuTemplate gMultiuseListMenuTemplate;
|
||||
COMMON_DATA struct ListMenuOverride gListMenuOverride = {0};
|
||||
COMMON_DATA struct ListMenuTemplate gMultiuseListMenuTemplate = {0};
|
||||
|
||||
static u8 ListMenuInitInternal(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove);
|
||||
static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown);
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@ EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0};
|
|||
EWRAM_DATA u32 gLastEncryptionKey = 0;
|
||||
|
||||
// IWRAM common
|
||||
bool32 gFlashMemoryPresent;
|
||||
struct SaveBlock1 *gSaveBlock1Ptr;
|
||||
struct SaveBlock2 *gSaveBlock2Ptr;
|
||||
struct PokemonStorage *gPokemonStoragePtr;
|
||||
COMMON_DATA bool32 gFlashMemoryPresent = 0;
|
||||
COMMON_DATA struct SaveBlock1 *gSaveBlock1Ptr = NULL;
|
||||
COMMON_DATA struct SaveBlock2 *gSaveBlock2Ptr = NULL;
|
||||
COMMON_DATA struct PokemonStorage *gPokemonStoragePtr = NULL;
|
||||
|
||||
void CheckForFlashMemory(void)
|
||||
{
|
||||
|
|
|
|||
24
src/m4a.c
24
src/m4a.c
|
|
@ -7,18 +7,18 @@ extern const u8 gCgb3Vol[];
|
|||
|
||||
BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0};
|
||||
|
||||
struct SoundInfo gSoundInfo;
|
||||
struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES];
|
||||
struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES];
|
||||
MPlayFunc gMPlayJumpTable[36];
|
||||
struct CgbChannel gCgbChans[4];
|
||||
struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2];
|
||||
struct PokemonCrySong gPokemonCrySong;
|
||||
struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
struct MusicPlayerInfo gMPlayInfo_SE1;
|
||||
struct MusicPlayerInfo gMPlayInfo_SE2;
|
||||
struct MusicPlayerInfo gMPlayInfo_SE3;
|
||||
u8 gMPlayMemAccArea[0x10];
|
||||
COMMON_DATA struct SoundInfo gSoundInfo = {0};
|
||||
COMMON_DATA struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES] = {0};
|
||||
COMMON_DATA struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES] = {0};
|
||||
COMMON_DATA MPlayFunc gMPlayJumpTable[36] = {0};
|
||||
COMMON_DATA struct CgbChannel gCgbChans[4] = {0};
|
||||
COMMON_DATA struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2] = {0};
|
||||
COMMON_DATA struct PokemonCrySong gPokemonCrySong = {0};
|
||||
COMMON_DATA struct MusicPlayerInfo gMPlayInfo_BGM = {0};
|
||||
COMMON_DATA struct MusicPlayerInfo gMPlayInfo_SE1 = {0};
|
||||
COMMON_DATA struct MusicPlayerInfo gMPlayInfo_SE2 = {0};
|
||||
COMMON_DATA u8 gMPlayMemAccArea[0x10] = {0};
|
||||
COMMON_DATA struct MusicPlayerInfo gMPlayInfo_SE3 = {0};
|
||||
|
||||
u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust)
|
||||
{
|
||||
|
|
|
|||
27
src/main.c
27
src/main.c
|
|
@ -58,21 +58,18 @@ const IntrFunc gIntrTableTemplate[] =
|
|||
|
||||
#define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc)))
|
||||
|
||||
u16 gKeyRepeatStartDelay;
|
||||
u8 gLinkTransferringData;
|
||||
struct Main gMain;
|
||||
u16 gKeyRepeatContinueDelay;
|
||||
u8 gSoftResetDisabled;
|
||||
IntrFunc gIntrTable[INTR_COUNT];
|
||||
bool8 gLinkVSyncDisabled;
|
||||
u32 IntrMain_Buffer[0x200];
|
||||
u8 gPcmDmaCounter;
|
||||
|
||||
// These variables are not defined in RS or Emerald, and are never read.
|
||||
// They were likely used to debug the audio engine and VCount interrupt.
|
||||
u8 sVcountAfterSound;
|
||||
u8 sVcountAtIntr;
|
||||
u8 sVcountBeforeSound;
|
||||
COMMON_DATA u16 gKeyRepeatStartDelay = 0;
|
||||
COMMON_DATA u8 gLinkTransferringData = 0;
|
||||
COMMON_DATA struct Main gMain = {0};
|
||||
COMMON_DATA u16 gKeyRepeatContinueDelay = 0;
|
||||
COMMON_DATA u8 gSoftResetDisabled = 0;
|
||||
COMMON_DATA IntrFunc gIntrTable[INTR_COUNT] = {0};
|
||||
COMMON_DATA u8 sVcountAfterSound = 0;
|
||||
COMMON_DATA bool8 gLinkVSyncDisabled = 0;
|
||||
COMMON_DATA u32 IntrMain_Buffer[0x200] = {0};
|
||||
COMMON_DATA u8 sVcountAtIntr = 0;
|
||||
COMMON_DATA u8 sVcountBeforeSound = 0;
|
||||
COMMON_DATA u8 gPcmDmaCounter = 0;
|
||||
|
||||
static IntrFunc * const sTimerIntrFunc = gIntrTable + 0x7;
|
||||
|
||||
|
|
|
|||
|
|
@ -106,14 +106,14 @@ static EWRAM_DATA s16 sCreditsOverworld_CmdIndex = 0;
|
|||
|
||||
EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {};
|
||||
|
||||
u16 *gBGTilemapBuffers1;
|
||||
u16 *gBGTilemapBuffers2;
|
||||
u16 *gBGTilemapBuffers3;
|
||||
void (*gFieldCallback)(void);
|
||||
bool8 (*gFieldCallback2)(void);
|
||||
u16 gHeldKeyCodeToSend;
|
||||
u8 gLocalLinkPlayerId;
|
||||
u8 gFieldLinkPlayerCount;
|
||||
COMMON_DATA u16 *gBGTilemapBuffers1 = NULL;
|
||||
COMMON_DATA u16 *gBGTilemapBuffers2 = NULL;
|
||||
COMMON_DATA u16 *gBGTilemapBuffers3 = NULL;
|
||||
COMMON_DATA void (*gFieldCallback)(void) = NULL;
|
||||
COMMON_DATA bool8 (*gFieldCallback2)(void) = NULL;
|
||||
COMMON_DATA u16 gHeldKeyCodeToSend = 0;
|
||||
COMMON_DATA u8 gLocalLinkPlayerId = 0;
|
||||
COMMON_DATA u8 gFieldLinkPlayerCount = 0;
|
||||
|
||||
static u8 sPlayerLinkStates[MAX_LINK_PLAYERS];
|
||||
static KeyInterCB sPlayerKeyInterceptCallback;
|
||||
|
|
|
|||
|
|
@ -414,7 +414,7 @@ EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0};
|
|||
static EWRAM_DATA u16 sPartyMenuItemId = ITEM_NONE;
|
||||
ALIGNED(4) EWRAM_DATA u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2] = {0}; // bits 0-3 are the current pos of Slot 1, 4-7 are Slot 2, and so on
|
||||
|
||||
void (*gItemUseCB)(u8, TaskFunc);
|
||||
COMMON_DATA void (*gItemUseCB)(u8, TaskFunc) = NULL;
|
||||
|
||||
#include "data/pokemon/tutor_learnsets.h"
|
||||
#include "data/party_menu.h"
|
||||
|
|
|
|||
|
|
@ -5212,7 +5212,7 @@ static bool32 CurrentMonIsFromGBA(void)
|
|||
|
||||
static bool32 MapSecIsInKantoOrSevii(u8 mapSec)
|
||||
{
|
||||
if (mapSec >= MAPSECS_KANTO && mapSec < MAPSEC_NONE)
|
||||
if (mapSec >= KANTO_MAPSEC_START && mapSec < MAPSEC_NONE)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ struct FlagOrVarRecord
|
|||
u16 value;
|
||||
};
|
||||
|
||||
u8 gQuestLogPlaybackState;
|
||||
u16 sMaxActionsInScene;
|
||||
struct FieldInput gQuestLogFieldInput;
|
||||
struct QuestLogAction * sCurSceneActions;
|
||||
COMMON_DATA u8 gQuestLogPlaybackState = 0;
|
||||
COMMON_DATA u16 sMaxActionsInScene = 0;
|
||||
COMMON_DATA struct FieldInput gQuestLogFieldInput = {0};
|
||||
COMMON_DATA struct QuestLogAction * sCurSceneActions = NULL;
|
||||
|
||||
static struct FlagOrVarRecord * sFlagOrVarRecords;
|
||||
static u16 sNumFlagsOrVars;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
// The number 1103515245 comes from the example implementation
|
||||
// of rand and srand in the ISO C standard.
|
||||
|
||||
u32 gRngValue;
|
||||
COMMON_DATA u32 gRngValue = 0;
|
||||
|
||||
u16 Random(void)
|
||||
{
|
||||
|
|
|
|||
226
src/region_map.c
226
src/region_map.c
|
|
@ -826,114 +826,114 @@ static const u8 sTextColors[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_CO
|
|||
#include "data/region_map/region_map_layout_sevii_67.h"
|
||||
|
||||
static const u8 sMapFlyDestinations[][3] = {
|
||||
[MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_PALLET_TOWN},
|
||||
[MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {MAP(MAP_VIRIDIAN_CITY), HEAL_LOCATION_VIRIDIAN_CITY},
|
||||
[MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {MAP(MAP_PEWTER_CITY), HEAL_LOCATION_PEWTER_CITY},
|
||||
[MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = {MAP(MAP_CERULEAN_CITY), HEAL_LOCATION_CERULEAN_CITY},
|
||||
[MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = {MAP(MAP_LAVENDER_TOWN), HEAL_LOCATION_LAVENDER_TOWN},
|
||||
[MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = {MAP(MAP_VERMILION_CITY), HEAL_LOCATION_VERMILION_CITY},
|
||||
[MAPSEC_CELADON_CITY - MAPSECS_KANTO] = {MAP(MAP_CELADON_CITY), HEAL_LOCATION_CELADON_CITY},
|
||||
[MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = {MAP(MAP_FUCHSIA_CITY), HEAL_LOCATION_FUCHSIA_CITY},
|
||||
[MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = {MAP(MAP_CINNABAR_ISLAND), HEAL_LOCATION_CINNABAR_ISLAND},
|
||||
[MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = {MAP(MAP_INDIGO_PLATEAU_EXTERIOR), HEAL_LOCATION_INDIGO_PLATEAU},
|
||||
[MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = {MAP(MAP_SAFFRON_CITY), HEAL_LOCATION_SAFFRON_CITY},
|
||||
[MAPSEC_ROUTE_4_POKECENTER - MAPSECS_KANTO] = {MAP(MAP_ROUTE4), HEAL_LOCATION_ROUTE4},
|
||||
[MAPSEC_ROUTE_10_POKECENTER - MAPSECS_KANTO] = {MAP(MAP_ROUTE10), HEAL_LOCATION_ROUTE10},
|
||||
[MAPSEC_ROUTE_1 - MAPSECS_KANTO] = {MAP(MAP_ROUTE1), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_2 - MAPSECS_KANTO] = {MAP(MAP_ROUTE2), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_3 - MAPSECS_KANTO] = {MAP(MAP_ROUTE3), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_4 - MAPSECS_KANTO] = {MAP(MAP_ROUTE4), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_5 - MAPSECS_KANTO] = {MAP(MAP_ROUTE5), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_6 - MAPSECS_KANTO] = {MAP(MAP_ROUTE6), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_7 - MAPSECS_KANTO] = {MAP(MAP_ROUTE7), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_8 - MAPSECS_KANTO] = {MAP(MAP_ROUTE8), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_9 - MAPSECS_KANTO] = {MAP(MAP_ROUTE9), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_10 - MAPSECS_KANTO] = {MAP(MAP_ROUTE10), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_11 - MAPSECS_KANTO] = {MAP(MAP_ROUTE11), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_12 - MAPSECS_KANTO] = {MAP(MAP_ROUTE12), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_13 - MAPSECS_KANTO] = {MAP(MAP_ROUTE13), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_14 - MAPSECS_KANTO] = {MAP(MAP_ROUTE14), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_15 - MAPSECS_KANTO] = {MAP(MAP_ROUTE15), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_16 - MAPSECS_KANTO] = {MAP(MAP_ROUTE16), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_17 - MAPSECS_KANTO] = {MAP(MAP_ROUTE17), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_18 - MAPSECS_KANTO] = {MAP(MAP_ROUTE18), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_19 - MAPSECS_KANTO] = {MAP(MAP_ROUTE19), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_20 - MAPSECS_KANTO] = {MAP(MAP_ROUTE20), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_21 - MAPSECS_KANTO] = {MAP(MAP_ROUTE21_NORTH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_22 - MAPSECS_KANTO] = {MAP(MAP_ROUTE22), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_23 - MAPSECS_KANTO] = {MAP(MAP_ROUTE23), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_24 - MAPSECS_KANTO] = {MAP(MAP_ROUTE24), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_25 - MAPSECS_KANTO] = {MAP(MAP_ROUTE25), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_VIRIDIAN_FOREST - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MT_MOON - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_S_S_ANNE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_UNDERGROUND_PATH - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_UNDERGROUND_PATH_2 - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_DIGLETTS_CAVE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_KANTO_VICTORY_ROAD - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROCKET_HIDEOUT - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SILPH_CO - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POKEMON_MANSION - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_KANTO_SAFARI_ZONE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POKEMON_LEAGUE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROCK_TUNNEL - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEAFOAM_ISLANDS - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POKEMON_TOWER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_CERULEAN_CAVE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POWER_PLANT - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = {MAP(MAP_ONE_ISLAND), HEAL_LOCATION_ONE_ISLAND},
|
||||
[MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = {MAP(MAP_TWO_ISLAND), HEAL_LOCATION_TWO_ISLAND},
|
||||
[MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = {MAP(MAP_THREE_ISLAND), HEAL_LOCATION_THREE_ISLAND},
|
||||
[MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = {MAP(MAP_FOUR_ISLAND), HEAL_LOCATION_FOUR_ISLAND},
|
||||
[MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = {MAP(MAP_FIVE_ISLAND), HEAL_LOCATION_FIVE_ISLAND},
|
||||
[MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = {MAP(MAP_SEVEN_ISLAND), HEAL_LOCATION_SEVEN_ISLAND},
|
||||
[MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = {MAP(MAP_SIX_ISLAND), HEAL_LOCATION_SIX_ISLAND},
|
||||
[MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = {MAP(MAP_ONE_ISLAND_KINDLE_ROAD), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = {MAP(MAP_ONE_ISLAND_TREASURE_BEACH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = {MAP(MAP_TWO_ISLAND_CAPE_BRINK), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = {MAP(MAP_THREE_ISLAND_BOND_BRIDGE), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = {MAP(MAP_THREE_ISLAND_PORT), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_6), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_7), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_8), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_9), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = {MAP(MAP_FIVE_ISLAND_RESORT_GORGEOUS), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = {MAP(MAP_FIVE_ISLAND_WATER_LABYRINTH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = {MAP(MAP_FIVE_ISLAND_MEADOW), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = {MAP(MAP_FIVE_ISLAND_MEMORIAL_PILLAR), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = {MAP(MAP_SIX_ISLAND_OUTCAST_ISLAND), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_GREEN_PATH - MAPSECS_KANTO] = {MAP(MAP_SIX_ISLAND_GREEN_PATH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_WATER_PATH - MAPSECS_KANTO] = {MAP(MAP_SIX_ISLAND_WATER_PATH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = {MAP(MAP_SIX_ISLAND_RUIN_VALLEY), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = {MAP(MAP_SEVEN_ISLAND_TRAINER_TOWER), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = {MAP(MAP_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = {MAP(MAP_SEVEN_ISLAND_SEVAULT_CANYON), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = {MAP(MAP_SEVEN_ISLAND_TANOBY_RUINS), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = {MAP(MAP_NAVEL_ROCK_EXTERIOR), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MT_EMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_BERRY_FOREST - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ICEFALL_CAVE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROCKET_WAREHOUSE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TRAINER_TOWER_2 - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_DOTTED_HOLE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_LOST_CAVE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_PATTERN_BUSH - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ALTERING_CAVE - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TANOBY_CHAMBERS - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_THREE_ISLE_PATH - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TANOBY_KEY - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {MAP(MAP_BIRTH_ISLAND_EXTERIOR), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MONEAN_CHAMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_LIPTOO_CHAMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_WEEPTH_CHAMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_DILFORD_CHAMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SCUFIB_CHAMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_RIXY_CHAMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_VIAPOIS_CHAMBER - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_EMBER_SPA - MAPSECS_KANTO] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_PALLET_TOWN - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_PALLET_TOWN},
|
||||
[MAPSEC_VIRIDIAN_CITY - KANTO_MAPSEC_START] = {MAP(MAP_VIRIDIAN_CITY), HEAL_LOCATION_VIRIDIAN_CITY},
|
||||
[MAPSEC_PEWTER_CITY - KANTO_MAPSEC_START] = {MAP(MAP_PEWTER_CITY), HEAL_LOCATION_PEWTER_CITY},
|
||||
[MAPSEC_CERULEAN_CITY - KANTO_MAPSEC_START] = {MAP(MAP_CERULEAN_CITY), HEAL_LOCATION_CERULEAN_CITY},
|
||||
[MAPSEC_LAVENDER_TOWN - KANTO_MAPSEC_START] = {MAP(MAP_LAVENDER_TOWN), HEAL_LOCATION_LAVENDER_TOWN},
|
||||
[MAPSEC_VERMILION_CITY - KANTO_MAPSEC_START] = {MAP(MAP_VERMILION_CITY), HEAL_LOCATION_VERMILION_CITY},
|
||||
[MAPSEC_CELADON_CITY - KANTO_MAPSEC_START] = {MAP(MAP_CELADON_CITY), HEAL_LOCATION_CELADON_CITY},
|
||||
[MAPSEC_FUCHSIA_CITY - KANTO_MAPSEC_START] = {MAP(MAP_FUCHSIA_CITY), HEAL_LOCATION_FUCHSIA_CITY},
|
||||
[MAPSEC_CINNABAR_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_CINNABAR_ISLAND), HEAL_LOCATION_CINNABAR_ISLAND},
|
||||
[MAPSEC_INDIGO_PLATEAU - KANTO_MAPSEC_START] = {MAP(MAP_INDIGO_PLATEAU_EXTERIOR), HEAL_LOCATION_INDIGO_PLATEAU},
|
||||
[MAPSEC_SAFFRON_CITY - KANTO_MAPSEC_START] = {MAP(MAP_SAFFRON_CITY), HEAL_LOCATION_SAFFRON_CITY},
|
||||
[MAPSEC_ROUTE_4_POKECENTER - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE4), HEAL_LOCATION_ROUTE4},
|
||||
[MAPSEC_ROUTE_10_POKECENTER - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE10), HEAL_LOCATION_ROUTE10},
|
||||
[MAPSEC_ROUTE_1 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE1), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_2 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE2), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_3 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE3), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_4 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE4), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_5 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE5), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_6 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE6), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_7 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE7), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_8 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE8), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_9 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE9), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_10 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE10), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_11 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE11), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_12 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE12), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_13 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE13), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_14 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE14), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_15 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE15), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_16 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE16), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_17 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE17), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_18 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE18), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_19 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE19), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_20 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE20), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_21 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE21_NORTH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_22 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE22), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_23 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE23), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_24 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE24), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROUTE_25 - KANTO_MAPSEC_START] = {MAP(MAP_ROUTE25), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_VIRIDIAN_FOREST - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MT_MOON - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_S_S_ANNE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_UNDERGROUND_PATH - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_UNDERGROUND_PATH_2 - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_DIGLETTS_CAVE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_KANTO_VICTORY_ROAD - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROCKET_HIDEOUT - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SILPH_CO - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POKEMON_MANSION - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_KANTO_SAFARI_ZONE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POKEMON_LEAGUE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROCK_TUNNEL - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEAFOAM_ISLANDS - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POKEMON_TOWER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_CERULEAN_CAVE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_POWER_PLANT - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ONE_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_ONE_ISLAND), HEAL_LOCATION_ONE_ISLAND},
|
||||
[MAPSEC_TWO_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_TWO_ISLAND), HEAL_LOCATION_TWO_ISLAND},
|
||||
[MAPSEC_THREE_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_THREE_ISLAND), HEAL_LOCATION_THREE_ISLAND},
|
||||
[MAPSEC_FOUR_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_FOUR_ISLAND), HEAL_LOCATION_FOUR_ISLAND},
|
||||
[MAPSEC_FIVE_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_FIVE_ISLAND), HEAL_LOCATION_FIVE_ISLAND},
|
||||
[MAPSEC_SEVEN_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_SEVEN_ISLAND), HEAL_LOCATION_SEVEN_ISLAND},
|
||||
[MAPSEC_SIX_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_SIX_ISLAND), HEAL_LOCATION_SIX_ISLAND},
|
||||
[MAPSEC_KINDLE_ROAD - KANTO_MAPSEC_START] = {MAP(MAP_ONE_ISLAND_KINDLE_ROAD), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TREASURE_BEACH - KANTO_MAPSEC_START] = {MAP(MAP_ONE_ISLAND_TREASURE_BEACH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_CAPE_BRINK - KANTO_MAPSEC_START] = {MAP(MAP_TWO_ISLAND_CAPE_BRINK), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_BOND_BRIDGE - KANTO_MAPSEC_START] = {MAP(MAP_THREE_ISLAND_BOND_BRIDGE), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_THREE_ISLE_PORT - KANTO_MAPSEC_START] = {MAP(MAP_THREE_ISLAND_PORT), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_6 - KANTO_MAPSEC_START] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_6), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_7 - KANTO_MAPSEC_START] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_7), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_8 - KANTO_MAPSEC_START] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_8), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_9 - KANTO_MAPSEC_START] = {MAP(MAP_PROTOTYPE_SEVII_ISLE_9), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_RESORT_GORGEOUS - KANTO_MAPSEC_START] = {MAP(MAP_FIVE_ISLAND_RESORT_GORGEOUS), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_WATER_LABYRINTH - KANTO_MAPSEC_START] = {MAP(MAP_FIVE_ISLAND_WATER_LABYRINTH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_FIVE_ISLE_MEADOW - KANTO_MAPSEC_START] = {MAP(MAP_FIVE_ISLAND_MEADOW), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MEMORIAL_PILLAR - KANTO_MAPSEC_START] = {MAP(MAP_FIVE_ISLAND_MEMORIAL_PILLAR), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_OUTCAST_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_SIX_ISLAND_OUTCAST_ISLAND), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_GREEN_PATH - KANTO_MAPSEC_START] = {MAP(MAP_SIX_ISLAND_GREEN_PATH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_WATER_PATH - KANTO_MAPSEC_START] = {MAP(MAP_SIX_ISLAND_WATER_PATH), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_RUIN_VALLEY - KANTO_MAPSEC_START] = {MAP(MAP_SIX_ISLAND_RUIN_VALLEY), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TRAINER_TOWER - KANTO_MAPSEC_START] = {MAP(MAP_SEVEN_ISLAND_TRAINER_TOWER), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_CANYON_ENTRANCE - KANTO_MAPSEC_START] = {MAP(MAP_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVAULT_CANYON - KANTO_MAPSEC_START] = {MAP(MAP_SEVEN_ISLAND_SEVAULT_CANYON), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TANOBY_RUINS - KANTO_MAPSEC_START] = {MAP(MAP_SEVEN_ISLAND_TANOBY_RUINS), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_22 - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_23 - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SEVII_ISLE_24 - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_NAVEL_ROCK - KANTO_MAPSEC_START] = {MAP(MAP_NAVEL_ROCK_EXTERIOR), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MT_EMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_BERRY_FOREST - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ICEFALL_CAVE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ROCKET_WAREHOUSE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TRAINER_TOWER_2 - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_DOTTED_HOLE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_LOST_CAVE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_PATTERN_BUSH - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_ALTERING_CAVE - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TANOBY_CHAMBERS - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_THREE_ISLE_PATH - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_TANOBY_KEY - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_BIRTH_ISLAND - KANTO_MAPSEC_START] = {MAP(MAP_BIRTH_ISLAND_EXTERIOR), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_MONEAN_CHAMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_LIPTOO_CHAMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_WEEPTH_CHAMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_DILFORD_CHAMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_SCUFIB_CHAMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_RIXY_CHAMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_VIAPOIS_CHAMBER - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
[MAPSEC_EMBER_SPA - KANTO_MAPSEC_START] = {MAP(MAP_PALLET_TOWN), HEAL_LOCATION_NONE},
|
||||
};
|
||||
|
||||
static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint)
|
||||
|
|
@ -1029,7 +1029,7 @@ static void InitRegionMapType(void)
|
|||
sRegionMap->permissions[MAPPERM_HAS_SWITCH_BUTTON] = FALSE;
|
||||
region = REGIONMAP_KANTO;
|
||||
j = REGIONMAP_KANTO;
|
||||
if (gMapHeader.regionMapSectionId >= MAPSECS_SEVII_123)
|
||||
if (gMapHeader.regionMapSectionId >= SEVII_MAPSEC_START)
|
||||
{
|
||||
// Mapsec is in Sevii Islands, determine which map to use
|
||||
while (region == REGIONMAP_KANTO)
|
||||
|
|
@ -1470,7 +1470,7 @@ static void DisplayCurrentDungeonName(void)
|
|||
mapsecId = GetDungeonMapsecUnderCursor();
|
||||
if (mapsecId != MAPSEC_NONE)
|
||||
{
|
||||
descOffset = mapsecId - MAPSECS_KANTO;
|
||||
descOffset = mapsecId - KANTO_MAPSEC_START;
|
||||
SetDispCnt(1, FALSE);
|
||||
sRegionMap->dungeonWinTop = TRUE;
|
||||
sRegionMap->dungeonWinLeft = StringLength(sMapNames[descOffset]);
|
||||
|
|
@ -3154,7 +3154,7 @@ static void GetPlayerPositionOnRegionMap(void)
|
|||
break;
|
||||
}
|
||||
|
||||
sMapCursor->selectedMapsec -= MAPSECS_KANTO;
|
||||
sMapCursor->selectedMapsec -= KANTO_MAPSEC_START;
|
||||
divisor = width / sMapSectionDimensions[sMapCursor->selectedMapsec][0];
|
||||
if (divisor == 0)
|
||||
divisor = 1;
|
||||
|
|
@ -3803,7 +3803,7 @@ u8 *GetMapName(u8 *dst0, u16 mapsec, u16 fill)
|
|||
u8 *dst;
|
||||
u16 i;
|
||||
u16 idx;
|
||||
if ((idx = mapsec - MAPSECS_KANTO) <= MAPSEC_SPECIAL_AREA - MAPSECS_KANTO)
|
||||
if ((idx = mapsec - KANTO_MAPSEC_START) <= MAPSEC_SPECIAL_AREA - KANTO_MAPSEC_START)
|
||||
{
|
||||
if (IsCeladonDeptStoreMapsec(mapsec) == TRUE)
|
||||
dst = StringCopy(dst0, sMapsecName_CELADON_DEPT_);
|
||||
|
|
@ -4022,7 +4022,7 @@ static void FreeFlyMap(u8 taskId)
|
|||
|
||||
static void SetFlyWarpDestination(u16 mapsec)
|
||||
{
|
||||
u16 idx = mapsec - MAPSECS_KANTO;
|
||||
u16 idx = mapsec - KANTO_MAPSEC_START;
|
||||
if (sMapFlyDestinations[idx][2])
|
||||
{
|
||||
SetWarpDestinationToHealLocation(sMapFlyDestinations[idx][2]);
|
||||
|
|
|
|||
24
src/save.c
24
src/save.c
|
|
@ -77,18 +77,18 @@ STATIC_ASSERT(sizeof(struct SaveBlock1) <= SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLO
|
|||
STATIC_ASSERT(sizeof(struct PokemonStorage) <= SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1), PokemonStorageFreeSpace);
|
||||
|
||||
// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?)
|
||||
u16 gLastWrittenSector;
|
||||
u32 gLastSaveCounter;
|
||||
u16 gLastKnownGoodSector;
|
||||
u32 gDamagedSaveSectors;
|
||||
u32 gSaveCounter;
|
||||
struct SaveSector *gSaveDataBufferPtr; // the pointer is in fast IWRAM but points to the slower EWRAM.
|
||||
u16 gIncrementalSectorId;
|
||||
u16 gSaveUnusedVar;
|
||||
u16 gSaveFileStatus;
|
||||
void (*gGameContinueCallback)(void);
|
||||
struct SaveSectorLocation gRamSaveSectorLocations[NUM_SECTORS_PER_SLOT];
|
||||
u16 gSaveAttemptStatus;
|
||||
COMMON_DATA u16 gLastWrittenSector = 0;
|
||||
COMMON_DATA u32 gLastSaveCounter = 0;
|
||||
COMMON_DATA u16 gLastKnownGoodSector = 0;
|
||||
COMMON_DATA u32 gDamagedSaveSectors = 0;
|
||||
COMMON_DATA u32 gSaveCounter = 0;
|
||||
COMMON_DATA struct SaveSector *gSaveDataBufferPtr = NULL; // the pointer is in fast IWRAM but points to the slower EWRAM.
|
||||
COMMON_DATA u16 gIncrementalSectorId = 0;
|
||||
COMMON_DATA u16 gSaveUnusedVar = 0;
|
||||
COMMON_DATA u16 gSaveFileStatus = 0;
|
||||
COMMON_DATA void (*gGameContinueCallback)(void) = NULL;
|
||||
COMMON_DATA struct SaveSectorLocation gRamSaveSectorLocations[NUM_SECTORS_PER_SLOT] = {0};
|
||||
COMMON_DATA u16 gSaveAttemptStatus = 0;
|
||||
|
||||
EWRAM_DATA struct SaveSector gSaveDataBuffer = {0};
|
||||
EWRAM_DATA u32 gSaveUnusedVar2 = 0;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
#include "save.h"
|
||||
#include "strings.h"
|
||||
|
||||
bool32 sIsInSaveFailedScreen;
|
||||
COMMON_DATA bool32 sIsInSaveFailedScreen = 0;
|
||||
|
||||
static EWRAM_DATA u16 sSaveType = SAVE_NORMAL;
|
||||
static EWRAM_DATA u16 sUnused = 0;
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ static EWRAM_DATA u16 sMovingNpcMapGroup = 0;
|
|||
static EWRAM_DATA u16 sMovingNpcMapNum = 0;
|
||||
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
|
||||
|
||||
struct ScriptContext * sQuestLogScriptContextPtr;
|
||||
u8 gSelectedObjectEvent;
|
||||
COMMON_DATA struct ScriptContext * sQuestLogScriptContextPtr = NULL;
|
||||
COMMON_DATA u8 gSelectedObjectEvent = 0;
|
||||
|
||||
// This is defined in here so the optimizer can't see its value when compiling
|
||||
// script.c.
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ static u8 sMapMusicFadeInSpeed;
|
|||
static u16 sFanfareCounter;
|
||||
|
||||
// iwram common
|
||||
bool8 gDisableMusic;
|
||||
COMMON_DATA bool8 gDisableMusic = 0;
|
||||
|
||||
extern u32 gBattleTypeFlags;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
|
|
|||
|
|
@ -270,8 +270,8 @@ static u16 sSpriteTileRanges[MAX_SPRITES * 2];
|
|||
static struct AffineAnimState sAffineAnimStates[OAM_MATRIX_COUNT];
|
||||
static u16 sSpritePaletteTags[16];
|
||||
|
||||
u32 gOamMatrixAllocBitmap;
|
||||
u8 gReservedSpritePaletteCount;
|
||||
COMMON_DATA u32 gOamMatrixAllocBitmap = 0;
|
||||
COMMON_DATA u8 gReservedSpritePaletteCount = 0;
|
||||
|
||||
EWRAM_DATA struct Sprite gSprites[MAX_SPRITES + 1] = {0};
|
||||
EWRAM_DATA u16 gSpritePriorities[MAX_SPRITES] = {0};
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#define HEAD_SENTINEL 0xFE
|
||||
#define TAIL_SENTINEL 0xFF
|
||||
|
||||
struct Task gTasks[NUM_TASKS];
|
||||
COMMON_DATA struct Task gTasks[NUM_TASKS] = {0};
|
||||
|
||||
static void InsertTask(u8 newTaskId);
|
||||
static u8 FindFirstActiveTask();
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ static s32 GetGlyphWidth_Male(u16 glyphId, bool32 isJapanese);
|
|||
static s32 GetGlyphWidth_Female(u16 glyphId, bool32 isJapanese);
|
||||
static void SpriteCB_TextCursor(struct Sprite *sprite);
|
||||
|
||||
TextFlags gTextFlags;
|
||||
COMMON_DATA TextFlags gTextFlags = {0};
|
||||
|
||||
static const u8 sDownArrowTiles[] = INCBIN_U8("graphics/fonts/down_arrow.4bpp");
|
||||
static const u8 sDarkDownArrowTiles[] = INCBIN_U8("graphics/fonts/down_arrow_RS.4bpp");
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ static u16 sLastTextBgColor;
|
|||
static u16 sLastTextFgColor;
|
||||
static u16 sLastTextShadowColor;
|
||||
|
||||
const struct FontInfo *gFonts;
|
||||
struct GlyphInfo gGlyphInfo;
|
||||
COMMON_DATA const struct FontInfo *gFonts = NULL;
|
||||
COMMON_DATA struct GlyphInfo gGlyphInfo = {0};
|
||||
|
||||
static const u8 sFontHalfRowOffsets[] =
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
|
||||
u8 gWindowClearTile;
|
||||
void *gWindowBgTilemapBuffers[4];
|
||||
COMMON_DATA u8 gWindowClearTile = {0};
|
||||
COMMON_DATA void *gWindowBgTilemapBuffers[4] = {0};
|
||||
|
||||
EWRAM_DATA struct Window gWindows[WINDOWS_MAX] = {0};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "ramscrgen.h"
|
||||
|
|
@ -22,6 +21,7 @@ static int s_shstrtabIndex;
|
|||
|
||||
static std::uint32_t s_symtabOffset;
|
||||
static std::uint32_t s_strtabOffset;
|
||||
static std::uint32_t s_pseudoCommonSectionIndex;
|
||||
|
||||
static std::uint32_t s_symbolCount;
|
||||
static std::uint32_t s_elfFileOffset;
|
||||
|
|
@ -101,18 +101,6 @@ static void VerifyElfIdent()
|
|||
FATAL_ERROR("error: \"%s\" not little-endian ELF\n", s_elfPath.c_str());
|
||||
}
|
||||
|
||||
static void VerifyAr()
|
||||
{
|
||||
char expectedMagic[8] = {'!', '<', 'a', 'r', 'c', 'h', '>', '\n'};
|
||||
char magic[8];
|
||||
|
||||
if (std::fread(magic, 8, 1, s_file) != 1)
|
||||
FATAL_ERROR("error: failed to read AR magic from \"%s\"\n", s_archiveFilePath.c_str());
|
||||
|
||||
if (std::memcmp(magic, expectedMagic, 8) != 0)
|
||||
FATAL_ERROR("error: AR magic did not match in \"%s\"\n", s_archiveFilePath.c_str());
|
||||
}
|
||||
|
||||
static void ReadElfHeader()
|
||||
{
|
||||
Seek(0x20);
|
||||
|
|
@ -123,40 +111,6 @@ static void ReadElfHeader()
|
|||
s_shstrtabIndex = ReadInt16();
|
||||
}
|
||||
|
||||
static void FindArObj()
|
||||
{
|
||||
char file_ident[17] = {0};
|
||||
char filesize_s[11] = {0};
|
||||
char expectedEndMagic[2] = { 0x60, 0x0a };
|
||||
char end_magic[2];
|
||||
std::size_t filesize;
|
||||
|
||||
Seek(8);
|
||||
while (!std::feof(s_file)) {
|
||||
if (std::fread(file_ident, 16, 1, s_file) != 1)
|
||||
FATAL_ERROR("error: failed to read file ident in \"%s\"\n", s_archiveFilePath.c_str());
|
||||
Skip(32);
|
||||
if (std::fread(filesize_s, 10, 1, s_file) != 1)
|
||||
FATAL_ERROR("error: failed to read filesize in \"%s\"\n", s_archiveFilePath.c_str());
|
||||
if (std::fread(end_magic, 2, 1, s_file) != 1)
|
||||
FATAL_ERROR("error: failed to read end sentinel in \"%s\"\n", s_archiveFilePath.c_str());
|
||||
if (std::memcmp(end_magic, expectedEndMagic, 2) != 0)
|
||||
FATAL_ERROR("error: corrupted archive header in \"%s\" at \"%s\"\n", s_archiveFilePath.c_str(), file_ident);
|
||||
|
||||
char * ptr = std::strchr(file_ident, '/');
|
||||
if (ptr != nullptr)
|
||||
*ptr = 0;
|
||||
filesize = std::strtoul(filesize_s, nullptr, 10);
|
||||
if (std::strncmp(s_archiveObjectPath.c_str(), file_ident, 16) == 0) {
|
||||
s_elfFileOffset = std::ftell(s_file);
|
||||
return;
|
||||
}
|
||||
Skip(filesize);
|
||||
}
|
||||
|
||||
FATAL_ERROR("error: could not find object \"%s\" in archive \"%s\"\n", s_archiveObjectPath.c_str(), s_archiveFilePath.c_str());
|
||||
}
|
||||
|
||||
static std::string GetSectionName(std::uint32_t shstrtabOffset, int index)
|
||||
{
|
||||
Seek(s_sectionHeaderOffset + s_sectionHeaderEntrySize * index);
|
||||
|
|
@ -169,6 +123,7 @@ static void FindTableOffsets()
|
|||
{
|
||||
s_symtabOffset = 0;
|
||||
s_strtabOffset = 0;
|
||||
s_pseudoCommonSectionIndex = 0;
|
||||
|
||||
Seek(s_sectionHeaderOffset + s_sectionHeaderEntrySize * s_shstrtabIndex + 0x10);
|
||||
std::uint32_t shstrtabOffset = ReadInt32();
|
||||
|
|
@ -192,6 +147,11 @@ static void FindTableOffsets()
|
|||
FATAL_ERROR("error: mutiple .strtab sections found in \"%s\"\n", s_elfPath.c_str());
|
||||
Seek(s_sectionHeaderOffset + s_sectionHeaderEntrySize * i + 0x10);
|
||||
s_strtabOffset = ReadInt32();
|
||||
} else if (name == "common_data") {
|
||||
if (s_pseudoCommonSectionIndex) {
|
||||
FATAL_ERROR("error: mutiple common_data sections found in \"%s\"\n", s_elfPath.c_str());
|
||||
}
|
||||
s_pseudoCommonSectionIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -202,65 +162,50 @@ static void FindTableOffsets()
|
|||
FATAL_ERROR("error: couldn't find .strtab section in \"%s\"\n", s_elfPath.c_str());
|
||||
}
|
||||
|
||||
static std::map<std::string, std::uint32_t> GetCommonSymbols_Shared()
|
||||
static std::vector<std::pair<std::string, std::uint32_t>> GetCommonSymbols_Shared()
|
||||
{
|
||||
VerifyElfIdent();
|
||||
ReadElfHeader();
|
||||
FindTableOffsets();
|
||||
|
||||
std::map<std::string, std::uint32_t> commonSymbols;
|
||||
std::vector<std::pair<std::string, std::uint32_t>> commonSymbols;
|
||||
|
||||
std::vector<Symbol> commonSymbolVec;
|
||||
|
||||
Seek(s_symtabOffset);
|
||||
|
||||
for (std::uint32_t i = 0; i < s_symbolCount; i++)
|
||||
{
|
||||
Symbol sym;
|
||||
sym.nameOffset = ReadInt32();
|
||||
Skip(4);
|
||||
sym.size = ReadInt32();
|
||||
Skip(2);
|
||||
std::uint16_t sectionIndex = ReadInt16();
|
||||
if (sectionIndex == SHN_COMMON)
|
||||
commonSymbolVec.push_back(sym);
|
||||
}
|
||||
|
||||
for (const Symbol& sym : commonSymbolVec)
|
||||
{
|
||||
Seek(s_strtabOffset + sym.nameOffset);
|
||||
std::string name = ReadString();
|
||||
commonSymbols[name] = sym.size;
|
||||
if (s_pseudoCommonSectionIndex) {
|
||||
std::vector<Symbol> commonSymbolVec;
|
||||
|
||||
Seek(s_symtabOffset);
|
||||
|
||||
for (std::uint32_t i = 0; i < s_symbolCount; i++)
|
||||
{
|
||||
Symbol sym;
|
||||
sym.nameOffset = ReadInt32();
|
||||
Skip(4);
|
||||
sym.size = ReadInt32();
|
||||
Skip(2);
|
||||
std::uint16_t sectionIndex = ReadInt16();
|
||||
if (sectionIndex == s_pseudoCommonSectionIndex)
|
||||
commonSymbolVec.push_back(sym);
|
||||
}
|
||||
|
||||
for (const Symbol& sym : commonSymbolVec)
|
||||
{
|
||||
Seek(s_strtabOffset + sym.nameOffset);
|
||||
std::string name = ReadString();
|
||||
if (name == "$d" || name == "") {
|
||||
continue;
|
||||
}
|
||||
commonSymbols.emplace_back(name, sym.size);
|
||||
}
|
||||
}
|
||||
|
||||
return commonSymbols;
|
||||
}
|
||||
|
||||
std::map<std::string, std::uint32_t> GetCommonSymbolsFromLib(std::string sourcePath, std::string libpath)
|
||||
{
|
||||
std::size_t colonPos = libpath.find(':');
|
||||
if (colonPos == std::string::npos)
|
||||
FATAL_ERROR("error: missing colon separator in libfile \"%s\"\n", s_elfPath.c_str());
|
||||
|
||||
s_archiveObjectPath = libpath.substr(colonPos + 1);
|
||||
s_archiveFilePath = sourcePath + "/" + libpath.substr(1, colonPos - 1);
|
||||
s_elfPath = sourcePath + "/" + libpath.substr(1);
|
||||
|
||||
s_file = std::fopen(s_archiveFilePath.c_str(), "rb");
|
||||
|
||||
if (s_file == NULL)
|
||||
FATAL_ERROR("error: failed to open \"%s\" for reading\n", s_archiveFilePath.c_str());
|
||||
|
||||
VerifyAr();
|
||||
FindArObj();
|
||||
return GetCommonSymbols_Shared();
|
||||
}
|
||||
|
||||
std::map<std::string, std::uint32_t> GetCommonSymbols(std::string sourcePath, std::string path)
|
||||
std::vector<std::pair<std::string, std::uint32_t>> GetCommonSymbols(std::string sourcePath, std::string path)
|
||||
{
|
||||
s_elfFileOffset = 0;
|
||||
if (path[0] == '*')
|
||||
return GetCommonSymbolsFromLib(sourcePath, path);
|
||||
FATAL_ERROR("error: library common syms are unsupported (filename: \"%s\")\n", path.c_str());
|
||||
|
||||
s_elfPath = sourcePath + "/" + path;
|
||||
s_file = std::fopen(s_elfPath.c_str(), "rb");
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@
|
|||
#define ELF_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
std::map<std::string, std::uint32_t> GetCommonSymbols(std::string sourcePath, std::string path);
|
||||
std::vector<std::pair<std::string, std::uint32_t>> GetCommonSymbols(std::string sourcePath, std::string path);
|
||||
|
||||
#endif // ELF_H
|
||||
|
|
|
|||
|
|
@ -28,54 +28,19 @@
|
|||
void HandleCommonInclude(std::string filename, std::string sourcePath, std::string symOrderPath, std::string lang)
|
||||
{
|
||||
auto commonSymbols = GetCommonSymbols(sourcePath, filename);
|
||||
std::size_t dotIndex;
|
||||
|
||||
if (filename[0] == '*') {
|
||||
dotIndex = filename.find_last_of(':');
|
||||
filename = filename.substr(dotIndex + 1);
|
||||
}
|
||||
|
||||
dotIndex = filename.find_last_of('.');
|
||||
|
||||
if (dotIndex == std::string::npos)
|
||||
FATAL_ERROR("error: \"%s\" doesn't have a file extension\n", filename.c_str());
|
||||
|
||||
std::string symOrderFilename = filename.substr(0, dotIndex + 1) + "txt";
|
||||
|
||||
SymFile symFile(symOrderPath + "/" + symOrderFilename);
|
||||
|
||||
while (!symFile.IsAtEnd())
|
||||
for (const auto& commonSym : commonSymbols)
|
||||
{
|
||||
symFile.HandleLangConditional(lang);
|
||||
unsigned long size = commonSym.second;
|
||||
|
||||
std::string label = symFile.GetLabel(false);
|
||||
|
||||
if (label.length() == 0)
|
||||
{
|
||||
unsigned long length;
|
||||
if (symFile.ReadInteger(length))
|
||||
{
|
||||
if (length & 3)
|
||||
symFile.RaiseWarning("gap length %d is not multiple of 4", length);
|
||||
printf(". += 0x%lX;\n", length);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (commonSymbols.count(label) == 0)
|
||||
symFile.RaiseError("no common symbol named \"%s\"", label.c_str());
|
||||
unsigned long size = commonSymbols[label];
|
||||
int alignment = 4;
|
||||
if (size > 4)
|
||||
alignment = 8;
|
||||
if (size > 8)
|
||||
alignment = 16;
|
||||
printf(". = ALIGN(%d);\n", alignment);
|
||||
printf("%s = .;\n", label.c_str());
|
||||
printf(". += 0x%lX;\n", size);
|
||||
}
|
||||
|
||||
symFile.ExpectEmptyRestOfLine();
|
||||
int alignment = 4;
|
||||
if (size > 4)
|
||||
alignment = 8;
|
||||
if (size > 8)
|
||||
alignment = 16;
|
||||
printf(". = ALIGN(%d);\n", alignment);
|
||||
printf("%s = .;\n", commonSym.first.c_str());
|
||||
printf(". += 0x%lX;\n", size);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,11 @@ CFile::CFile(std::string path)
|
|||
|
||||
m_size = std::ftell(fp);
|
||||
|
||||
if (m_size < 0)
|
||||
FATAL_ERROR("File size of \"%s\" is less than zero.\n", path.c_str());
|
||||
else if (m_size == 0)
|
||||
return; // Empty file
|
||||
|
||||
m_buffer = new char[m_size + 1];
|
||||
m_buffer[m_size] = 0;
|
||||
|
||||
|
|
@ -49,7 +54,7 @@ CFile::CFile(std::string path)
|
|||
|
||||
CFile::~CFile()
|
||||
{
|
||||
delete[] m_buffer;
|
||||
if (m_size > 0) delete[] m_buffer;
|
||||
}
|
||||
|
||||
void CFile::FindIncbins()
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue