Merge pull request #187 from PikalaxALT/leafgreen

Match Pokemon FireRed 1.1 US
This commit is contained in:
PikalaxALT
2019-12-19 12:34:20 -05:00
committed by GitHub
35 changed files with 299 additions and 125 deletions
+2 -1
View File
@@ -1,5 +1,5 @@
language: generic language: generic
dist: trusty dist: bionic
sudo: false sudo: false
addons: addons:
apt: apt:
@@ -27,5 +27,6 @@ matrix:
script: script:
- make tools CXX=g++-7 - make tools CXX=g++-7
- make -j2 compare - make -j2 compare
- make -j2 compare_firered_rev1
after_success: after_success:
- .travis/calcrom/webhook.sh pokefirered - .travis/calcrom/webhook.sh pokefirered
+15 -34
View File
@@ -5,36 +5,7 @@ CPP := $(CC) -E
LD := tools/binutils/bin/arm-none-eabi-ld LD := tools/binutils/bin/arm-none-eabi-ld
OBJCOPY := tools/binutils/bin/arm-none-eabi-objcopy OBJCOPY := tools/binutils/bin/arm-none-eabi-objcopy
GAME_VERSION := FIRERED include config.mk
REVISION := 0
GAME_LANGUAGE := ENGLISH
# So long as baserom.gba is required, we error out if the
# user tries to build any ROM other than FireRed.
ifneq ($(GAME_VERSION),FIRERED)
$(error We can only build English Pokemon FireRed v1.0 currently)
else ifneq ($(REVISION),0)
$(error We can only build English Pokemon FireRed v1.0 currently)
else ifneq ($(GAME_LANGUAGE),ENGLISH)
$(error We can only build English Pokemon FireRed v1.0 currently)
endif
ifeq ($(GAME_VERSION),FIRERED)
TITLE := POKEMON FIRE
GAME_CODE := BPR
BUILD_NAME := firered
else
TITLE := POKEMON LEAF
GAME_CODE := BPL
BUILD_NAME := leafgreen
endif
ifeq ($(GAME_LANGUAGE),ENGLISH)
GAME_CODE := $(GAME_CODE)E
endif
ifneq ($(REVISION),0)
BUILD_NAME := $(BUILD_NAME)_rev$(REVISION)
endif
MAKER_CODE := 01
SHELL := /bin/bash -o pipefail SHELL := /bin/bash -o pipefail
@@ -57,12 +28,12 @@ DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR) SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR) MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR)
ASFLAGS := -mcpu=arm7tdmi --defsym $(GAME_VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(GAME_LANGUAGE)=1 ASFLAGS := -mcpu=arm7tdmi --defsym $(GAME_VERSION)=1 --defsym REVISION=$(GAME_REVISION) --defsym $(GAME_LANGUAGE)=1
CC1 := tools/agbcc/bin/agbcc CC1 := tools/agbcc/bin/agbcc
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
CPPFLAGS := -I tools/agbcc -I tools/agbcc/include -iquote include -nostdinc -undef -D$(GAME_VERSION) -DREVISION=$(REVISION) -D$(GAME_LANGUAGE) CPPFLAGS := -I tools/agbcc -I tools/agbcc/include -iquote include -nostdinc -undef -D$(GAME_VERSION) -DREVISION=$(GAME_REVISION) -D$(GAME_LANGUAGE)
LDFLAGS = -Map ../../$(MAP) LDFLAGS = -Map ../../$(MAP)
@@ -133,7 +104,7 @@ all: tools rom
rom: $(ROM) rom: $(ROM)
ifeq ($(COMPARE),1) ifeq ($(COMPARE),1)
@$(SHA1) rom.sha1 @$(SHA1) $(BUILD_NAME).sha1
endif endif
tools: $(TOOLDIRS) tools: $(TOOLDIRS)
@@ -252,8 +223,18 @@ $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_comm
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) $(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB) cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB)
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(GAME_REVISION) --silent
$(ROM): $(ELF) $(ROM): $(ELF)
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
# "friendly" target names for convenience sake
firered: ; @$(MAKE) GAME_VERSION=FIRERED
firered_rev1: ; @$(MAKE) GAME_VERSION=FIRERED GAME_REVISION=1
leafgreen: ; @$(MAKE) GAME_VERSION=LEAFGREEN
leafgreen_rev1: ; @$(MAKE) GAME_VERSION=LEAFGREEN GAME_REVISION=1
compare_firered: ; @$(MAKE) GAME_VERSION=FIRERED COMPARE=1
compare_firered_rev1: ; @$(MAKE) GAME_VERSION=FIRERED GAME_REVISION=1 COMPARE=1
compare_leafgreen: ; @$(MAKE) GAME_VERSION=LEAFGREEN COMPARE=1
compare_leafgreen_rev1: ; @$(MAKE) GAME_VERSION=LEAFGREEN GAME_REVISION=1 COMPARE=1
+26 -17
View File
@@ -46,20 +46,29 @@ GPIOPortReadEnable: @ 80000C8
.4byte 0xFFFFFFFF .4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF .4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF .4byte 0xFFFFFFFF
.ifdef FIRERED
.4byte 4 .4byte 4
.4byte 2 .4byte 2
.ascii "pokemon red version" .ascii "pokemon red version"
.space 13 .space 13
.4byte 0x82350AC @ gMonFrontPicTable .else
.4byte 0x823654C @ gMonBackPicTable .ifdef LEAFGREEN
.4byte 0x823730C @ gMonPaletteTable .4byte 5
.4byte 0x82380CC @ gMonShinyPaletteTable .4byte 2
.4byte 0x83D37A0 @ gMonIconTable .ascii "pokemon green version"
.4byte 0x83D3E80 @ gMonIconPaletteIndices .space 11
.4byte 0x83D4038 @ gMonIconPaletteTable .endif
.4byte 0x8245EE0 @ gSpeciesNames .endif
.4byte 0x8247094 @ gMoveNames .4byte gMonFrontPicTable
.4byte 0x84556F8 @ gDecorations .4byte gMonBackPicTable
.4byte gMonPaletteTable
.4byte gMonShinyPaletteTable
.4byte gMonIconTable
.4byte gMonIconPaletteIndices
.4byte gMonIconPaletteTable
.4byte gSpeciesNames
.4byte gMoveNames
.4byte gDecorations
.4byte 0xEE0 @ offsetof(struct SaveBlock1, flags) .4byte 0xEE0 @ offsetof(struct SaveBlock1, flags)
.4byte 0x1000 @ offsetof(struct SaveBlock1, vars) .4byte 0x1000 @ offsetof(struct SaveBlock1, vars)
.4byte 0x18 @ offsetof(struct SaveBlock2, pokedex) .4byte 0x18 @ offsetof(struct SaveBlock2, pokedex)
@@ -88,13 +97,13 @@ GPIOPortReadEnable: @ 80000C8
.4byte 0x30BB .4byte 0x30BB
.4byte 0x30A7 .4byte 0x30A7
.4byte 0 .4byte 0
.4byte 0x8254784 @ gBaseStats .4byte gBaseStats
.4byte 0x824FC40 @ gAbilityNames .4byte gAbilityNames
.4byte 0x824FB08 @ gAbilityDescriptionPointers .4byte gAbilityDescriptionPointers
.4byte 0x83DB028 @ gItems .4byte gItems
.4byte 0x8250C04 @ gBattleMoves .4byte gBattleMoves
.4byte 0x826056C @ gBallSpriteSheets .4byte gBallSpriteSheets
.4byte 0x82605CC @ gBallSpritePalettes .4byte gBallSpritePalettes
.4byte 0xA8 .4byte 0xA8
.4byte 0x82C .4byte 0x82C
.4byte 0x83B .4byte 0x83B
+4 -4
View File
@@ -2363,7 +2363,7 @@ _081E0668:
lsrs r5, r0, 16 lsrs r5, r0, 16
cmp r5, 0x3 cmp r5, 0x3
bls _081E0668 bls _081E0668
ldr r1, _081E06E0 @ =0x081E1B25 ldr r1, _081E06E0 @ =sub_81E1B24
movs r5, 0x2 movs r5, 0x2
negs r5, r5 negs r5, r5
ands r5, r1 ands r5, r1
@@ -2371,7 +2371,7 @@ _081E0668:
ldr r0, [r2] ldr r0, [r2]
adds r4, r0, 0 adds r4, r0, 0
adds r4, 0x8 adds r4, 0x8
ldr r0, _081E06E4 @ =0x081E1B55 ldr r0, _081E06E4 @ =rfu_REQ_changeMasterSlave
subs r0, r1 subs r0, r1
lsls r0, 15 lsls r0, 15
lsrs r3, r0, 16 lsrs r3, r0, 16
@@ -2408,8 +2408,8 @@ _081E06D0: .4byte gUnknown_3007464
_081E06D4: .4byte gUnknown_3007468 _081E06D4: .4byte gUnknown_3007468
_081E06D8: .4byte gUnknown_3007450 _081E06D8: .4byte gUnknown_3007450
_081E06DC: .4byte gUnknown_3007440 _081E06DC: .4byte gUnknown_3007440
_081E06E0: .4byte 0x081E1B25 _081E06E0: .4byte sub_81E1B24
_081E06E4: .4byte 0x081E1B55 _081E06E4: .4byte rfu_REQ_changeMasterSlave
_081E06E8: .4byte 0x0000ffff _081E06E8: .4byte 0x0000ffff
thumb_func_end sub_81E05B0 thumb_func_end sub_81E05B0
+9
View File
@@ -158,3 +158,12 @@
.byte \bg, \top, \left, \height, \width, \palno .byte \bg, \top, \left, \height, \width, \palno
.2byte \baseBlock .2byte \baseBlock
.endm .endm
.macro abspath relative
.if REVISION == 0
.ascii "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/"
.else
.ascii "C:/WORK/POKeFRLG/Src/pm_lgfr_ose/source/"
.endif
.asciz "\relative"
.endm
+8
View File
@@ -337,7 +337,11 @@ sub_8105800: @ 8105800
cmp r0, 0 cmp r0, 0
beq _08105864 beq _08105864
ldrb r0, [r5] ldrb r0, [r5]
.if REVISION == 0
cmp r0, 0 cmp r0, 0
.else
cmp r0, 0xFF
.endif
beq _08105878 beq _08105878
_08105840: _08105840:
mov r1, sp mov r1, sp
@@ -351,7 +355,11 @@ _08105840:
lsrs r4, r0, 24 lsrs r4, r0, 24
adds r0, r5, r4 adds r0, r5, r4
ldrb r0, [r0] ldrb r0, [r0]
.if REVISION == 0
cmp r0, 0 cmp r0, 0
.else
cmp r0, 0xFF
.endif
beq _08105878 beq _08105878
cmp r4, 0xA cmp r4, 0xA
bls _08105840 bls _08105840
+23 -3
View File
@@ -1,7 +1,27 @@
#!/bin/bash #!/bin/bash
if [ "$1" == "firered" ] || [ "$1" == "leafgreen" ] || [ "$1" == "firered_rev1" ] || [ "$1" == "leafgreen_rev1" ]; then
buildname="$1"
shift
else
buildname=firered
fi
if [ "$buildname" == "firered" ]; then
baserom=baserom
elif [ "$buildname" == "leafgreen" ]; then
baserom=baserom_lg
elif [ "$buildname" == "firered_rev1" ]; then
baserom=baserom_fr_rev1
elif [ "$buildname" == "leafgreen_rev1" ]; then
baserom=baserom_lg_rev1
else
echo unknown buildname $buildname
exit 1
fi
OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
$OBJDUMP $OPTIONS baserom.gba > baserom.dump $OBJDUMP $OPTIONS ${baserom}.gba > ${baserom}.dump || exit 1
$OBJDUMP $OPTIONS pokefirered.gba > pokefirered.dump $OBJDUMP $OPTIONS poke${buildname}.gba > poke${buildname}.dump
diff -u baserom.dump pokefirered.dump diff -u ${baserom}.dump poke${buildname}.dump
+51
View File
@@ -0,0 +1,51 @@
# Default variables
GAME_VERSION ?= FIRERED
GAME_REVISION ?= 0
GAME_LANGUAGE ?= ENGLISH
MODERN ?= 0
COMPARE ?= 0
# For gbafix
MAKER_CODE := 01
# Version
ifeq ($(GAME_VERSION),FIRERED)
TITLE := POKEMON FIRE
GAME_CODE := BPR
BUILD_NAME := firered
else
ifeq ($(GAME_VERSION),LEAFGREEN)
TITLE := POKEMON LEAF
GAME_CODE := BPG
BUILD_NAME := leafgreen
else
$(error unknown version $(GAME_VERSION))
endif
endif
# Revision
ifeq ($(GAME_REVISION),0)
BUILD_NAME := $(BUILD_NAME)
else
ifeq ($(GAME_REVISION),1)
BUILD_NAME := $(BUILD_NAME)_rev1
else
$(error unknown revision $(GAME_REVISION))
endif
endif
# Language
ifeq ($(GAME_LANGUAGE),ENGLISH)
BUILD_NAME := $(BUILD_NAME)
GAME_CODE := $(GAME_CODE)E
else
$(error unknown language $(GAME_LANGUAGE))
endif
# Modern GCC
ifeq ($(MODERN), 0)
BUILD_NAME := $(BUILD_NAME)
else
BUILD_NAME := $(BUILD_NAME)_modern
endif
+3 -1
View File
@@ -1,3 +1,5 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata .section .rodata
.align 2 .align 2
@@ -88,7 +90,7 @@ gUnknown_83A7208:: @ 83A7208
.align 2 .align 2
gUnknown_83A720C:: @ 83A720C gUnknown_83A720C:: @ 83A720C
.asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/evobjmv.c" abspath "evobjmv.c"
.align 2 .align 2
gUnknown_83A7240:: @ 83A7240 gUnknown_83A7240:: @ 83A7240
+5 -5
View File
@@ -12361,9 +12361,8 @@ gUnknown_81C1300:: @ 81C1300
.string "It looks like it's having fun.$" .string "It looks like it's having fun.$"
EventScript_1C1338:: @ 81C1338 EventScript_1C1338:: @ 81C1338
waitse map_script_2 VAR_0x4030, 0, EventScript_1C1348
setdivewarp MAP_UNKNOWN_MAP_00_00, 72, 7187, 8 .2byte 0
nop
copyvar VAR_0x4030, 1 copyvar VAR_0x4030, 1
end end
@@ -14474,8 +14473,9 @@ Text_1C55A4:: @ 81C55A4
.string " \n" .string " \n"
.string "  $" .string "  $"
Text_1C55C5:: @ 81C55C5 .align 2
.string " $" Text_1C55C8:: @ 81C55C8
.string "$"
gText_WouldYouLikeToSaveTheGame:: @ 81C55C9 gText_WouldYouLikeToSaveTheGame:: @ 81C55C9
.string "Would you like to save the game?$" .string "Would you like to save the game?$"
+7 -4
View File
@@ -45,6 +45,9 @@ gUnknown_83CBB10:: @ 83CBB10 gbapal gUnknown_83CBA90
gUnknown_83CBB30:: @ 83CBB30 4bpp gUnknown_83CBB30:: @ 83CBB30 4bpp
.incbin "graphics/field_effects/unk_83CBB30.bin" .incbin "graphics/field_effects/unk_83CBB30.bin"
gUnknown_83CBDB0::
.incbin "graphics/field_effects/unk_83CBDB0.4bpp"
.align 2 .align 2
gUnknown_83CBE30:: @ 83CBE30 dataptr gUnknown_83CBE30:: @ 83CBE30 dataptr
.4byte FieldEffectCmd_loadtiles .4byte FieldEffectCmd_loadtiles
@@ -398,10 +401,10 @@ gUnknown_83CC244:: @ 83CC244 dataptr
.4byte sub_8087CB4 .4byte sub_8087CB4
gUnknown_83CC250:: @ 83CC250 sprite_frames gUnknown_83CC250:: @ 83CC250 sprite_frames
obj_frame_tiles 0x083cbdb0, 0x0020 obj_frame_tiles gUnknown_83CBDB0 + 0x00, 0x0020
obj_frame_tiles 0x083cbdd0, 0x0020 obj_frame_tiles gUnknown_83CBDB0 + 0x20, 0x0020
obj_frame_tiles 0x083cbdf0, 0x0020 obj_frame_tiles gUnknown_83CBDB0 + 0x40, 0x0020
obj_frame_tiles 0x083cbe10, 0x0020 obj_frame_tiles gUnknown_83CBDB0 + 0x60, 0x0020
gUnknown_83CC270:: @ 83CC270 animcmd gUnknown_83CC270:: @ 83CC270 animcmd
obj_image_anim_frame 0x0000, 0 obj_image_anim_frame 0x0000, 0
+4 -4
View File
@@ -221,10 +221,10 @@ gUnknown_843F9A0::
obj_image_anim_end obj_image_anim_end
gUnknown_843F9A8:: gUnknown_843F9A8::
.4byte 0x843f988 .4byte gUnknown_843F988
.4byte 0x843f990 .4byte gUnknown_843F990
.4byte 0x843f998 .4byte gUnknown_843F998
.4byte 0x843f9a0 .4byte gUnknown_843F9A0
gUnknown_843F9B8:: @ 843F9B8 sprite_template gUnknown_843F9B8:: @ 843F9B8 sprite_template
spr_template 1, 1, gUnknown_843F980, gUnknown_843F9A8, NULL, gDummySpriteAffineAnimTable, sub_8101B20 spr_template 1, 1, gUnknown_843F980, gUnknown_843F9A8, NULL, gDummySpriteAffineAnimTable, sub_8101B20
+1 -1
View File
@@ -95,7 +95,7 @@ gUnknown_843ED88:: @ 843ED88
.align 2 .align 2
gUnknown_843ED94:: @ 843ED94 gUnknown_843ED94:: @ 843ED94
.asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu.c" abspath "rfu.c"
.align 2 .align 2
gUnknown_843EDC4:: @ 843EDC4 gUnknown_843EDC4:: @ 843EDC4
+1 -1
View File
@@ -315,7 +315,7 @@ gUnknown_8457120:: @ 8457120
.align 2 .align 2
gUnknown_8457138:: @ 8457138 gUnknown_8457138:: @ 8457138
.asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" abspath "rfu_union_tool.c"
.align 2 .align 2
gUnknown_8457174:: @ 8457174 gUnknown_8457174:: @ 8457174
+5
View File
@@ -980,8 +980,13 @@ gUnknown_81B752C:: @ 81B752C
.string " the POKéDEX list.\n" .string " the POKéDEX list.\n"
.string "{CIRCLE_2} A caught POKéMON will provide a\n" .string "{CIRCLE_2} A caught POKéMON will provide a\n"
.string " large amount of data.\n" .string " large amount of data.\n"
.if REVISION < 1
.string "{CIRCLE_3} Select “AREA” to display the TOWN\n" .string "{CIRCLE_3} Select “AREA” to display the TOWN\n"
.string " MAP with the POKéMON's habitat(s).$" .string " MAP with the POKéMON's habitat(s).$"
.else
.string "{CIRCLE_3} Select “NEXT DATA” to display the\n"
.string " TOWN MAP with its habitat(s).$"
.endif
gUnknown_81B7611:: @ 81B7611 gUnknown_81B7611:: @ 81B7611
.string "{CIRCLE_1} Go up to the PC at home, then press\n" .string "{CIRCLE_1} Go up to the PC at home, then press\n"
View File
+1
View File
@@ -0,0 +1 @@
dd5945db9b930750cb39d00c84da8571feebf417 pokefirered_rev1.gba
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

+9 -3
View File
@@ -11,9 +11,15 @@
// #define NDEBUG // #define NDEBUG
// Fire Red likely forgot to define NDEBUG/NOAGBPRN before release, leading // Fire Red likely forgot to define NDEBUG/NOAGBPRN before release, leading
// to the inclusion of asserts in the retail ROM. Don't try to re-enable this yet // to the inclusion of asserts in the retail ROM.
// since not all baseroms and pointers have been dumped yet and will result in
// a broken ROM. #if REVISION == 0
#define CODE_ROOT "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/"
#else
#define CODE_ROOT "C:/WORK/POKeFRLG/Src/pm_lgfr_ose/source/"
#endif
#define ABSPATH(x) (CODE_ROOT x)
#ifdef ENGLISH #ifdef ENGLISH
#define UNITS_IMPERIAL #define UNITS_IMPERIAL
+1
View File
@@ -0,0 +1 @@
574fa542ffebb14be69902d1d36f1ec0a4afd71e pokeleafgreen.gba
+1
View File
@@ -0,0 +1 @@
7862c67bdecbe21d1d69ce082ce34327e1c6ed5e pokeleafgreen_rev1.gba
+2 -2
View File
@@ -41,8 +41,8 @@ bool32 ValidateTrainerTowerData(struct EReaderTrainerHillSet * ttdata)
static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttdata, u8 * buffer) static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttdata, u8 * buffer)
{ {
AGB_ASSERT_EX(ttdata->dummy == 0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/cereader_tool.c", 198); AGB_ASSERT_EX(ttdata->dummy == 0, ABSPATH("cereader_tool.c"), 198);
AGB_ASSERT_EX(ttdata->id == 0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/cereader_tool.c", 199) AGB_ASSERT_EX(ttdata->id == 0, ABSPATH("cereader_tool.c"), 199)
memset(buffer, 0, 0x1000); memset(buffer, 0, 0x1000);
memcpy(buffer, ttdata, SEC30_SIZE); memcpy(buffer, ttdata, SEC30_SIZE);
+14 -2
View File
@@ -1063,9 +1063,14 @@ const u8 gMewPokedexText[] = _(
const u8 gMewPokedexTextUnused[] = _(""); const u8 gMewPokedexTextUnused[] = _("");
const u8 gChikoritaPokedexText[] = _( const u8 gChikoritaPokedexText[] = _(
#if REVISION == 0
"Its pleasantly aromatic leaves have the\n" "Its pleasantly aromatic leaves have the\n"
#else
"Its pleasantly aromatic leaf has the\n"
#endif
"ability to check the humidity and\n" "ability to check the humidity and\n"
"temperature."); "temperature."
);
const u8 gChikoritaPokedexTextUnused[] = _(""); const u8 gChikoritaPokedexTextUnused[] = _("");
@@ -1735,9 +1740,16 @@ const u8 gPupitarPokedexText[] = _(
const u8 gPupitarPokedexTextUnused[] = _(""); const u8 gPupitarPokedexTextUnused[] = _("");
const u8 gTyranitarPokedexText[] = _( const u8 gTyranitarPokedexText[] = _(
#if REVISION == 0
"Its body can't be harmed by any sort of\n" "Its body can't be harmed by any sort of\n"
"attack, so it is very eager to make\n" "attack, so it is very eager to make\n"
"challenges against enemies."); "challenges against enemies."
#else
"It has an impudent nature. Having great\n"
"strength, it can even change surrounding\n"
"landforms."
#endif
);
const u8 gTyranitarPokedexTextUnused[] = _(""); const u8 gTyranitarPokedexTextUnused[] = _("");
+4
View File
@@ -1503,7 +1503,11 @@ static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycare
u8 lvlText[12]; u8 lvlText[12];
u8 intText[8]; u8 intText[8];
#if REVISION == 0
strcpy((char *)lvlText, (const char *)gText_Lv); strcpy((char *)lvlText, (const char *)gText_Lv);
#else
StringCopy(lvlText, gText_Lv);
#endif
level = GetLevelAfterDaycareSteps(&daycare->mons[daycareSlotId].mon, daycare->mons[daycareSlotId].steps); level = GetLevelAfterDaycareSteps(&daycare->mons[daycareSlotId].mon, daycare->mons[daycareSlotId].steps);
ConvertIntToDecimalStringN(intText, level, STR_CONV_MODE_LEFT_ALIGN, 3); ConvertIntToDecimalStringN(intText, level, STR_CONV_MODE_LEFT_ALIGN, 3);
StringAppend(lvlText, intText); StringAppend(lvlText, intText);
+1 -1
View File
@@ -1915,7 +1915,7 @@ u16 Special_BattleCardAction(void)
case 4: case 4:
return sub_81445C0(2); return sub_81445C0(2);
default: default:
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scr_tool.c", 3873); AGB_ASSERT_EX(0, ABSPATH("scr_tool.c"), 3873);
return 0; return 0;
} }
} }
+1 -1
View File
@@ -83,7 +83,7 @@ void sub_8058A00(struct MapHeader * mapHeader)
VMap.map = gBackupMapLayout; VMap.map = gBackupMapLayout;
VMap.Xsize = mapLayout->width + 15; VMap.Xsize = mapLayout->width + 15;
VMap.Ysize = mapLayout->height + 14; VMap.Ysize = mapLayout->height + 14;
AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/fieldmap.c", 158); AGB_ASSERT_EX(VMap.Xsize * VMap.Ysize <= VIRTUAL_MAP_SIZE, ABSPATH("fieldmap.c"), 158);
map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height); map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height);
mapheader_copy_mapdata_of_adjacent_maps(mapHeader); mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
} }
+17
View File
@@ -131,6 +131,11 @@ static void sub_80EE9D4(struct Sprite * sprite);
static void sub_80EEA94(struct IntroSequenceData * ptr); static void sub_80EEA94(struct IntroSequenceData * ptr);
static void sub_80EEB08(struct Sprite * sprite); static void sub_80EEB08(struct Sprite * sprite);
static void sub_80EEBE4(void); static void sub_80EEBE4(void);
#if REVISION >= 1
static void sub_rev1_80EDFAC(void);
#else
#define sub_rev1_80EDFAC()
#endif
extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; extern const u32 gMultiBootProgram_PokemonColosseum_Start[];
@@ -828,6 +833,7 @@ static void sub_80ECD60(struct IntroSequenceData * this)
if (!IsDma3ManagerBusyWithBgCopy()) if (!IsDma3ManagerBusyWithBgCopy())
{ {
DestroySprite(this->field_0014); DestroySprite(this->field_0014);
sub_rev1_80EDFAC();
this->field_0012 = 0; this->field_0012 = 0;
this->field_0004++; this->field_0004++;
} }
@@ -1592,6 +1598,17 @@ static struct Sprite * sub_80EDF68(void)
return &gSprites[spriteId]; return &gSprites[spriteId];
} }
#if REVISION >= 1
static void sub_rev1_80EDFAC(void)
{
int i;
for (i = 0; i < 2; i++)
{
gSprites[CreateSprite(&gUnknown_840BCFC, 0x68 + 32 * i, 0x6c, 5)].oam.tileNum += i * 4;
}
}
#endif
static void sub_80EDF94(struct IntroSequenceData * this) static void sub_80EDF94(struct IntroSequenceData * this)
{ {
u8 taskId; u8 taskId;
+7 -1
View File
@@ -57,14 +57,20 @@ static void IntrDummy(void);
#if defined(FIRERED) #if defined(FIRERED)
#define GAME_VERSION VERSION_FIRE_RED #define GAME_VERSION VERSION_FIRE_RED
#elif defined(LEAF_GREEN) #elif defined(LEAFGREEN)
#define GAME_VERSION VERSION_LEAF_GREEN #define GAME_VERSION VERSION_LEAF_GREEN
#else
#error unknown version
#endif #endif
const u8 gGameVersion = GAME_VERSION; const u8 gGameVersion = GAME_VERSION;
const u8 gGameLanguage = GAME_LANGUAGE; const u8 gGameLanguage = GAME_LANGUAGE;
#if REVISION == 0
const char BuildDateTime[] = "2004 04 26 11:20"; const char BuildDateTime[] = "2004 04 26 11:20";
#else
const char BuildDateTime[] = "2004 07 20 09:30";
#endif
const IntrFunc gIntrTableTemplate[] = const IntrFunc gIntrTableTemplate[] =
{ {
+6 -6
View File
@@ -93,7 +93,7 @@ void *AllocInternal(void *heapStart, u32 size)
if (pos->next == head) if (pos->next == head)
{ {
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/gflib/malloc.c", 174); AGB_ASSERT_EX(0, ABSPATH("gflib/malloc.c"), 174);
return NULL; return NULL;
} }
@@ -103,20 +103,20 @@ void *AllocInternal(void *heapStart, u32 size)
void FreeInternal(void *heapStart, void *p) void FreeInternal(void *heapStart, void *p)
{ {
AGB_ASSERT_EX(p != NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/gflib/malloc.c", 195); AGB_ASSERT_EX(p != NULL, ABSPATH("gflib/malloc.c"), 195);
if (p) { if (p) {
struct MemBlock *head = (struct MemBlock *)heapStart; struct MemBlock *head = (struct MemBlock *)heapStart;
struct MemBlock *pos = (struct MemBlock *)((u8 *)p - sizeof(struct MemBlock)); struct MemBlock *pos = (struct MemBlock *)((u8 *)p - sizeof(struct MemBlock));
AGB_ASSERT_EX(pos->magic_number == MALLOC_SYSTEM_ID, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/gflib/malloc.c", 204); AGB_ASSERT_EX(pos->magic_number == MALLOC_SYSTEM_ID, ABSPATH("gflib/malloc.c"), 204);
AGB_ASSERT_EX(pos->flag == TRUE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/gflib/malloc.c", 205); AGB_ASSERT_EX(pos->flag == TRUE, ABSPATH("gflib/malloc.c"), 205);
pos->flag = FALSE; pos->flag = FALSE;
// If the freed block isn't the last one, merge with the next block // If the freed block isn't the last one, merge with the next block
// if it's not in use. // if it's not in use.
if (pos->next != head) { if (pos->next != head) {
if (!pos->next->flag) { if (!pos->next->flag) {
AGB_ASSERT_EX(pos->next->magic_number == MALLOC_SYSTEM_ID, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/gflib/malloc.c", 211); AGB_ASSERT_EX(pos->next->magic_number == MALLOC_SYSTEM_ID, ABSPATH("gflib/malloc.c"), 211);
pos->size += sizeof(struct MemBlock) + pos->next->size; pos->size += sizeof(struct MemBlock) + pos->next->size;
pos->next->magic_number = 0; pos->next->magic_number = 0;
pos->next = pos->next->next; pos->next = pos->next->next;
@@ -129,7 +129,7 @@ void FreeInternal(void *heapStart, void *p)
// if it's not in use. // if it's not in use.
if (pos != head) { if (pos != head) {
if (!pos->prev->flag) { if (!pos->prev->flag) {
AGB_ASSERT_EX(pos->prev->magic_number == MALLOC_SYSTEM_ID, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/gflib/malloc.c", 228); AGB_ASSERT_EX(pos->prev->magic_number == MALLOC_SYSTEM_ID, ABSPATH("gflib/malloc.c"), 228);
pos->prev->next = pos->next; pos->prev->next = pos->next;
+1 -1
View File
@@ -142,7 +142,7 @@ static u32 GetMENewsJisanState(struct MENewsJisanStruct *a0)
return 4; return 4;
return 5; return 5;
default: default:
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/menews_jisan.c", 383); AGB_ASSERT_EX(0, ABSPATH("menews_jisan.c"), 383);
return 0; return 0;
} }
} }
+4 -4
View File
@@ -852,7 +852,7 @@ u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command)
case 4: case 4:
return a0->unk_44; return a0->unk_44;
default: default:
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825); AGB_ASSERT_EX(0, ABSPATH("mevent.c"), 825);
return 0; return 0;
} }
} }
@@ -881,7 +881,7 @@ void sub_814451C(u32 command)
} }
if (dest == NULL) if (dest == NULL)
{ {
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868); AGB_ASSERT_EX(0, ABSPATH("mevent.c"), 868);
} }
else if (++(*dest) > 999) else if (++(*dest) > 999)
{ {
@@ -939,7 +939,7 @@ u16 sub_81445C0(u32 command)
break; break;
} }
} }
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 913); AGB_ASSERT_EX(0, ABSPATH("mevent.c"), 913);
return 0; return 0;
} }
@@ -977,7 +977,7 @@ void sub_8144714(u32 a0, u32 a1)
sub_8144824(1, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5); sub_8144824(1, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5);
break; break;
default: default:
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 988); AGB_ASSERT_EX(0, ABSPATH("mevent.c"), 988);
} }
} }
} }
+27 -27
View File
@@ -68,7 +68,7 @@ static void mevent_srv_free_resources(struct mevent_srv_common * svr)
static void mevent_srv_common_init_send(struct mevent_srv_common * svr, u32 ident, const void * src, u32 size) static void mevent_srv_common_init_send(struct mevent_srv_common * svr, u32 ident, const void * src, u32 size)
{ {
AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, ABSPATH("mevent_server.c"), 257);
mevent_srv_sub_init_send(&svr->manager, ident, src, size); mevent_srv_sub_init_send(&svr->manager, ident, src, size);
} }
@@ -129,7 +129,7 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
switch (cmd->instr) switch (cmd->instr)
{ {
case 0: case 0:
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 354); AGB_ASSERT_EX(cmd->parameter == NULL, ABSPATH("mevent_server.c"), 354);
svr->mainseqno = 1; svr->mainseqno = 1;
svr->param = cmd->flag; svr->param = cmd->flag;
break; break;
@@ -137,23 +137,23 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
svr->mainseqno = 3; svr->mainseqno = 3;
break; break;
case 2: case 2:
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364); AGB_ASSERT_EX(cmd->parameter == NULL, ABSPATH("mevent_server.c"), 364);
mevent_srv_sub_init_recv(&svr->manager, cmd->flag, svr->recvBuffer); mevent_srv_sub_init_recv(&svr->manager, cmd->flag, svr->recvBuffer);
svr->mainseqno = 2; svr->mainseqno = 2;
break; break;
case 3: case 3:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 370); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 370);
svr->cmdidx = 0; svr->cmdidx = 0;
svr->cmdBuffer = cmd->parameter; svr->cmdBuffer = cmd->parameter;
break; break;
case 5: case 5:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 376);
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377); AGB_ASSERT_EX(cmd->parameter == NULL, ABSPATH("mevent_server.c"), 377);
memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventClientHeaderStruct)); memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventClientHeaderStruct));
break; break;
case 6: case 6:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 382);
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383); AGB_ASSERT_EX(cmd->parameter == NULL, ABSPATH("mevent_server.c"), 383);
svr->param = ValidateMEventClientHeader(svr->mevent_unk1442cc); svr->param = ValidateMEventClientHeader(svr->mevent_unk1442cc);
break; break;
case 4: case 4:
@@ -164,42 +164,42 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
} }
break; break;
case 7: case 7:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 396);
ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->card); ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->card);
svr->param = sub_8144418(ptr, svr->mevent_unk1442cc, ptr); svr->param = sub_8144418(ptr, svr->mevent_unk1442cc, ptr);
break; break;
case 8: case 8:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 402); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 402);
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 403); AGB_ASSERT_EX(cmd->parameter == NULL, ABSPATH("mevent_server.c"), 403);
svr->param = *(u32 *)svr->recvBuffer; svr->param = *(u32 *)svr->recvBuffer;
break; break;
case 9: case 9:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 408); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 408);
ptr = mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord); ptr = mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord);
svr->param = sub_8144434(ptr, svr->mevent_unk1442cc, ptr); svr->param = sub_8144434(ptr, svr->mevent_unk1442cc, ptr);
break; break;
case 10: case 10:
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 415); AGB_ASSERT_EX(cmd->parameter == NULL, ABSPATH("mevent_server.c"), 415);
svr->param = sub_81444B0(svr->mevent_unk1442cc, cmd->flag); svr->param = sub_81444B0(svr->mevent_unk1442cc, cmd->flag);
break; break;
case 11: case 11:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 420); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 420);
svr->param = sub_8144474(svr->mevent_unk1442cc, cmd->parameter); svr->param = sub_8144474(svr->mevent_unk1442cc, cmd->parameter);
break; break;
case 12: case 12:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 426); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 426);
svr->param = mevent_compare_pointers(cmd->parameter, *(void **)svr->recvBuffer); svr->param = mevent_compare_pointers(cmd->parameter, *(void **)svr->recvBuffer);
break; break;
case 14: case 14:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 432);
mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->news), sizeof(struct MEWonderNewsData)); mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->news), sizeof(struct MEWonderNewsData));
break; break;
case 13: case 13:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 438);
mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->card), sizeof(struct MEWonderCardData)); mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->card), sizeof(struct MEWonderCardData));
break; break;
case 16: case 16:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 444);
mevent_srv_common_init_send(svr, 0x18, mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord), 4); mevent_srv_common_init_send(svr, 0x18, mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord), 4);
break; break;
case 15: case 15:
@@ -215,7 +215,7 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
mevent_srv_common_init_send(svr, 0x10, cmd->parameter, cmd->flag); mevent_srv_common_init_send(svr, 0x10, cmd->parameter, cmd->flag);
break; break;
case 19: case 19:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 466); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 466);
mevent_srv_common_init_send(svr, 0x1a, cmd->parameter, 188); mevent_srv_common_init_send(svr, 0x1a, cmd->parameter, 188);
break; break;
case 20: case 20:
@@ -225,15 +225,15 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
mevent_srv_common_init_send(svr, 0x1c, cmd->parameter, cmd->flag); mevent_srv_common_init_send(svr, 0x1c, cmd->parameter, cmd->flag);
break; break;
case 22: case 22:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 481);
memcpy(svr->card, cmd->parameter, 332); memcpy(svr->card, cmd->parameter, 332);
break; break;
case 23: case 23:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 486);
memcpy(svr->news, cmd->parameter, 444); memcpy(svr->news, cmd->parameter, 444);
break; break;
case 21: case 21:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491); AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 491);
svr->sendWord = *(u32 *)cmd->parameter; svr->sendWord = *(u32 *)cmd->parameter;
break; break;
case 24: case 24:
@@ -245,16 +245,16 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
svr->sendBuffer2Size = cmd->flag; svr->sendBuffer2Size = cmd->flag;
break; break;
case 26: case 26:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506); AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, ABSPATH("mevent_server.c"), 506);
memcpy(svr->card, GetSavedWonderCard(), 332); memcpy(svr->card, GetSavedWonderCard(), 332);
sub_814410C(svr->card); sub_814410C(svr->card);
break; break;
case 27: case 27:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512); AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, ABSPATH("mevent_server.c"), 512);
memcpy(svr->news, GetSavedWonderNews(), 444); memcpy(svr->news, GetSavedWonderNews(), 444);
break; break;
case 28: case 28:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517); AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, ABSPATH("mevent_server.c"), 517);
svr->sendBuffer1 = sub_8069E48(); svr->sendBuffer1 = sub_8069E48();
break; break;
case 29: case 29:
@@ -276,8 +276,8 @@ static u32 (*const func_tbl[])(struct mevent_srv_common *) = {
static u32 mevent_srv_exec_common(struct mevent_srv_common * svr) static u32 mevent_srv_exec_common(struct mevent_srv_common * svr)
{ {
u32 response; u32 response;
AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546); AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), ABSPATH("mevent_server.c"), 546);
response = func_tbl[svr->mainseqno](svr); response = func_tbl[svr->mainseqno](svr);
AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 548); AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), ABSPATH("mevent_server.c"), 548);
return response; return response;
} }
+2 -2
View File
@@ -105,7 +105,7 @@ bool8 ScrCmd_special(struct ScriptContext *ctx)
if (specialPtr < gSpecialsEnd) if (specialPtr < gSpecialsEnd)
(*specialPtr)(); (*specialPtr)();
else else
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 241); AGB_ASSERT_EX(0, ABSPATH("scrcmd.c"), 241);
return FALSE; return FALSE;
} }
@@ -116,7 +116,7 @@ bool8 ScrCmd_specialvar(struct ScriptContext *ctx)
if (specialPtr < gSpecialsEnd) if (specialPtr < gSpecialsEnd)
*varPtr = (*specialPtr)(); *varPtr = (*specialPtr)();
else else
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c", 263); AGB_ASSERT_EX(0, ABSPATH("scrcmd.c"), 263);
return FALSE; return FALSE;
} }
+37
View File
@@ -60,6 +60,7 @@ static void UpdateScanlineEffectRegBuffer(s16 a0);
static void ScheduleStopScanlineEffect(void); static void ScheduleStopScanlineEffect(void);
static void LoadMainTitleScreenPalsAndResetBgs(void); static void LoadMainTitleScreenPalsAndResetBgs(void);
static void CB2_FadeOutTransitionToSaveClearScreen(void); static void CB2_FadeOutTransitionToSaveClearScreen(void);
static void SpriteCallback_TitleScreenFlameOrLeaf(struct Sprite * sprite);
static void CB2_FadeOutTransitionToBerryFix(void); static void CB2_FadeOutTransitionToBerryFix(void);
static void LoadSpriteGfxAndPals(void); static void LoadSpriteGfxAndPals(void);
static void Task_FlameOrLeafSpawner(u8 taskId); static void Task_FlameOrLeafSpawner(u8 taskId);
@@ -238,6 +239,12 @@ static const u8 gUnknown_83BFBD4[] = {
0x04, 0x10, 0x1a, 0x20, 0x30, 0xc8, 0xd8, 0xe0, 0xe8, 0x3c, 0x4c, 0x5c, 0x6c, 0x80, 0x90 0x04, 0x10, 0x1a, 0x20, 0x30, 0xc8, 0xd8, 0xe0, 0xe8, 0x3c, 0x4c, 0x5c, 0x6c, 0x80, 0x90
}; };
#if defined(LEAFGREEN)
static const u16 gUnknown_LG_83BFA10[] = {
50, 80, 110, 60, 90, 70, 100, 50
};
#endif
void CB2_InitTitleScreen(void) void CB2_InitTitleScreen(void)
{ {
switch (gMain.state) switch (gMain.state)
@@ -876,6 +883,7 @@ static void SpriteCallback_TitleScreenFlameOrLeaf(struct Sprite * sprite)
#endif #endif
} }
#if defined(FIRERED)
static bool32 CreateFlameOrLeafSprite(s32 x, s32 y, s32 xspeed, s32 yspeed, bool32 templateId) static bool32 CreateFlameOrLeafSprite(s32 x, s32 y, s32 xspeed, s32 yspeed, bool32 templateId)
{ {
u8 spriteId; u8 spriteId;
@@ -901,6 +909,35 @@ static bool32 CreateFlameOrLeafSprite(s32 x, s32 y, s32 xspeed, s32 yspeed, bool
} }
return FALSE; return FALSE;
} }
#elif defined(LEAFGREEN)
void _CreateFlameOrLeafSprite(s32 y0, s32 x1, s32 y1)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_FlameOrLeaf_State0, 0xF0, y0, 0);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].data[0] = 0xF00;
gSprites[spriteId].data[1] = x1;
gSprites[spriteId].data[2] = y0 << 4;
gSprites[spriteId].data[3] = y1;
gSprites[spriteId].callback = SpriteCallback_TitleScreenFlameOrLeaf;
}
}
void SpriteCallback_LG_8079800(struct Sprite * sprite)
{
sprite->pos1.x -= 7;
if (sprite->pos1.x < -16)
{
sprite->pos1.x = 0x100;
sprite->data[7]++;
if (sprite->data[7] >= NELEMS(gUnknown_LG_83BFA10))
sprite->data[7] = 0;
sprite->pos1.y = gUnknown_LG_83BFA10[sprite->data[7]];
}
}
#define CreateFlameOrLeafSprite ((bool32 (*)())_CreateFlameOrLeafSprite)
#endif //FRLG
static void Task_FlameOrLeafSpawner(u8 taskId) static void Task_FlameOrLeafSpawner(u8 taskId)
{ {