Merge remote-tracking branch 'upstream/master' into berry_crush
This commit is contained in:
8
.gitattributes
vendored
8
.gitattributes
vendored
@@ -10,6 +10,14 @@ Makefile text eol=lf
|
||||
*.inc text eol=lf
|
||||
*.sha1 text eol=lf
|
||||
*.json text eol=lf
|
||||
*.sed text eol=lf
|
||||
*.cpp text eol=lf
|
||||
.gitattributes text eol=lf
|
||||
.gitignore text eol=lf
|
||||
*.hpp text eol=lf
|
||||
*.md text eol=lf
|
||||
*.ps1 text eol=crlf
|
||||
*.yml text eol=lf
|
||||
|
||||
*.png binary
|
||||
*.bin binary
|
||||
|
||||
8
.github/pull_request_template.md
vendored
Normal file
8
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<!--- Provide a general summary of your changes in the Title above -->
|
||||
|
||||
## Description
|
||||
<!--- Describe your changes in detail -->
|
||||
|
||||
## **Discord contact info**
|
||||
<!--- formatted as name#numbers, e.g. PikalaxALT#5823 -->
|
||||
<!--- Contributors must join https://discord.gg/d5dubZ3 -->
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -33,3 +33,4 @@ porymap.project.cfg
|
||||
.vscode/
|
||||
*.a
|
||||
.fuse_hidden*
|
||||
*.sna
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
[terminal]: https://docs.microsoft.com/windows/terminal/get-started
|
||||
[wsl]: https://docs.microsoft.com/windows/wsl/install-win10
|
||||
|
||||
Independently from the specific OS, make sure that the `gcc`, `g++`, `make`, `git`, and `libpng` packages or their equivalents are installed and accessible to the development tools that are used by the project (this means that, for example, on Windows, the packages have to be installed in the WSL environment). The package names and installation methods may vary with each OS.
|
||||
Independently from the specific OS, make sure that the `gcc`, `g++`, `make`, `git`, and `libpng-dev` packages or their equivalents are installed and accessible to the development tools that are used by the project (this means that, for example, on Windows, the packages have to be installed in the WSL environment). The package names and installation methods may vary with each OS.
|
||||
|
||||
Install the devkitARM toolchain of devkitPro as per [the instructions on their wiki](https://devkitpro.org/wiki/devkitPro_pacman). On Windows, follow the Linux instructions inside WSL as any steps about the Windows installer do not apply.
|
||||
|
||||
|
||||
37
Makefile
37
Makefile
@@ -70,6 +70,7 @@ LIBPATH := -L ../../tools/agbcc/lib
|
||||
else
|
||||
CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mcpu=arm7tdmi -fno-toplevel-reorder -Wno-pointer-to-int-cast -g
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g
|
||||
ROM := pokeemerald_modern.gba
|
||||
OBJ_DIR := build/modern
|
||||
LIBPATH := -L "$(dir $(shell $(CC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(CC) -mthumb -print-file-name=libc.a))"
|
||||
@@ -136,6 +137,9 @@ C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS))
|
||||
ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
|
||||
ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
|
||||
|
||||
# get all the data/*.s files EXCEPT the ones with specific rules
|
||||
REGULAR_DATA_ASM_SRCS := $(filter-out $(DATA_ASM_SUBDIR)/maps.s $(DATA_ASM_SUBDIR)/map_events.s, $(wildcard $(DATA_ASM_SUBDIR)/*.s))
|
||||
|
||||
DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
|
||||
DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
|
||||
|
||||
@@ -178,7 +182,7 @@ mostlyclean: tidy
|
||||
rm -f $(SAMPLE_SUBDIR)/*.bin
|
||||
rm -f $(CRY_SUBDIR)/*.bin
|
||||
rm -f $(MID_SUBDIR)/*.s
|
||||
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
|
||||
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
|
||||
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
|
||||
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc
|
||||
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
|
||||
@@ -275,23 +279,32 @@ endif
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s $$(c_asm_dep)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(ASM_BUILDDIR)/%.o: asm_dep :=
|
||||
else
|
||||
$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) -I "" $(ASM_SUBDIR)/$*.s)
|
||||
endif
|
||||
# The dep rules have to be explicit or else missing files won't be reported.
|
||||
# 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.
|
||||
|
||||
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep)
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(DATA_ASM_BUILDDIR)/%.o: data_dep :=
|
||||
else
|
||||
$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I include -I "" $(DATA_ASM_SUBDIR)/$*.s)
|
||||
define ASM_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $$<
|
||||
endef
|
||||
$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o, $(src)),$(src))))
|
||||
endif
|
||||
|
||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
|
||||
ifeq ($(NODEP),1)
|
||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
|
||||
else
|
||||
define DATA_ASM_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
||||
$$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@
|
||||
endef
|
||||
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src))))
|
||||
endif
|
||||
|
||||
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||
|
||||
@@ -1434,6 +1434,7 @@
|
||||
|
||||
@ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text,
|
||||
@ 0xFF resets the color to the default for the current OW's gender, and all other values produce black text.
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro textcolor color:req
|
||||
.byte 0xc7
|
||||
.byte \color
|
||||
@@ -1441,6 +1442,7 @@
|
||||
|
||||
@ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom
|
||||
@ of the screen when the Main Menu is opened.
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro loadhelp pointer:req
|
||||
.byte 0xc8
|
||||
.4byte \pointer
|
||||
@@ -1448,21 +1450,25 @@
|
||||
|
||||
@ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of
|
||||
@ the screen when the Main Menu is opened.
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro unloadhelp
|
||||
.byte 0xc9
|
||||
.endm
|
||||
|
||||
@ After using this command, all standard message boxes will use the signpost frame.
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro signmsg
|
||||
.byte 0xca
|
||||
.endm
|
||||
|
||||
@ Ends the effects of signmsg, returning message box frames to normal.
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro normalmsg
|
||||
.byte 0xcb
|
||||
.endm
|
||||
|
||||
@ Compares the value of a hidden variable to a dword.
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro comparehiddenvar a:req, value:req
|
||||
.byte 0xcc
|
||||
.byte \a
|
||||
@@ -1489,6 +1495,7 @@
|
||||
.endm
|
||||
|
||||
@ Sets worldmapflag to 1. This allows the player to Fly to the corresponding map, if that map has a flightspot.
|
||||
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
|
||||
.macro setworldmapflag worldmapflag:req
|
||||
.byte 0xd0
|
||||
.2byte \worldmapflag
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
.macro voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
|
||||
.macro voice_directsound base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte 0
|
||||
_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro voice_directsound_no_resample base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
|
||||
.macro voice_directsound_no_resample base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte 8
|
||||
_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro voice_directsound_alt base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
|
||||
.macro voice_directsound_alt base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte 16
|
||||
_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro _voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release
|
||||
.macro _voice_directsound base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte \base_midi_key
|
||||
.byte 0
|
||||
.if \pan != 0
|
||||
@@ -28,16 +28,22 @@
|
||||
.byte \release
|
||||
.endm
|
||||
|
||||
.macro voice_square_1 sweep, duty_cycle, attack, decay, sustain, release
|
||||
_voice_square_1 1, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.macro voice_square_1 base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_square_1 1, \base_midi_key, \pan, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro voice_square_1_alt sweep, duty_cycle, attack, decay, sustain, release
|
||||
_voice_square_1 9, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.macro voice_square_1_alt base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_square_1 9, \base_midi_key, \pan, \sweep, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro _voice_square_1 type, sweep, duty_cycle, attack, decay, sustain, release
|
||||
.byte \type, 60, 0
|
||||
.macro _voice_square_1 type:req, base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte \type
|
||||
.byte \base_midi_key
|
||||
.if \pan != 0
|
||||
.byte (0x80 | \pan)
|
||||
.else
|
||||
.byte 0
|
||||
.endif
|
||||
.byte \sweep
|
||||
.byte (\duty_cycle & 0x3)
|
||||
.byte 0, 0, 0
|
||||
@@ -47,16 +53,23 @@
|
||||
.byte (\release & 0x7)
|
||||
.endm
|
||||
|
||||
.macro voice_square_2 duty_cycle, attack, decay, sustain, release
|
||||
_voice_square_2 2, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.macro voice_square_2 base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_square_2 2, \base_midi_key, \pan, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro voice_square_2_alt duty_cycle, attack, decay, sustain, release
|
||||
_voice_square_2 10, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.macro voice_square_2_alt base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_square_2 10, \base_midi_key, \pan, \duty_cycle, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro _voice_square_2 type, duty_cycle, attack, decay, sustain, release
|
||||
.byte \type, 60, 0, 0
|
||||
.macro _voice_square_2 type:req, base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte \type
|
||||
.byte \base_midi_key
|
||||
.if \pan != 0
|
||||
.byte (0x80 | \pan)
|
||||
.else
|
||||
.byte 0
|
||||
.endif
|
||||
.byte 0
|
||||
.byte (\duty_cycle & 0x3)
|
||||
.byte 0, 0, 0
|
||||
.byte (\attack & 0x7)
|
||||
@@ -65,16 +78,23 @@
|
||||
.byte (\release & 0x7)
|
||||
.endm
|
||||
|
||||
.macro voice_programmable_wave wave_samples_pointer, attack, decay, sustain, release
|
||||
_voice_programmable_wave 3, \wave_samples_pointer, \attack, \decay, \sustain, \release
|
||||
.macro voice_programmable_wave base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_programmable_wave 3, \base_midi_key, \pan, \wave_samples_pointer, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro voice_programmable_wave_alt wave_samples_pointer, attack, decay, sustain, release
|
||||
_voice_programmable_wave 11, \wave_samples_pointer, \attack, \decay, \sustain, \release
|
||||
.macro voice_programmable_wave_alt base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_programmable_wave 11, \base_midi_key, \pan, \wave_samples_pointer, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro _voice_programmable_wave type, wave_samples_pointer, attack, decay, sustain, release
|
||||
.byte \type, 60, 0, 0
|
||||
.macro _voice_programmable_wave type:req, base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte \type
|
||||
.byte \base_midi_key
|
||||
.if \pan != 0
|
||||
.byte (0x80 | \pan)
|
||||
.else
|
||||
.byte 0
|
||||
.endif
|
||||
.byte 0
|
||||
.4byte \wave_samples_pointer
|
||||
.byte (\attack & 0x7)
|
||||
.byte (\decay & 0x7)
|
||||
@@ -82,16 +102,23 @@
|
||||
.byte (\release & 0x7)
|
||||
.endm
|
||||
|
||||
.macro voice_noise period, attack, decay, sustain, release
|
||||
_voice_noise 4, \period, \attack, \decay, \sustain, \release
|
||||
.macro voice_noise base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_noise 4, \base_midi_key, \pan, \period, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro voice_noise_alt period, attack, decay, sustain, release
|
||||
_voice_noise 12, \period, \attack, \decay, \sustain, \release
|
||||
.macro voice_noise_alt base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req
|
||||
_voice_noise 12, \base_midi_key, \pan, \period, \attack, \decay, \sustain, \release
|
||||
.endm
|
||||
|
||||
.macro _voice_noise type, period, attack, decay, sustain, release
|
||||
.byte \type, 60, 0, 0
|
||||
.macro _voice_noise type:req, base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req
|
||||
.byte \type
|
||||
.byte \base_midi_key
|
||||
.if \pan != 0
|
||||
.byte (0x80 | \pan)
|
||||
.else
|
||||
.byte 0
|
||||
.endif
|
||||
.byte 0
|
||||
.byte (\period & 0x1)
|
||||
.byte 0, 0, 0
|
||||
.byte (\attack & 0x7)
|
||||
@@ -100,25 +127,25 @@
|
||||
.byte (\release & 0x7)
|
||||
.endm
|
||||
|
||||
.macro voice_keysplit voice_group_pointer, keysplit_table_pointer
|
||||
.macro voice_keysplit voice_group_pointer:req, keysplit_table_pointer:req
|
||||
.byte 0x40, 0, 0, 0
|
||||
.4byte \voice_group_pointer
|
||||
.4byte \keysplit_table_pointer
|
||||
.endm
|
||||
|
||||
.macro voice_keysplit_all voice_group_pointer
|
||||
.macro voice_keysplit_all voice_group_pointer:req
|
||||
.byte 0x80, 0, 0, 0
|
||||
.4byte \voice_group_pointer
|
||||
.4byte 0
|
||||
.endm
|
||||
|
||||
.macro cry sample
|
||||
.macro cry sample:req
|
||||
.byte 0x20, 60, 0, 0
|
||||
.4byte \sample
|
||||
.byte 0xff, 0, 0xff, 0
|
||||
.endm
|
||||
|
||||
.macro cry2 sample
|
||||
.macro cry2 sample:req
|
||||
.byte 0x30, 60, 0, 0
|
||||
.4byte \sample
|
||||
.byte 0xff, 0, 0xff, 0
|
||||
|
||||
@@ -109,7 +109,7 @@ _1a0:
|
||||
strh r1, [r0, 0xa] @ SIOMLT_SEND
|
||||
ldr r0, =_data_2f0
|
||||
ldr r1, =gCode
|
||||
svc 0x11 << 16
|
||||
swi 0x11 << 16
|
||||
ldr lr, =gCode
|
||||
bx lr
|
||||
.pool
|
||||
|
||||
@@ -100,12 +100,12 @@ struct CgbChannel
|
||||
u8 le;
|
||||
u8 sw;
|
||||
u32 fr;
|
||||
u32 *wp;
|
||||
u32 *cp;
|
||||
void *tp;
|
||||
void *pp;
|
||||
void *np;
|
||||
u32 d4[2];
|
||||
u32 wp;
|
||||
u32 cp;
|
||||
u32 tp;
|
||||
u32 pp;
|
||||
u32 np;
|
||||
u8 d4[8];
|
||||
};
|
||||
|
||||
struct MusicPlayerTrack;
|
||||
@@ -138,10 +138,10 @@ struct SoundChannel
|
||||
u32 fw;
|
||||
u32 freq;
|
||||
struct WaveData *wav;
|
||||
s8 *cp;
|
||||
u32 cp;
|
||||
struct MusicPlayerTrack *track;
|
||||
void *pp;
|
||||
void *np;
|
||||
u32 pp;
|
||||
u32 np;
|
||||
u32 d4;
|
||||
u16 xpi;
|
||||
u16 xpc;
|
||||
@@ -172,11 +172,11 @@ struct SoundInfo
|
||||
u8 pcmDmaPeriod; // number of V-blanks per PCM DMA
|
||||
u8 maxLines;
|
||||
u8 gap[3];
|
||||
u32 pcmSamplesPerVBlank;
|
||||
u32 pcmFreq;
|
||||
u32 divFreq;
|
||||
s32 pcmSamplesPerVBlank;
|
||||
s32 pcmFreq;
|
||||
s32 divFreq;
|
||||
struct CgbChannel *cgbChans;
|
||||
void (*func)();
|
||||
u32 func;
|
||||
u32 intp;
|
||||
void (*CgbSound)(void);
|
||||
void (*CgbOscOff)(u8);
|
||||
@@ -184,7 +184,7 @@ struct SoundInfo
|
||||
u32 MPlayJumpTable;
|
||||
u32 plynote;
|
||||
u32 ExtVolPit;
|
||||
u32 gap2[4];
|
||||
u8 gap2[16];
|
||||
struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS];
|
||||
s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2];
|
||||
};
|
||||
@@ -248,7 +248,7 @@ struct MusicPlayerTrack
|
||||
u8 key;
|
||||
u8 velocity;
|
||||
u8 runningStatus;
|
||||
s8 keyM;
|
||||
u8 keyM;
|
||||
u8 pitM;
|
||||
s8 keyShift;
|
||||
s8 keyShiftX;
|
||||
@@ -312,7 +312,7 @@ struct MusicPlayerInfo
|
||||
struct MusicPlayerTrack *tracks;
|
||||
struct ToneData *tone;
|
||||
u32 ident;
|
||||
void (*func)();
|
||||
u32 func;
|
||||
u32 intp;
|
||||
};
|
||||
|
||||
@@ -447,7 +447,7 @@ void ply_tune(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_port(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_xcmd(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_endtie(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_note(u8, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_note(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
|
||||
// extended sound command handler functions
|
||||
void ply_xxx(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
|
||||
@@ -296,7 +296,7 @@ u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size)
|
||||
|
||||
u8 TryWriteSector(u8 sectorNum, u8 *data)
|
||||
{
|
||||
if (ProgramFlashSectorAndVerify(sectorNum, data)) // is damaged?
|
||||
if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged?
|
||||
{
|
||||
SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits.
|
||||
return SAVE_STATUS_ERROR;
|
||||
|
||||
@@ -1 +1 @@
|
||||
gUnknown_03006298
|
||||
gFrontierTempParty
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
|
||||
.set OAM, 0x7000000
|
||||
|
||||
.set SOUND_INFO_PTR, IWRAM_END - 0x10
|
||||
.set INTR_CHECK, IWRAM_END - 0x8
|
||||
.set INTR_VECTOR, IWRAM_END - 0x4
|
||||
.set SOUND_INFO_PTR, 0x3007FF0
|
||||
.set INTR_CHECK, 0x3007FF8
|
||||
.set INTR_VECTOR, 0x3007FFC
|
||||
|
||||
.set INTR_FLAG_VBLANK, 1 << 0
|
||||
.set INTR_FLAG_HBLANK, 1 << 1
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
"flag": "0"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 25,
|
||||
"y": 8,
|
||||
"elevation": 3,
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"flag": "0"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 4,
|
||||
"y": 4,
|
||||
"elevation": 3,
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "NewMauville_Inside_EventScript_ItemUltraRope",
|
||||
"script": "NewMauville_Inside_EventScript_ItemUltraBall",
|
||||
"flag": "FLAG_ITEM_NEW_MAUVILLE_ULTRA_BALL"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
"flag": "0"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 39,
|
||||
"y": 4,
|
||||
"elevation": 3,
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
"flag": "0"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 31,
|
||||
"y": 6,
|
||||
"elevation": 3,
|
||||
@@ -481,7 +481,7 @@
|
||||
"flag": "FLAG_HIDE_ROUTE_119_KECLEON_1"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 25,
|
||||
"y": 15,
|
||||
"elevation": 3,
|
||||
|
||||
@@ -403,7 +403,7 @@
|
||||
"flag": "FLAG_ITEM_ROUTE_120_HYPER_POTION"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 12,
|
||||
"y": 16,
|
||||
"elevation": 4,
|
||||
@@ -412,8 +412,8 @@
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "Route120_EventScript_InvisibleBridgeKecleon",
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE"
|
||||
"script": "Route120_EventScript_BridgeKecleon",
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
|
||||
@@ -481,7 +481,7 @@
|
||||
"flag": "0"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_2",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW",
|
||||
"x": 12,
|
||||
"y": 16,
|
||||
"elevation": 3,
|
||||
@@ -491,10 +491,10 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "0x0",
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE"
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_SHADOW"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 20,
|
||||
"y": 11,
|
||||
"elevation": 3,
|
||||
@@ -507,7 +507,7 @@
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_1"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 27,
|
||||
"y": 2,
|
||||
"elevation": 3,
|
||||
@@ -520,7 +520,7 @@
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_2"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 4,
|
||||
"y": 77,
|
||||
"elevation": 3,
|
||||
@@ -533,7 +533,7 @@
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_3"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 7,
|
||||
"y": 51,
|
||||
"elevation": 3,
|
||||
@@ -546,7 +546,7 @@
|
||||
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_5"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 19,
|
||||
"y": 48,
|
||||
"elevation": 3,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.set LOCALID_INVISIBLE_BRIDGE_KECLEON, 30
|
||||
.set LOCALID_BRIDGE_KECLEON, 30
|
||||
.set LOCALID_STEVEN, 31
|
||||
.set LOCALID_VISIBLE_BRIDGE_KECLEON, 36
|
||||
.set LOCALID_BRIDGE_KECLEON_SHADOW, 36 @ They use a second object which is identical to Kecleon but has a reflection palette tag for the bridge shadow
|
||||
|
||||
Route120_MapScripts:: @ 81F53EC
|
||||
map_script MAP_SCRIPT_ON_RESUME, Route120_OnResume
|
||||
@@ -31,8 +31,8 @@ Route120_EventScript_RemoveBridgeKecleon:: @ 81F5449
|
||||
specialvar VAR_RESULT, GetBattleOutcome
|
||||
compare VAR_RESULT, B_OUTCOME_CAUGHT
|
||||
goto_if_ne Common_EventScript_NopReturn
|
||||
removeobject LOCALID_INVISIBLE_BRIDGE_KECLEON
|
||||
removeobject LOCALID_VISIBLE_BRIDGE_KECLEON
|
||||
removeobject LOCALID_BRIDGE_KECLEON
|
||||
removeobject LOCALID_BRIDGE_KECLEON_SHADOW
|
||||
return
|
||||
|
||||
Route120_EventScript_RemoveKecleon:: @ 81F5460
|
||||
@@ -61,7 +61,7 @@ Route120_EventScript_SetBridgeClearMetatiles:: @ 81F54A3
|
||||
return
|
||||
|
||||
Route120_EventScript_SetBridgeKecleonMovement:: @ 81F54C8
|
||||
setobjectmovementtype LOCALID_VISIBLE_BRIDGE_KECLEON, MOVEMENT_TYPE_FACE_RIGHT
|
||||
setobjectmovementtype LOCALID_BRIDGE_KECLEON_SHADOW, MOVEMENT_TYPE_FACE_RIGHT
|
||||
return
|
||||
|
||||
Route120_OnTransition: @ 81F54CD
|
||||
@@ -205,9 +205,9 @@ Route120_EventScript_StevenBattleKecleon:: @ 81F568B
|
||||
delay 20
|
||||
msgbox Route120_Text_StevenUsedDevonScope, MSGBOX_DEFAULT
|
||||
closemessage
|
||||
applymovement LOCALID_INVISIBLE_BRIDGE_KECLEON, Common_Movement_WalkInPlaceFastestRight
|
||||
applymovement LOCALID_BRIDGE_KECLEON, Common_Movement_WalkInPlaceFastestRight
|
||||
waitmovement 0
|
||||
applymovement LOCALID_INVISIBLE_BRIDGE_KECLEON, Movement_KecleonAppears
|
||||
applymovement LOCALID_BRIDGE_KECLEON, Movement_KecleonAppears
|
||||
waitmovement 0
|
||||
waitse
|
||||
playmoncry SPECIES_KECLEON, 2
|
||||
@@ -230,8 +230,8 @@ Route120_EventScript_StevenBattleKecleon:: @ 81F568B
|
||||
|
||||
Route120_EventScript_RemoveBridgeKecleonPostBattle:: @ 81F571C
|
||||
fadescreenswapbuffers FADE_TO_BLACK
|
||||
removeobject LOCALID_INVISIBLE_BRIDGE_KECLEON
|
||||
removeobject LOCALID_VISIBLE_BRIDGE_KECLEON
|
||||
removeobject LOCALID_BRIDGE_KECLEON
|
||||
removeobject LOCALID_BRIDGE_KECLEON_SHADOW
|
||||
fadescreenswapbuffers FADE_FROM_BLACK
|
||||
goto Route120_EventScript_StevenGiveDeconScope
|
||||
end
|
||||
@@ -276,7 +276,7 @@ Route120_Movement_ApproachKecleonWest: @ 81F57B9
|
||||
walk_left
|
||||
step_end
|
||||
|
||||
Route120_EventScript_InvisibleBridgeKecleon:: @ 81F57BC
|
||||
Route120_EventScript_BridgeKecleon:: @ 81F57BC
|
||||
msgbox Kecleon_Text_SomethingUnseeable, MSGBOX_NPC
|
||||
end
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"flag": "0"
|
||||
},
|
||||
{
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_KECLEON",
|
||||
"x": 2,
|
||||
"y": 3,
|
||||
"elevation": 3,
|
||||
|
||||
@@ -2,21 +2,21 @@
|
||||
|
||||
.align 2
|
||||
gMysteryEventScriptCmdTable:: @ 82DED2C
|
||||
.4byte MEScrCmd_nop
|
||||
.4byte MEScrCmd_checkcompat
|
||||
.4byte MEScrCmd_end
|
||||
.4byte MEScrCmd_setmsg
|
||||
.4byte MEScrCmd_setstatus
|
||||
.4byte MEScrCmd_runscript
|
||||
.4byte MEScrCmd_initramscript
|
||||
.4byte MEScrCmd_setenigmaberry
|
||||
.4byte MEScrCmd_giveribbon
|
||||
.4byte MEScrCmd_givenationaldex
|
||||
.4byte MEScrCmd_addrareword
|
||||
.4byte MEScrCmd_setrecordmixinggift
|
||||
.4byte MEScrCmd_givepokemon
|
||||
.4byte MEScrCmd_addtrainer
|
||||
.4byte MEScrCmd_enableresetrtc
|
||||
.4byte MEScrCmd_checksum
|
||||
.4byte MEScrCmd_crc
|
||||
.4byte MEScrCmd_nop @ 0x00
|
||||
.4byte MEScrCmd_checkcompat @ 0x01
|
||||
.4byte MEScrCmd_end @ 0x02
|
||||
.4byte MEScrCmd_setmsg @ 0x03
|
||||
.4byte MEScrCmd_setstatus @ 0x04
|
||||
.4byte MEScrCmd_runscript @ 0x05
|
||||
.4byte MEScrCmd_initramscript @ 0x06
|
||||
.4byte MEScrCmd_setenigmaberry @ 0x07
|
||||
.4byte MEScrCmd_giveribbon @ 0x08
|
||||
.4byte MEScrCmd_givenationaldex @ 0x09
|
||||
.4byte MEScrCmd_addrareword @ 0x0a
|
||||
.4byte MEScrCmd_setrecordmixinggift @ 0x0b
|
||||
.4byte MEScrCmd_givepokemon @ 0x0c
|
||||
.4byte MEScrCmd_addtrainer @ 0x0d
|
||||
.4byte MEScrCmd_enableresetrtc @ 0x0e
|
||||
.4byte MEScrCmd_checksum @ 0x0f
|
||||
.4byte MEScrCmd_crc @ 0x10
|
||||
gMysteryEventScriptCmdTableEnd::
|
||||
|
||||
@@ -1,232 +1,232 @@
|
||||
.align 2
|
||||
gScriptCmdTable:: @ 81DB67C
|
||||
.4byte ScrCmd_nop
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_end
|
||||
.4byte ScrCmd_return
|
||||
.4byte ScrCmd_call
|
||||
.4byte ScrCmd_goto
|
||||
.4byte ScrCmd_goto_if
|
||||
.4byte ScrCmd_call_if
|
||||
.4byte ScrCmd_gotostd
|
||||
.4byte ScrCmd_callstd
|
||||
.4byte ScrCmd_gotostd_if
|
||||
.4byte ScrCmd_callstd_if
|
||||
.4byte ScrCmd_returnram
|
||||
.4byte ScrCmd_killscript
|
||||
.4byte ScrCmd_setmysteryeventstatus
|
||||
.4byte ScrCmd_loadword
|
||||
.4byte ScrCmd_loadbyte
|
||||
.4byte ScrCmd_writebytetoaddr
|
||||
.4byte ScrCmd_loadbytefromaddr
|
||||
.4byte ScrCmd_setptrbyte
|
||||
.4byte ScrCmd_copylocal
|
||||
.4byte ScrCmd_copybyte
|
||||
.4byte ScrCmd_setvar
|
||||
.4byte ScrCmd_addvar
|
||||
.4byte ScrCmd_subvar
|
||||
.4byte ScrCmd_copyvar
|
||||
.4byte ScrCmd_setorcopyvar
|
||||
.4byte ScrCmd_compare_local_to_local
|
||||
.4byte ScrCmd_compare_local_to_value
|
||||
.4byte ScrCmd_compare_local_to_addr
|
||||
.4byte ScrCmd_compare_addr_to_local
|
||||
.4byte ScrCmd_compare_addr_to_value
|
||||
.4byte ScrCmd_compare_addr_to_addr
|
||||
.4byte ScrCmd_compare_var_to_value
|
||||
.4byte ScrCmd_compare_var_to_var
|
||||
.4byte ScrCmd_callnative
|
||||
.4byte ScrCmd_gotonative
|
||||
.4byte ScrCmd_special
|
||||
.4byte ScrCmd_specialvar
|
||||
.4byte ScrCmd_waitstate
|
||||
.4byte ScrCmd_delay
|
||||
.4byte ScrCmd_setflag
|
||||
.4byte ScrCmd_clearflag
|
||||
.4byte ScrCmd_checkflag
|
||||
.4byte ScrCmd_initclock
|
||||
.4byte ScrCmd_dotimebasedevents
|
||||
.4byte ScrCmd_gettime
|
||||
.4byte ScrCmd_playse
|
||||
.4byte ScrCmd_waitse
|
||||
.4byte ScrCmd_playfanfare
|
||||
.4byte ScrCmd_waitfanfare
|
||||
.4byte ScrCmd_playbgm
|
||||
.4byte ScrCmd_savebgm
|
||||
.4byte ScrCmd_fadedefaultbgm
|
||||
.4byte ScrCmd_fadenewbgm
|
||||
.4byte ScrCmd_fadeoutbgm
|
||||
.4byte ScrCmd_fadeinbgm
|
||||
.4byte ScrCmd_warp
|
||||
.4byte ScrCmd_warpsilent
|
||||
.4byte ScrCmd_warpdoor
|
||||
.4byte ScrCmd_warphole
|
||||
.4byte ScrCmd_warpteleport
|
||||
.4byte ScrCmd_setwarp
|
||||
.4byte ScrCmd_setdynamicwarp
|
||||
.4byte ScrCmd_setdivewarp
|
||||
.4byte ScrCmd_setholewarp
|
||||
.4byte ScrCmd_getplayerxy
|
||||
.4byte ScrCmd_getpartysize
|
||||
.4byte ScrCmd_additem
|
||||
.4byte ScrCmd_removeitem
|
||||
.4byte ScrCmd_checkitemspace
|
||||
.4byte ScrCmd_checkitem
|
||||
.4byte ScrCmd_checkitemtype
|
||||
.4byte ScrCmd_addpcitem
|
||||
.4byte ScrCmd_checkpcitem
|
||||
.4byte ScrCmd_adddecoration
|
||||
.4byte ScrCmd_removedecoration
|
||||
.4byte ScrCmd_checkdecor
|
||||
.4byte ScrCmd_checkdecorspace
|
||||
.4byte ScrCmd_applymovement
|
||||
.4byte ScrCmd_applymovement_at
|
||||
.4byte ScrCmd_waitmovement
|
||||
.4byte ScrCmd_waitmovement_at
|
||||
.4byte ScrCmd_removeobject
|
||||
.4byte ScrCmd_removeobject_at
|
||||
.4byte ScrCmd_addobject
|
||||
.4byte ScrCmd_addobject_at
|
||||
.4byte ScrCmd_setobjectxy
|
||||
.4byte ScrCmd_showobject_at
|
||||
.4byte ScrCmd_hideobject_at
|
||||
.4byte ScrCmd_faceplayer
|
||||
.4byte ScrCmd_turnobject
|
||||
.4byte ScrCmd_trainerbattle
|
||||
.4byte ScrCmd_dotrainerbattle
|
||||
.4byte ScrCmd_gotopostbattlescript
|
||||
.4byte ScrCmd_gotobeatenscript
|
||||
.4byte ScrCmd_checktrainerflag
|
||||
.4byte ScrCmd_settrainerflag
|
||||
.4byte ScrCmd_cleartrainerflag
|
||||
.4byte ScrCmd_setobjectxyperm
|
||||
.4byte ScrCmd_copyobjectxytoperm
|
||||
.4byte ScrCmd_setobjectmovementtype
|
||||
.4byte ScrCmd_waitmessage
|
||||
.4byte ScrCmd_message
|
||||
.4byte ScrCmd_closemessage
|
||||
.4byte ScrCmd_lockall
|
||||
.4byte ScrCmd_lock
|
||||
.4byte ScrCmd_releaseall
|
||||
.4byte ScrCmd_release
|
||||
.4byte ScrCmd_waitbuttonpress
|
||||
.4byte ScrCmd_yesnobox
|
||||
.4byte ScrCmd_multichoice
|
||||
.4byte ScrCmd_multichoicedefault
|
||||
.4byte ScrCmd_multichoicegrid
|
||||
.4byte ScrCmd_drawbox
|
||||
.4byte ScrCmd_erasebox
|
||||
.4byte ScrCmd_drawboxtext
|
||||
.4byte ScrCmd_showmonpic
|
||||
.4byte ScrCmd_hidemonpic
|
||||
.4byte ScrCmd_showcontestwinner
|
||||
.4byte ScrCmd_braillemessage
|
||||
.4byte ScrCmd_givemon
|
||||
.4byte ScrCmd_giveegg
|
||||
.4byte ScrCmd_setmonmove
|
||||
.4byte ScrCmd_checkpartymove
|
||||
.4byte ScrCmd_bufferspeciesname
|
||||
.4byte ScrCmd_bufferleadmonspeciesname
|
||||
.4byte ScrCmd_bufferpartymonnick
|
||||
.4byte ScrCmd_bufferitemname
|
||||
.4byte ScrCmd_bufferdecorationname
|
||||
.4byte ScrCmd_buffermovename
|
||||
.4byte ScrCmd_buffernumberstring
|
||||
.4byte ScrCmd_bufferstdstring
|
||||
.4byte ScrCmd_bufferstring
|
||||
.4byte ScrCmd_pokemart
|
||||
.4byte ScrCmd_pokemartdecoration
|
||||
.4byte ScrCmd_pokemartdecoration2
|
||||
.4byte ScrCmd_playslotmachine
|
||||
.4byte ScrCmd_setberrytree
|
||||
.4byte ScrCmd_choosecontestmon
|
||||
.4byte ScrCmd_startcontest
|
||||
.4byte ScrCmd_showcontestresults
|
||||
.4byte ScrCmd_contestlinktransfer
|
||||
.4byte ScrCmd_random
|
||||
.4byte ScrCmd_addmoney
|
||||
.4byte ScrCmd_removemoney
|
||||
.4byte ScrCmd_checkmoney
|
||||
.4byte ScrCmd_showmoneybox
|
||||
.4byte ScrCmd_hidemoneybox
|
||||
.4byte ScrCmd_updatemoneybox
|
||||
.4byte ScrCmd_getpricereduction
|
||||
.4byte ScrCmd_fadescreen
|
||||
.4byte ScrCmd_fadescreenspeed
|
||||
.4byte ScrCmd_setflashradius
|
||||
.4byte ScrCmd_animateflash
|
||||
.4byte ScrCmd_messageautoscroll
|
||||
.4byte ScrCmd_dofieldeffect
|
||||
.4byte ScrCmd_setfieldeffectarg
|
||||
.4byte ScrCmd_waitfieldeffect
|
||||
.4byte ScrCmd_setrespawn
|
||||
.4byte ScrCmd_checkplayergender
|
||||
.4byte ScrCmd_playmoncry
|
||||
.4byte ScrCmd_setmetatile
|
||||
.4byte ScrCmd_resetweather
|
||||
.4byte ScrCmd_setweather
|
||||
.4byte ScrCmd_doweather
|
||||
.4byte ScrCmd_setstepcallback
|
||||
.4byte ScrCmd_setmaplayoutindex
|
||||
.4byte ScrCmd_setobjectpriority
|
||||
.4byte ScrCmd_resetobjectpriority
|
||||
.4byte ScrCmd_createvobject
|
||||
.4byte ScrCmd_turnvobject
|
||||
.4byte ScrCmd_opendoor
|
||||
.4byte ScrCmd_closedoor
|
||||
.4byte ScrCmd_waitdooranim
|
||||
.4byte ScrCmd_setdooropen
|
||||
.4byte ScrCmd_setdoorclosed
|
||||
.4byte ScrCmd_addelevmenuitem
|
||||
.4byte ScrCmd_showelevmenu
|
||||
.4byte ScrCmd_checkcoins
|
||||
.4byte ScrCmd_addcoins
|
||||
.4byte ScrCmd_removecoins
|
||||
.4byte ScrCmd_setwildbattle
|
||||
.4byte ScrCmd_dowildbattle
|
||||
.4byte ScrCmd_setvaddress
|
||||
.4byte ScrCmd_vgoto
|
||||
.4byte ScrCmd_vcall
|
||||
.4byte ScrCmd_vgoto_if
|
||||
.4byte ScrCmd_vcall_if
|
||||
.4byte ScrCmd_vmessage
|
||||
.4byte ScrCmd_vloadword
|
||||
.4byte ScrCmd_vbufferstring
|
||||
.4byte ScrCmd_showcoinsbox
|
||||
.4byte ScrCmd_hidecoinsbox
|
||||
.4byte ScrCmd_updatecoinsbox
|
||||
.4byte ScrCmd_incrementgamestat
|
||||
.4byte ScrCmd_setescapewarp
|
||||
.4byte ScrCmd_waitmoncry
|
||||
.4byte ScrCmd_bufferboxname
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_setmonobedient
|
||||
.4byte ScrCmd_checkmonobedience
|
||||
.4byte ScrCmd_gotoram
|
||||
.4byte ScrCmd_nop1
|
||||
.4byte ScrCmd_warpD1
|
||||
.4byte ScrCmd_setmonmetlocation
|
||||
.4byte ScrCmd_moverotatingtileobjects
|
||||
.4byte ScrCmd_turnrotatingtileobjects
|
||||
.4byte ScrCmd_initrotatingtilepuzzle
|
||||
.4byte ScrCmd_freerotatingtilepuzzle
|
||||
.4byte ScrCmd_warpmossdeepgym
|
||||
.4byte ScrCmd_cmdD8
|
||||
.4byte ScrCmd_cmdD9
|
||||
.4byte ScrCmd_closebraillemessage
|
||||
.4byte ScrCmd_cmdDB
|
||||
.4byte ScrCmd_fadescreenswapbuffers
|
||||
.4byte ScrCmd_buffertrainerclassname
|
||||
.4byte ScrCmd_buffertrainername
|
||||
.4byte ScrCmd_pokenavcall
|
||||
.4byte ScrCmd_warpsootopolislegend
|
||||
.4byte ScrCmd_buffercontesttype
|
||||
.4byte ScrCmd_bufferitemnameplural
|
||||
.4byte ScrCmd_nop @ 0x00
|
||||
.4byte ScrCmd_nop1 @ 0x01
|
||||
.4byte ScrCmd_end @ 0x02
|
||||
.4byte ScrCmd_return @ 0x03
|
||||
.4byte ScrCmd_call @ 0x04
|
||||
.4byte ScrCmd_goto @ 0x05
|
||||
.4byte ScrCmd_goto_if @ 0x06
|
||||
.4byte ScrCmd_call_if @ 0x07
|
||||
.4byte ScrCmd_gotostd @ 0x08
|
||||
.4byte ScrCmd_callstd @ 0x09
|
||||
.4byte ScrCmd_gotostd_if @ 0x0a
|
||||
.4byte ScrCmd_callstd_if @ 0x0b
|
||||
.4byte ScrCmd_returnram @ 0x0c
|
||||
.4byte ScrCmd_killscript @ 0x0d
|
||||
.4byte ScrCmd_setmysteryeventstatus @ 0x0e
|
||||
.4byte ScrCmd_loadword @ 0x0f
|
||||
.4byte ScrCmd_loadbyte @ 0x10
|
||||
.4byte ScrCmd_writebytetoaddr @ 0x11
|
||||
.4byte ScrCmd_loadbytefromaddr @ 0x12
|
||||
.4byte ScrCmd_setptrbyte @ 0x13
|
||||
.4byte ScrCmd_copylocal @ 0x14
|
||||
.4byte ScrCmd_copybyte @ 0x15
|
||||
.4byte ScrCmd_setvar @ 0x16
|
||||
.4byte ScrCmd_addvar @ 0x17
|
||||
.4byte ScrCmd_subvar @ 0x18
|
||||
.4byte ScrCmd_copyvar @ 0x19
|
||||
.4byte ScrCmd_setorcopyvar @ 0x1a
|
||||
.4byte ScrCmd_compare_local_to_local @ 0x1b
|
||||
.4byte ScrCmd_compare_local_to_value @ 0x1c
|
||||
.4byte ScrCmd_compare_local_to_addr @ 0x1d
|
||||
.4byte ScrCmd_compare_addr_to_local @ 0x1e
|
||||
.4byte ScrCmd_compare_addr_to_value @ 0x1f
|
||||
.4byte ScrCmd_compare_addr_to_addr @ 0x20
|
||||
.4byte ScrCmd_compare_var_to_value @ 0x21
|
||||
.4byte ScrCmd_compare_var_to_var @ 0x22
|
||||
.4byte ScrCmd_callnative @ 0x23
|
||||
.4byte ScrCmd_gotonative @ 0x24
|
||||
.4byte ScrCmd_special @ 0x25
|
||||
.4byte ScrCmd_specialvar @ 0x26
|
||||
.4byte ScrCmd_waitstate @ 0x27
|
||||
.4byte ScrCmd_delay @ 0x28
|
||||
.4byte ScrCmd_setflag @ 0x29
|
||||
.4byte ScrCmd_clearflag @ 0x2a
|
||||
.4byte ScrCmd_checkflag @ 0x2b
|
||||
.4byte ScrCmd_initclock @ 0x2c
|
||||
.4byte ScrCmd_dotimebasedevents @ 0x2d
|
||||
.4byte ScrCmd_gettime @ 0x2e
|
||||
.4byte ScrCmd_playse @ 0x2f
|
||||
.4byte ScrCmd_waitse @ 0x30
|
||||
.4byte ScrCmd_playfanfare @ 0x31
|
||||
.4byte ScrCmd_waitfanfare @ 0x32
|
||||
.4byte ScrCmd_playbgm @ 0x33
|
||||
.4byte ScrCmd_savebgm @ 0x34
|
||||
.4byte ScrCmd_fadedefaultbgm @ 0x35
|
||||
.4byte ScrCmd_fadenewbgm @ 0x36
|
||||
.4byte ScrCmd_fadeoutbgm @ 0x37
|
||||
.4byte ScrCmd_fadeinbgm @ 0x38
|
||||
.4byte ScrCmd_warp @ 0x39
|
||||
.4byte ScrCmd_warpsilent @ 0x3a
|
||||
.4byte ScrCmd_warpdoor @ 0x3b
|
||||
.4byte ScrCmd_warphole @ 0x3c
|
||||
.4byte ScrCmd_warpteleport @ 0x3d
|
||||
.4byte ScrCmd_setwarp @ 0x3e
|
||||
.4byte ScrCmd_setdynamicwarp @ 0x3f
|
||||
.4byte ScrCmd_setdivewarp @ 0x40
|
||||
.4byte ScrCmd_setholewarp @ 0x41
|
||||
.4byte ScrCmd_getplayerxy @ 0x42
|
||||
.4byte ScrCmd_getpartysize @ 0x43
|
||||
.4byte ScrCmd_additem @ 0x44
|
||||
.4byte ScrCmd_removeitem @ 0x45
|
||||
.4byte ScrCmd_checkitemspace @ 0x46
|
||||
.4byte ScrCmd_checkitem @ 0x47
|
||||
.4byte ScrCmd_checkitemtype @ 0x48
|
||||
.4byte ScrCmd_addpcitem @ 0x49
|
||||
.4byte ScrCmd_checkpcitem @ 0x4a
|
||||
.4byte ScrCmd_adddecoration @ 0x4b
|
||||
.4byte ScrCmd_removedecoration @ 0x4c
|
||||
.4byte ScrCmd_checkdecor @ 0x4d
|
||||
.4byte ScrCmd_checkdecorspace @ 0x4e
|
||||
.4byte ScrCmd_applymovement @ 0x4f
|
||||
.4byte ScrCmd_applymovement_at @ 0x50
|
||||
.4byte ScrCmd_waitmovement @ 0x51
|
||||
.4byte ScrCmd_waitmovement_at @ 0x52
|
||||
.4byte ScrCmd_removeobject @ 0x53
|
||||
.4byte ScrCmd_removeobject_at @ 0x54
|
||||
.4byte ScrCmd_addobject @ 0x55
|
||||
.4byte ScrCmd_addobject_at @ 0x56
|
||||
.4byte ScrCmd_setobjectxy @ 0x57
|
||||
.4byte ScrCmd_showobject_at @ 0x58
|
||||
.4byte ScrCmd_hideobject_at @ 0x59
|
||||
.4byte ScrCmd_faceplayer @ 0x5a
|
||||
.4byte ScrCmd_turnobject @ 0x5b
|
||||
.4byte ScrCmd_trainerbattle @ 0x5c
|
||||
.4byte ScrCmd_dotrainerbattle @ 0x5d
|
||||
.4byte ScrCmd_gotopostbattlescript @ 0x5e
|
||||
.4byte ScrCmd_gotobeatenscript @ 0x5f
|
||||
.4byte ScrCmd_checktrainerflag @ 0x60
|
||||
.4byte ScrCmd_settrainerflag @ 0x61
|
||||
.4byte ScrCmd_cleartrainerflag @ 0x62
|
||||
.4byte ScrCmd_setobjectxyperm @ 0x63
|
||||
.4byte ScrCmd_copyobjectxytoperm @ 0x64
|
||||
.4byte ScrCmd_setobjectmovementtype @ 0x65
|
||||
.4byte ScrCmd_waitmessage @ 0x66
|
||||
.4byte ScrCmd_message @ 0x67
|
||||
.4byte ScrCmd_closemessage @ 0x68
|
||||
.4byte ScrCmd_lockall @ 0x69
|
||||
.4byte ScrCmd_lock @ 0x6a
|
||||
.4byte ScrCmd_releaseall @ 0x6b
|
||||
.4byte ScrCmd_release @ 0x6c
|
||||
.4byte ScrCmd_waitbuttonpress @ 0x6d
|
||||
.4byte ScrCmd_yesnobox @ 0x6e
|
||||
.4byte ScrCmd_multichoice @ 0x6f
|
||||
.4byte ScrCmd_multichoicedefault @ 0x70
|
||||
.4byte ScrCmd_multichoicegrid @ 0x71
|
||||
.4byte ScrCmd_drawbox @ 0x72
|
||||
.4byte ScrCmd_erasebox @ 0x73
|
||||
.4byte ScrCmd_drawboxtext @ 0x74
|
||||
.4byte ScrCmd_showmonpic @ 0x75
|
||||
.4byte ScrCmd_hidemonpic @ 0x76
|
||||
.4byte ScrCmd_showcontestwinner @ 0x77
|
||||
.4byte ScrCmd_braillemessage @ 0x78
|
||||
.4byte ScrCmd_givemon @ 0x79
|
||||
.4byte ScrCmd_giveegg @ 0x7a
|
||||
.4byte ScrCmd_setmonmove @ 0x7b
|
||||
.4byte ScrCmd_checkpartymove @ 0x7c
|
||||
.4byte ScrCmd_bufferspeciesname @ 0x7d
|
||||
.4byte ScrCmd_bufferleadmonspeciesname @ 0x7e
|
||||
.4byte ScrCmd_bufferpartymonnick @ 0x7f
|
||||
.4byte ScrCmd_bufferitemname @ 0x80
|
||||
.4byte ScrCmd_bufferdecorationname @ 0x81
|
||||
.4byte ScrCmd_buffermovename @ 0x82
|
||||
.4byte ScrCmd_buffernumberstring @ 0x83
|
||||
.4byte ScrCmd_bufferstdstring @ 0x84
|
||||
.4byte ScrCmd_bufferstring @ 0x85
|
||||
.4byte ScrCmd_pokemart @ 0x86
|
||||
.4byte ScrCmd_pokemartdecoration @ 0x87
|
||||
.4byte ScrCmd_pokemartdecoration2 @ 0x88
|
||||
.4byte ScrCmd_playslotmachine @ 0x89
|
||||
.4byte ScrCmd_setberrytree @ 0x8a
|
||||
.4byte ScrCmd_choosecontestmon @ 0x8b
|
||||
.4byte ScrCmd_startcontest @ 0x8c
|
||||
.4byte ScrCmd_showcontestresults @ 0x8d
|
||||
.4byte ScrCmd_contestlinktransfer @ 0x8e
|
||||
.4byte ScrCmd_random @ 0x8f
|
||||
.4byte ScrCmd_addmoney @ 0x90
|
||||
.4byte ScrCmd_removemoney @ 0x91
|
||||
.4byte ScrCmd_checkmoney @ 0x92
|
||||
.4byte ScrCmd_showmoneybox @ 0x93
|
||||
.4byte ScrCmd_hidemoneybox @ 0x94
|
||||
.4byte ScrCmd_updatemoneybox @ 0x95
|
||||
.4byte ScrCmd_getpricereduction @ 0x96
|
||||
.4byte ScrCmd_fadescreen @ 0x97
|
||||
.4byte ScrCmd_fadescreenspeed @ 0x98
|
||||
.4byte ScrCmd_setflashradius @ 0x99
|
||||
.4byte ScrCmd_animateflash @ 0x9a
|
||||
.4byte ScrCmd_messageautoscroll @ 0x9b
|
||||
.4byte ScrCmd_dofieldeffect @ 0x9c
|
||||
.4byte ScrCmd_setfieldeffectarg @ 0x9d
|
||||
.4byte ScrCmd_waitfieldeffect @ 0x9e
|
||||
.4byte ScrCmd_setrespawn @ 0x9f
|
||||
.4byte ScrCmd_checkplayergender @ 0xa0
|
||||
.4byte ScrCmd_playmoncry @ 0xa1
|
||||
.4byte ScrCmd_setmetatile @ 0xa2
|
||||
.4byte ScrCmd_resetweather @ 0xa3
|
||||
.4byte ScrCmd_setweather @ 0xa4
|
||||
.4byte ScrCmd_doweather @ 0xa5
|
||||
.4byte ScrCmd_setstepcallback @ 0xa6
|
||||
.4byte ScrCmd_setmaplayoutindex @ 0xa7
|
||||
.4byte ScrCmd_setobjectpriority @ 0xa8
|
||||
.4byte ScrCmd_resetobjectpriority @ 0xa9
|
||||
.4byte ScrCmd_createvobject @ 0xaa
|
||||
.4byte ScrCmd_turnvobject @ 0xab
|
||||
.4byte ScrCmd_opendoor @ 0xac
|
||||
.4byte ScrCmd_closedoor @ 0xad
|
||||
.4byte ScrCmd_waitdooranim @ 0xae
|
||||
.4byte ScrCmd_setdooropen @ 0xaf
|
||||
.4byte ScrCmd_setdoorclosed @ 0xb0
|
||||
.4byte ScrCmd_addelevmenuitem @ 0xb1
|
||||
.4byte ScrCmd_showelevmenu @ 0xb2
|
||||
.4byte ScrCmd_checkcoins @ 0xb3
|
||||
.4byte ScrCmd_addcoins @ 0xb4
|
||||
.4byte ScrCmd_removecoins @ 0xb5
|
||||
.4byte ScrCmd_setwildbattle @ 0xb6
|
||||
.4byte ScrCmd_dowildbattle @ 0xb7
|
||||
.4byte ScrCmd_setvaddress @ 0xb8
|
||||
.4byte ScrCmd_vgoto @ 0xb9
|
||||
.4byte ScrCmd_vcall @ 0xba
|
||||
.4byte ScrCmd_vgoto_if @ 0xbb
|
||||
.4byte ScrCmd_vcall_if @ 0xbc
|
||||
.4byte ScrCmd_vmessage @ 0xbd
|
||||
.4byte ScrCmd_vloadword @ 0xbe
|
||||
.4byte ScrCmd_vbufferstring @ 0xbf
|
||||
.4byte ScrCmd_showcoinsbox @ 0xc0
|
||||
.4byte ScrCmd_hidecoinsbox @ 0xc1
|
||||
.4byte ScrCmd_updatecoinsbox @ 0xc2
|
||||
.4byte ScrCmd_incrementgamestat @ 0xc3
|
||||
.4byte ScrCmd_setescapewarp @ 0xc4
|
||||
.4byte ScrCmd_waitmoncry @ 0xc5
|
||||
.4byte ScrCmd_bufferboxname @ 0xc6
|
||||
.4byte ScrCmd_nop1 @ 0xc7
|
||||
.4byte ScrCmd_nop1 @ 0xc8
|
||||
.4byte ScrCmd_nop1 @ 0xc9
|
||||
.4byte ScrCmd_nop1 @ 0xca
|
||||
.4byte ScrCmd_nop1 @ 0xcb
|
||||
.4byte ScrCmd_nop1 @ 0xcc
|
||||
.4byte ScrCmd_setmonobedient @ 0xcd
|
||||
.4byte ScrCmd_checkmonobedience @ 0xce
|
||||
.4byte ScrCmd_gotoram @ 0xcf
|
||||
.4byte ScrCmd_nop1 @ 0xd0
|
||||
.4byte ScrCmd_warpD1 @ 0xd1
|
||||
.4byte ScrCmd_setmonmetlocation @ 0xd2
|
||||
.4byte ScrCmd_moverotatingtileobjects @ 0xd3
|
||||
.4byte ScrCmd_turnrotatingtileobjects @ 0xd4
|
||||
.4byte ScrCmd_initrotatingtilepuzzle @ 0xd5
|
||||
.4byte ScrCmd_freerotatingtilepuzzle @ 0xd6
|
||||
.4byte ScrCmd_warpmossdeepgym @ 0xd7
|
||||
.4byte ScrCmd_cmdD8 @ 0xd8
|
||||
.4byte ScrCmd_cmdD9 @ 0xd9
|
||||
.4byte ScrCmd_closebraillemessage @ 0xda
|
||||
.4byte ScrCmd_cmdDB @ 0xdb
|
||||
.4byte ScrCmd_fadescreenswapbuffers @ 0xdc
|
||||
.4byte ScrCmd_buffertrainerclassname @ 0xdd
|
||||
.4byte ScrCmd_buffertrainername @ 0xde
|
||||
.4byte ScrCmd_pokenavcall @ 0xdf
|
||||
.4byte ScrCmd_warpsootopolislegend @ 0xe0
|
||||
.4byte ScrCmd_buffercontesttype @ 0xe1
|
||||
.4byte ScrCmd_bufferitemnameplural @ 0xe2
|
||||
|
||||
gScriptCmdTableEnd:: @ 81DBA08
|
||||
.4byte ScrCmd_nop
|
||||
|
||||
@@ -398,7 +398,7 @@ MeteorFalls_B1F_2R_EventScript_ItemTM02:: @ 82911DF
|
||||
finditem ITEM_TM02
|
||||
end
|
||||
|
||||
NewMauville_Inside_EventScript_ItemUltraRope:: @ 82911EC
|
||||
NewMauville_Inside_EventScript_ItemUltraBall:: @ 82911EC
|
||||
finditem ITEM_ULTRA_BALL
|
||||
end
|
||||
|
||||
|
||||
@@ -1,43 +1,66 @@
|
||||
EventScript_ResetAllBerries:: @ 827149D
|
||||
@ Route 102
|
||||
setberrytree 2, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 1, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 104
|
||||
setberrytree 11, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 13, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 4, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 76, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 8, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 10, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 116
|
||||
setberrytree 25, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 26, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 66, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 67, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 115
|
||||
setberrytree 69, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 70, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 71, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 55, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 56, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 103
|
||||
setberrytree 5, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 6, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 7, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 110
|
||||
setberrytree 16, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 17, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 18, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 117
|
||||
setberrytree 29, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 28, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 27, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 112
|
||||
setberrytree 24, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 23, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 22, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 21, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 111
|
||||
setberrytree 19, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 20, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 80, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 81, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 114
|
||||
setberrytree 77, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 78, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 68, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 118
|
||||
setberrytree 31, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 33, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 119
|
||||
setberrytree 34, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 35, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 36, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
|
||||
@@ -45,6 +68,8 @@ EventScript_ResetAllBerries:: @ 827149D
|
||||
setberrytree 84, ITEM_TO_BERRY(ITEM_HONDEW_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 85, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 86, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 120
|
||||
setberrytree 37, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 38, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 39, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
@@ -55,12 +80,16 @@ EventScript_ResetAllBerries:: @ 827149D
|
||||
setberrytree 45, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 44, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 43, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 121
|
||||
setberrytree 47, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 48, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 49, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 50, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 52, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 53, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Route 123
|
||||
setberrytree 62, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 64, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 58, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
|
||||
@@ -78,6 +107,8 @@ EventScript_ResetAllBerries:: @ 827149D
|
||||
setberrytree 87, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 88, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
|
||||
setberrytree 89, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
|
||||
|
||||
@ Mirage Island
|
||||
setberrytree 82, ITEM_TO_BERRY(ITEM_LIECHI_BERRY), BERRY_STAGE_BERRIES
|
||||
return
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@ SecretBase_EventScript_PutAwayDecorationLoop:: @ 8275D39
|
||||
compare VAR_0x8005, 0
|
||||
goto_if_eq SecretBase_EventScript_PutAwayDecorationLoop
|
||||
removeobject VAR_0x8006
|
||||
setflag VAR_0x8005 @ UB: GF likely meant setvar here; setflag 0x8005 is out of bounds
|
||||
setflag VAR_0x8005 @ UB: VAR_0x8005 is set to a flag by PutAwayDecorationIteration, but ScrCmd_setflag doesn't use VarGet
|
||||
goto SecretBase_EventScript_PutAwayDecorationLoop
|
||||
end
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Common_EventScript_SetGymTrainers:: @ 8271F43
|
||||
switch VAR_0x8008
|
||||
case 1, RusboroCity_Gym_SetGymTrainers
|
||||
case 1, RustboroCity_Gym_SetGymTrainers
|
||||
case 2, DewfordTown_Gym_SetGymTrainers
|
||||
case 3, MauvilleCity_Gym_SetGymTrainers
|
||||
case 4, LavaridgeTown_Gym_SetGymTrainers
|
||||
@@ -10,7 +10,7 @@ Common_EventScript_SetGymTrainers:: @ 8271F43
|
||||
case 8, SootopolisCity_Gym_SetGymTrainers
|
||||
end
|
||||
|
||||
RusboroCity_Gym_SetGymTrainers:: @ 8271FA1
|
||||
RustboroCity_Gym_SetGymTrainers:: @ 8271FA1
|
||||
settrainerflag TRAINER_JOSH
|
||||
settrainerflag TRAINER_TOMMY
|
||||
settrainerflag TRAINER_MARC
|
||||
|
||||
@@ -42,6 +42,26 @@ And edit `AgbMain`:
|
||||
...
|
||||
```
|
||||
|
||||
This restores the code of Ruby/Sapphire.
|
||||
|
||||
**Alternate Fix:** Edit the following function in [src/title_screen.c](https://github.com/pret/pokeemerald/blob/master/src/title_screen.c):
|
||||
|
||||
```diff
|
||||
void CB2_InitTitleScreen(void)
|
||||
{
|
||||
switch (gMain.state)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
SetVBlankCallback(NULL);
|
||||
+ StartTimer1();
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
...
|
||||
```
|
||||
This matches with the code of FR/LG and does what GF originally wanted to do.
|
||||
|
||||
## Scrolling through items in the bag causes the image to flicker
|
||||
|
||||
**Fix:** Add the following function to [src/item_menu_icons.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu_icons.c):
|
||||
|
||||
118
gflib/bg.c
118
gflib/bg.c
@@ -34,8 +34,8 @@ struct BgConfig2
|
||||
u32 unk_3:18;
|
||||
|
||||
void* tilemap;
|
||||
s32 bg_x; // Maybe unsigned, but game treats it as if it is signed a LOT.
|
||||
s32 bg_y; // Same for this variable.
|
||||
s32 bg_x;
|
||||
s32 bg_y;
|
||||
};
|
||||
|
||||
static struct BgControl sGpuBgConfigs;
|
||||
@@ -621,15 +621,17 @@ s32 GetBgX(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg))
|
||||
return -1;
|
||||
if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
return -1;
|
||||
return sGpuBgConfigs2[bg].bg_x;
|
||||
else
|
||||
return sGpuBgConfigs2[bg].bg_x;
|
||||
}
|
||||
|
||||
s32 ChangeBgY(u8 bg, s32 value, u8 op)
|
||||
{
|
||||
u8 mode;
|
||||
u16 temp1, temp2;
|
||||
u16 temp1;
|
||||
u16 temp2;
|
||||
|
||||
if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
{
|
||||
@@ -698,7 +700,8 @@ s32 ChangeBgY(u8 bg, s32 value, u8 op)
|
||||
s32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op)
|
||||
{
|
||||
u8 mode;
|
||||
u16 temp1, temp2;
|
||||
u16 temp1;
|
||||
u16 temp2;
|
||||
|
||||
if (IsInvalidBg32(bg) || !GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
{
|
||||
@@ -769,9 +772,10 @@ s32 GetBgY(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg))
|
||||
return -1;
|
||||
if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
return -1;
|
||||
return sGpuBgConfigs2[bg].bg_y;
|
||||
else
|
||||
return sGpuBgConfigs2[bg].bg_y;
|
||||
}
|
||||
|
||||
void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle)
|
||||
@@ -870,77 +874,81 @@ void* GetBgTilemapBuffer(u8 bg)
|
||||
{
|
||||
if (IsInvalidBg32(bg))
|
||||
return NULL;
|
||||
if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
else if (!GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE))
|
||||
return NULL;
|
||||
return sGpuBgConfigs2[bg].tilemap;
|
||||
else
|
||||
return sGpuBgConfigs2[bg].tilemap;
|
||||
}
|
||||
|
||||
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset)
|
||||
{
|
||||
if (IsInvalidBg32(bg) || IsTileMapOutsideWram(bg))
|
||||
return;
|
||||
if (mode != 0)
|
||||
CpuCopy16(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)), mode);
|
||||
else
|
||||
LZ77UnCompWram(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)));
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
if (mode != 0)
|
||||
CpuCopy16(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)), mode);
|
||||
else
|
||||
LZ77UnCompWram(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)));
|
||||
}
|
||||
}
|
||||
|
||||
void CopyBgTilemapBufferToVram(u8 bg)
|
||||
{
|
||||
u16 sizeToLoad;
|
||||
|
||||
if (IsInvalidBg32(bg) || IsTileMapOutsideWram(bg))
|
||||
return;
|
||||
|
||||
switch (GetBgType(bg))
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
case 0:
|
||||
sizeToLoad = GetBgMetricTextMode(bg, 0) * 0x800;
|
||||
break;
|
||||
case 1:
|
||||
sizeToLoad = GetBgMetricAffineMode(bg, 0) * 0x100;
|
||||
break;
|
||||
default:
|
||||
sizeToLoad = 0;
|
||||
break;
|
||||
switch (GetBgType(bg))
|
||||
{
|
||||
case 0:
|
||||
sizeToLoad = GetBgMetricTextMode(bg, 0) * 0x800;
|
||||
break;
|
||||
case 1:
|
||||
sizeToLoad = GetBgMetricAffineMode(bg, 0) * 0x100;
|
||||
break;
|
||||
default:
|
||||
sizeToLoad = 0;
|
||||
break;
|
||||
}
|
||||
LoadBgVram(bg, sGpuBgConfigs2[bg].tilemap, sizeToLoad, 0, 2);
|
||||
}
|
||||
LoadBgVram(bg, sGpuBgConfigs2[bg].tilemap, sizeToLoad, 0, 2);
|
||||
}
|
||||
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height)
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
|
||||
{
|
||||
u16 destX16, destY16;
|
||||
u16 destX16;
|
||||
u16 destY16;
|
||||
u16 mode;
|
||||
|
||||
if (IsInvalidBg32(bg) || IsTileMapOutsideWram(bg))
|
||||
return;
|
||||
switch (GetBgType(bg))
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
const u16 *srcCopy = src;
|
||||
for (destY16 = destY; destY16 < (destY + height); destY16++)
|
||||
switch (GetBgType(bg))
|
||||
{
|
||||
for (destX16 = destX; destX16 < (destX + width); destX16++)
|
||||
{
|
||||
((u16 *)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
const u8 *srcCopy = src;
|
||||
mode = GetBgMetricAffineMode(bg, 0x1);
|
||||
for (destY16 = destY; destY16 < (destY + height); destY16++)
|
||||
case 0:
|
||||
{
|
||||
for (destX16 = destX; destX16 < (destX + width); destX16++)
|
||||
const u16 * srcCopy = src;
|
||||
for (destY16 = destY; destY16 < (destY + height); destY16++)
|
||||
{
|
||||
((u8 *)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
|
||||
for (destX16 = destX; destX16 < (destX + width); destX16++)
|
||||
{
|
||||
((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
const u8 * srcCopy = src;
|
||||
mode = GetBgMetricAffineMode(bg, 0x1);
|
||||
for (destY16 = destY; destY16 < (destY + height); destY16++)
|
||||
{
|
||||
for (destX16 = destX; destX16 < (destX + width); destX16++)
|
||||
{
|
||||
((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 hei
|
||||
s32 yEnd;
|
||||
s32 multiplierY;
|
||||
s32 loopX, loopY;
|
||||
s32 toOrr1, toOrr2;
|
||||
u8 toOrr1, toOrr2;
|
||||
|
||||
xEnd = x + width;
|
||||
if (xEnd > surface->width)
|
||||
@@ -87,8 +87,8 @@ void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 hei
|
||||
yEnd = surface->height;
|
||||
|
||||
multiplierY = (surface->width + (surface->width & 7)) >> 3;
|
||||
toOrr1 = (u32)(fillValue << 0x1C) >> 0x18;
|
||||
toOrr2 = (fillValue & 0xF);
|
||||
toOrr1 = fillValue << 4;
|
||||
toOrr2 = fillValue & 0xF;
|
||||
|
||||
for (loopY = y; loopY < yEnd; loopY++)
|
||||
{
|
||||
|
||||
177
gflib/text.c
177
gflib/text.c
@@ -21,7 +21,7 @@ static u16 gLastTextFgColor;
|
||||
static u16 gLastTextShadowColor;
|
||||
|
||||
const struct FontInfo *gFonts;
|
||||
bool8 gUnknown_03002F84;
|
||||
u8 gUnknown_03002F84;
|
||||
struct Struct_03002F90 gUnknown_03002F90;
|
||||
TextFlags gTextFlags;
|
||||
|
||||
@@ -154,7 +154,7 @@ u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8
|
||||
printerTemplate.currentY = y;
|
||||
printerTemplate.letterSpacing = gFonts[fontId].letterSpacing;
|
||||
printerTemplate.lineSpacing = gFonts[fontId].lineSpacing;
|
||||
printerTemplate.style = gFonts[fontId].style;
|
||||
printerTemplate.unk = gFonts[fontId].unk;
|
||||
printerTemplate.fgColor = gFonts[fontId].fgColor;
|
||||
printerTemplate.bgColor = gFonts[fontId].bgColor;
|
||||
printerTemplate.shadowColor = gFonts[fontId].shadowColor;
|
||||
@@ -205,7 +205,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, voi
|
||||
CopyWindowToVram(gTempTextPrinter.printerTemplate.windowId, 2);
|
||||
gTextPrinters[printerTemplate->windowId].active = 0;
|
||||
}
|
||||
gUnknown_03002F84 = FALSE;
|
||||
gUnknown_03002F84 = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ void RunTextPrinters(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!gUnknown_03002F84)
|
||||
if (gUnknown_03002F84 == 0)
|
||||
{
|
||||
for (i = 0; i < NUM_TEXT_PRINTERS; ++i)
|
||||
{
|
||||
@@ -451,51 +451,46 @@ u8 GetLastTextColor(u8 colorType)
|
||||
{
|
||||
switch (colorType)
|
||||
{
|
||||
case COLOR_FOREGROUND:
|
||||
case 0:
|
||||
return gLastTextFgColor;
|
||||
case COLOR_BACKGROUND:
|
||||
case 2:
|
||||
return gLastTextBgColor;
|
||||
case COLOR_SHADOW:
|
||||
case 1:
|
||||
return gLastTextShadowColor;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#define GLYPH_COPY(fromY_, toY_, fromX_, toX_, unk) \
|
||||
{ \
|
||||
u32 i, j, *ptr, toY, fromX, toX, r5, bits; \
|
||||
u8 *dst; \
|
||||
j = fromX_; \
|
||||
i = fromY_; \
|
||||
ptr = unk; \
|
||||
toX = toX_; \
|
||||
toY = toY_; \
|
||||
fromX = fromX_; \
|
||||
\
|
||||
for (; i < toY; i++) \
|
||||
{ \
|
||||
asm("":::"sl"); /* NONMATCHING */ \
|
||||
r5 = *(ptr++); \
|
||||
for (j = fromX; j < toX; j++) \
|
||||
{ \
|
||||
const u32 toOrr = r5 & 0xF; \
|
||||
if (toOrr) \
|
||||
{ \
|
||||
dst = windowTiles + ((j / 8) * 32) + ((j % 8) / 2) + ((i / 8) * widthOffset) + ((i % 8) * 4); \
|
||||
bits = ((j & 1) * 4); \
|
||||
*dst = (toOrr << bits) | (*dst & (0xF0 >> bits)); \
|
||||
} \
|
||||
r5 >>= 4; \
|
||||
} \
|
||||
} \
|
||||
inline static void GLYPH_COPY(u8 *windowTiles, u32 widthOffset, u32 j, u32 i, u32 *ptr, s32 width, s32 height)
|
||||
{
|
||||
u32 xAdd, yAdd, r5, bits, toOrr, dummyX;
|
||||
u8 *dst;
|
||||
|
||||
xAdd = j + width;
|
||||
yAdd = i + height;
|
||||
dummyX = j;
|
||||
for (; i < yAdd; i++)
|
||||
{
|
||||
r5 = *ptr++;
|
||||
for (j = dummyX; j < xAdd; j++)
|
||||
{
|
||||
if ((toOrr = r5 & 0xF))
|
||||
{
|
||||
dst = windowTiles + ((j / 8) * 32) + ((j % 8) / 2) + ((i / 8) * widthOffset) + ((i % 8) * 4);
|
||||
bits = ((j & 1) * 4);
|
||||
*dst = (toOrr << bits) | (*dst & (0xF0 >> bits));
|
||||
}
|
||||
r5 >>= 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CopyGlyphToWindow(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct Window *win;
|
||||
struct WindowTemplate *winTempl;
|
||||
struct Struct_03002F90 *unkStruct;
|
||||
u32 *unkStruct;
|
||||
u32 currX, currY, widthOffset;
|
||||
s32 r4, r0;
|
||||
u8 *windowTiles;
|
||||
@@ -503,17 +498,15 @@ void CopyGlyphToWindow(struct TextPrinter *textPrinter)
|
||||
win = &gWindows[textPrinter->printerTemplate.windowId];
|
||||
winTempl = &win->window;
|
||||
|
||||
r4 = (winTempl->width * 8) - textPrinter->printerTemplate.currentX;
|
||||
if (r4 > gUnknown_03002F90.width)
|
||||
if ((r4 = (winTempl->width * 8) - textPrinter->printerTemplate.currentX) > gUnknown_03002F90.width)
|
||||
r4 = gUnknown_03002F90.width;
|
||||
|
||||
r0 = (winTempl->height * 8) - textPrinter->printerTemplate.currentY;
|
||||
if (r0 > gUnknown_03002F90.height)
|
||||
if ((r0 = (winTempl->height * 8) - textPrinter->printerTemplate.currentY) > gUnknown_03002F90.height)
|
||||
r0 = gUnknown_03002F90.height;
|
||||
|
||||
currX = textPrinter->printerTemplate.currentX;
|
||||
currY = textPrinter->printerTemplate.currentY;
|
||||
unkStruct = &gUnknown_03002F90;
|
||||
unkStruct = (u32 *)&gUnknown_03002F90.unk0;
|
||||
windowTiles = win->tileData;
|
||||
widthOffset = winTempl->width * 32;
|
||||
|
||||
@@ -521,45 +514,31 @@ void CopyGlyphToWindow(struct TextPrinter *textPrinter)
|
||||
{
|
||||
if (r0 < 9)
|
||||
{
|
||||
GLYPH_COPY(currY, currY + r0, currX, currX + r4, unkStruct->unk0);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, r4, r0);
|
||||
}
|
||||
else
|
||||
{
|
||||
u32 temp;
|
||||
GLYPH_COPY(currY, currY + 8, currX, currX + r4, unkStruct->unk0);
|
||||
|
||||
temp = currY + 8;
|
||||
GLYPH_COPY(temp, (temp - 8) + r0, currX, currX + r4, unkStruct->unk40);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, r4, 8);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX, currY + 8, unkStruct + 16, r4, r0 - 8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
u32 temp;
|
||||
if (r0 < 9)
|
||||
{
|
||||
GLYPH_COPY(currY, currY + r0, currX, currX + 8, unkStruct->unk0);
|
||||
|
||||
temp = currX + 8;
|
||||
GLYPH_COPY(currY, currY + r0, temp, (temp - 8) + r4, unkStruct->unk20);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, 8, r0);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX + 8, currY, unkStruct + 8, r4 - 8, r0);
|
||||
}
|
||||
else
|
||||
{
|
||||
GLYPH_COPY(currY, currY + 8, currX, currX + 8, unkStruct->unk0);
|
||||
|
||||
temp = currX + 8;
|
||||
GLYPH_COPY(currY, currY + 8, temp, temp - 8 + r4, unkStruct->unk20);
|
||||
|
||||
temp = currY + 8;
|
||||
GLYPH_COPY(temp, temp - 8 + r0, currX, currX + 8, unkStruct->unk40);
|
||||
{
|
||||
u32 tempX, tempY;
|
||||
tempX = currX + 8;
|
||||
tempY = currY + 8;
|
||||
GLYPH_COPY(tempY, tempY - 8 + r0, tempX, tempX - 8 + r4, unkStruct->unk60);
|
||||
}
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX, currY, unkStruct, 8, 8);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX + 8, currY, unkStruct + 8, r4 - 8, 8);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX, currY + 8, unkStruct + 16, 8, r0 - 8);
|
||||
GLYPH_COPY(windowTiles, widthOffset, currX + 8, currY + 8, unkStruct + 24, r4 - 8, r0 - 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
|
||||
{
|
||||
struct Window *window;
|
||||
@@ -591,7 +570,7 @@ u16 Font0Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 0;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -603,7 +582,7 @@ u16 Font1Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 1;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -615,7 +594,7 @@ u16 Font2Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 2;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -627,7 +606,7 @@ u16 Font3Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 3;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -639,7 +618,7 @@ u16 Font4Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 4;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -651,7 +630,7 @@ u16 Font5Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 5;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -663,7 +642,7 @@ u16 Font7Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 7;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -675,7 +654,7 @@ u16 Font8Func(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (!subStruct->hasGlyphIdBeenSet)
|
||||
if (subStruct->hasGlyphIdBeenSet == FALSE)
|
||||
{
|
||||
subStruct->glyphId = 8;
|
||||
subStruct->hasGlyphIdBeenSet = TRUE;
|
||||
@@ -687,7 +666,7 @@ void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter)
|
||||
{
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
|
||||
if (gTextFlags.autoScroll == TRUE)
|
||||
if (gTextFlags.autoScroll == 1)
|
||||
{
|
||||
subStruct->autoScrollDelay = 0;
|
||||
}
|
||||
@@ -703,7 +682,7 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter)
|
||||
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
|
||||
const u8 *arrowTiles;
|
||||
|
||||
if (!gTextFlags.autoScroll)
|
||||
if (gTextFlags.autoScroll == 0)
|
||||
{
|
||||
if (subStruct->downArrowDelay != 0)
|
||||
{
|
||||
@@ -779,7 +758,7 @@ bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter)
|
||||
bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
|
||||
{
|
||||
bool8 result = FALSE;
|
||||
if (gTextFlags.autoScroll)
|
||||
if (gTextFlags.autoScroll != 0)
|
||||
{
|
||||
result = TextPrinterWaitAutoMode(textPrinter);
|
||||
}
|
||||
@@ -798,14 +777,17 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
|
||||
bool16 TextPrinterWait(struct TextPrinter *textPrinter)
|
||||
{
|
||||
bool16 result = FALSE;
|
||||
if (gTextFlags.autoScroll)
|
||||
if (gTextFlags.autoScroll != 0)
|
||||
{
|
||||
result = TextPrinterWaitAutoMode(textPrinter);
|
||||
}
|
||||
else if (JOY_NEW(A_BUTTON | B_BUTTON))
|
||||
else
|
||||
{
|
||||
result = TRUE;
|
||||
PlaySE(SE_SELECT);
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON))
|
||||
{
|
||||
result = TRUE;
|
||||
PlaySE(SE_SELECT);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -821,7 +803,7 @@ void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *c
|
||||
else
|
||||
{
|
||||
FillWindowPixelRect(windowId, (bgColor << 4) | bgColor, x, y, 0x8, 0x10);
|
||||
if (!drawArrow)
|
||||
if (drawArrow == 0)
|
||||
{
|
||||
switch (gTextFlags.useAlternateDownArrow)
|
||||
{
|
||||
@@ -1013,10 +995,10 @@ u16 RenderText(struct TextPrinter *textPrinter)
|
||||
textPrinter->minLetterSpacing = *textPrinter->printerTemplate.currentChar++;
|
||||
return 2;
|
||||
case EXT_CTRL_CODE_JPN:
|
||||
textPrinter->japanese = TRUE;
|
||||
textPrinter->japanese = 1;
|
||||
return 2;
|
||||
case EXT_CTRL_CODE_ENG:
|
||||
textPrinter->japanese = FALSE;
|
||||
textPrinter->japanese = 0;
|
||||
return 2;
|
||||
}
|
||||
break;
|
||||
@@ -1077,10 +1059,13 @@ u16 RenderText(struct TextPrinter *textPrinter)
|
||||
textPrinter->printerTemplate.currentX += width;
|
||||
}
|
||||
}
|
||||
else if (textPrinter->japanese)
|
||||
textPrinter->printerTemplate.currentX += (gUnknown_03002F90.width + textPrinter->printerTemplate.letterSpacing);
|
||||
else
|
||||
textPrinter->printerTemplate.currentX += gUnknown_03002F90.width;
|
||||
{
|
||||
if (textPrinter->japanese)
|
||||
textPrinter->printerTemplate.currentX += (gUnknown_03002F90.width + textPrinter->printerTemplate.letterSpacing);
|
||||
else
|
||||
textPrinter->printerTemplate.currentX += gUnknown_03002F90.width;
|
||||
}
|
||||
return 0;
|
||||
case 1:
|
||||
if (TextPrinterWait(textPrinter))
|
||||
@@ -1566,7 +1551,7 @@ void SetDefaultFontsPointer(void)
|
||||
|
||||
u8 GetFontAttribute(u8 fontId, u8 attributeId)
|
||||
{
|
||||
u8 result = 0;
|
||||
int result = 0;
|
||||
switch (attributeId)
|
||||
{
|
||||
case FONTATTR_MAX_LETTER_WIDTH:
|
||||
@@ -1581,8 +1566,8 @@ u8 GetFontAttribute(u8 fontId, u8 attributeId)
|
||||
case FONTATTR_LINE_SPACING:
|
||||
result = gFontInfos[fontId].lineSpacing;
|
||||
break;
|
||||
case FONTATTR_STYLE:
|
||||
result = gFontInfos[fontId].style;
|
||||
case FONTATTR_UNKNOWN:
|
||||
result = gFontInfos[fontId].unk;
|
||||
break;
|
||||
case FONTATTR_COLOR_FOREGROUND:
|
||||
result = gFontInfos[fontId].fgColor;
|
||||
@@ -1612,7 +1597,7 @@ void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese)
|
||||
DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
|
||||
DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
|
||||
gUnknown_03002F90.width = 8; // gGlyphWidth
|
||||
gUnknown_03002F90.height = 12; // gGlyphHeight
|
||||
gUnknown_03002F90.height = 12; // gGlyphHeight
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1655,7 +1640,7 @@ void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese)
|
||||
DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
|
||||
DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
|
||||
gUnknown_03002F90.width = 8; // gGlyphWidth
|
||||
gUnknown_03002F90.height = 15; // gGlyphHeight
|
||||
gUnknown_03002F90.height = 15; // gGlyphHeight
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1697,7 +1682,7 @@ void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese)
|
||||
DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
|
||||
DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
|
||||
gUnknown_03002F90.width = 8; // gGlyphWidth
|
||||
gUnknown_03002F90.height = 12; // gGlyphHeight
|
||||
gUnknown_03002F90.height = 12; // gGlyphHeight
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1737,10 +1722,10 @@ void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese)
|
||||
{
|
||||
glyphs = gFont2JapaneseGlyphs + (0x100 * (glyphId >> 0x3)) + (0x10 * (glyphId & 0x7));
|
||||
DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
|
||||
DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20);
|
||||
DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40);
|
||||
DecompressGlyphTile(glyphs + 0x88, gUnknown_03002F90.unk60);
|
||||
gUnknown_03002F90.width = gFont2JapaneseGlyphWidths[glyphId]; // gGlyphWidth
|
||||
DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20); // gUnknown_03002F90 + 0x40
|
||||
DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x20
|
||||
DecompressGlyphTile(glyphs + 0x88, gUnknown_03002F90.unk60); // gUnknown_03002F90 + 0x60
|
||||
gUnknown_03002F90.width = gFont2JapaneseGlyphWidths[glyphId]; // gGlyphWidth
|
||||
gUnknown_03002F90.height = 14; // gGlyphHeight
|
||||
}
|
||||
else
|
||||
@@ -1784,7 +1769,7 @@ void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese)
|
||||
DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
|
||||
DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
|
||||
gUnknown_03002F90.width = 8; // gGlyphWidth
|
||||
gUnknown_03002F90.height = 15; // gGlyphHeight
|
||||
gUnknown_03002F90.height = 15; // gGlyphHeight
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
17
gflib/text.h
17
gflib/text.h
@@ -269,20 +269,13 @@
|
||||
|
||||
#define TEXT_SPEED_FF 0xFF
|
||||
|
||||
enum
|
||||
{
|
||||
COLOR_FOREGROUND,
|
||||
COLOR_SHADOW,
|
||||
COLOR_BACKGROUND
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
FONTATTR_MAX_LETTER_WIDTH,
|
||||
FONTATTR_MAX_LETTER_HEIGHT,
|
||||
FONTATTR_LETTER_SPACING,
|
||||
FONTATTR_LINE_SPACING,
|
||||
FONTATTR_STYLE,
|
||||
FONTATTR_UNKNOWN, // dunno what this is yet
|
||||
FONTATTR_COLOR_FOREGROUND,
|
||||
FONTATTR_COLOR_BACKGROUND,
|
||||
FONTATTR_COLOR_SHADOW
|
||||
@@ -310,7 +303,7 @@ struct TextPrinterTemplate
|
||||
u8 currentY;
|
||||
u8 letterSpacing;
|
||||
u8 lineSpacing;
|
||||
u8 style:4; // 0xC
|
||||
u8 unk:4; // 0xC
|
||||
u8 fgColor:4;
|
||||
u8 bgColor:4;
|
||||
u8 shadowColor:4;
|
||||
@@ -329,7 +322,7 @@ struct TextPrinter
|
||||
u8 delayCounter;
|
||||
u8 scrollDistance;
|
||||
u8 minLetterSpacing; // 0x20
|
||||
bool8 japanese;
|
||||
u8 japanese;
|
||||
};
|
||||
|
||||
struct FontInfo
|
||||
@@ -339,7 +332,7 @@ struct FontInfo
|
||||
u8 maxLetterHeight;
|
||||
u8 letterSpacing;
|
||||
u8 lineSpacing;
|
||||
u8 style:4; //unused
|
||||
u8 unk:4;
|
||||
u8 fgColor:4;
|
||||
u8 bgColor:4;
|
||||
u8 shadowColor:4;
|
||||
@@ -379,7 +372,7 @@ struct Struct_03002F90
|
||||
|
||||
extern TextFlags gTextFlags;
|
||||
|
||||
extern bool8 gUnknown_03002F84;
|
||||
extern u8 gUnknown_03002F84;
|
||||
extern struct Struct_03002F90 gUnknown_03002F90;
|
||||
|
||||
void SetFontsPointer(const struct FontInfo *fonts);
|
||||
|
||||
@@ -30,18 +30,21 @@ static void nullsub_8(void)
|
||||
|
||||
bool16 InitWindows(const struct WindowTemplate *templates)
|
||||
{
|
||||
int i, j;
|
||||
u8* allocatedTilemapBuffer;
|
||||
u16 attrib;
|
||||
int allocatedBaseBlock;
|
||||
int i;
|
||||
void *bgTilemapBuffer;
|
||||
int j;
|
||||
u8 bgLayer;
|
||||
u16 attrib;
|
||||
u8* allocatedTilemapBuffer;
|
||||
int allocatedBaseBlock;
|
||||
|
||||
for (i = 0; i < 0x4; ++i)
|
||||
{
|
||||
if (GetBgTilemapBuffer(i) != NULL)
|
||||
bgTilemapBuffer = GetBgTilemapBuffer(i);
|
||||
if (bgTilemapBuffer != NULL)
|
||||
gUnknown_03002F70[i] = nullsub_8;
|
||||
else
|
||||
gUnknown_03002F70[i] = NULL;
|
||||
gUnknown_03002F70[i] = bgTilemapBuffer;
|
||||
}
|
||||
|
||||
for (i = 0; i < 0x20; ++i)
|
||||
@@ -564,19 +567,19 @@ u32 GetWindowAttribute(u8 windowId, u8 attributeId)
|
||||
switch (attributeId)
|
||||
{
|
||||
case WINDOW_BG:
|
||||
return (u32)gWindows[windowId].window.bg;
|
||||
return gWindows[windowId].window.bg;
|
||||
case WINDOW_TILEMAP_LEFT:
|
||||
return (u32)gWindows[windowId].window.tilemapLeft;
|
||||
return gWindows[windowId].window.tilemapLeft;
|
||||
case WINDOW_TILEMAP_TOP:
|
||||
return (u32)gWindows[windowId].window.tilemapTop;
|
||||
return gWindows[windowId].window.tilemapTop;
|
||||
case WINDOW_WIDTH:
|
||||
return (u32)gWindows[windowId].window.width;
|
||||
return gWindows[windowId].window.width;
|
||||
case WINDOW_HEIGHT:
|
||||
return (u32)gWindows[windowId].window.height;
|
||||
return gWindows[windowId].window.height;
|
||||
case WINDOW_PALETTE_NUM:
|
||||
return (u32)gWindows[windowId].window.paletteNum;
|
||||
return gWindows[windowId].window.paletteNum;
|
||||
case WINDOW_BASE_BLOCK:
|
||||
return (u32)gWindows[windowId].window.baseBlock;
|
||||
return gWindows[windowId].window.baseBlock;
|
||||
case WINDOW_TILE_DATA:
|
||||
return (u32)(gWindows[windowId].tileData);
|
||||
default:
|
||||
@@ -640,9 +643,12 @@ u16 AddWindow8Bit(const struct WindowTemplate *template)
|
||||
}
|
||||
return 0xFF;
|
||||
}
|
||||
gWindows[windowId].tileData = memAddress;
|
||||
gWindows[windowId].window = *template;
|
||||
return windowId;
|
||||
else
|
||||
{
|
||||
gWindows[windowId].tileData = memAddress;
|
||||
gWindows[windowId].window = *template;
|
||||
return windowId;
|
||||
}
|
||||
}
|
||||
|
||||
void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 141 B After Width: | Height: | Size: 141 B |
|
Before Width: | Height: | Size: 596 B After Width: | Height: | Size: 596 B |
@@ -709,7 +709,7 @@ $(PKNAVOPTIONSGFXDIR)/options.4bpp: $(PKNAVOPTIONSGFXDIR)/hoenn_map.4bpp \
|
||||
$(PKNAVGFXDIR)/header.4bpp: %.4bpp: %.png
|
||||
$(GFX) $< $@ -num_tiles 53
|
||||
|
||||
$(PKNAVGFXDIR)/outline.4bpp: %.4bpp: %.png
|
||||
$(PKNAVGFXDIR)/device_outline.4bpp: %.4bpp: %.png
|
||||
$(GFX) $< $@ -num_tiles 53
|
||||
|
||||
$(PKNAVGFXDIR)/ui_matchcall.4bpp: %.4bpp: %.png
|
||||
|
||||
@@ -176,8 +176,8 @@ typedef struct linkManagerTag
|
||||
/* 0x024 */ VBL_TIMER nameAcceptTimer;
|
||||
/* 0x030 */ VBL_TIMER linkRecoveryTimer;
|
||||
/* 0x03c */ INIT_PARAM *init_param;
|
||||
/* 0x040 */ void (*LMAN_callback)(u8 msg, u8 paramCount);
|
||||
/* 0x044 */ void (*MSC_callback)(u16 REQ_commandID);
|
||||
/* 0x040 */ void (*LMAN_callback)(u8, u8);
|
||||
/* 0x044 */ void (*MSC_callback)(u16);
|
||||
} LINK_MANAGER;
|
||||
|
||||
extern struct linkManagerTag lman;
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "battle_gfx_sfx_util.h"
|
||||
#include "battle_util2.h"
|
||||
#include "battle_bg.h"
|
||||
#include "pokeball.h"
|
||||
|
||||
#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
|
||||
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
|
||||
@@ -124,8 +125,8 @@ struct ProtectStruct
|
||||
u32 flinchImmobility:1;
|
||||
u32 notFirstStrike:1;
|
||||
u32 palaceUnableToUseMove:1;
|
||||
s32 physicalDmg;
|
||||
s32 specialDmg;
|
||||
u32 physicalDmg;
|
||||
u32 specialDmg;
|
||||
u8 physicalBattlerId;
|
||||
u8 specialBattlerId;
|
||||
};
|
||||
@@ -254,8 +255,8 @@ struct BattleResults
|
||||
u16 playerMon2Species; // 0x26
|
||||
u16 caughtMonSpecies; // 0x28
|
||||
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; // 0x2A
|
||||
u8 filler35; // 0x35
|
||||
u8 catchAttempts[11]; // 0x36
|
||||
u8 filler35; // 0x35
|
||||
u8 catchAttempts[POKEBALL_COUNT - 1]; // 0x36 Doesn't include Master ball
|
||||
};
|
||||
|
||||
struct BattleTv_Side
|
||||
@@ -493,7 +494,7 @@ struct BattleScripting
|
||||
u8 field_20;
|
||||
u8 reshowMainState;
|
||||
u8 reshowHelperState;
|
||||
u8 field_23;
|
||||
u8 levelUpHP;
|
||||
u8 windowsType; // 0 - normal, 1 - battle arena
|
||||
u8 multiplayerId;
|
||||
u8 specialTrainerBattleType;
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
{ \
|
||||
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
|
||||
textVar[1] = B_BUFF_STRING; \
|
||||
textVar[2] = (stringId & 0xFF); \
|
||||
textVar[2] = stringId; \
|
||||
textVar[3] = (stringId & 0xFF00) >> 8; \
|
||||
textVar[4] = B_BUFF_EOS; \
|
||||
}
|
||||
|
||||
@@ -43,7 +43,9 @@ extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
|
||||
extern const struct FacilityMon gSlateportBattleTentMons[];
|
||||
extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
|
||||
|
||||
extern u16 gUnknown_03006298[];
|
||||
// Temporary storage for monIds of the opponent team
|
||||
// during team generation in battle factory and similar facilities.
|
||||
extern u16 gFrontierTempParty[];
|
||||
|
||||
extern const struct BattleFrontierTrainer *gFacilityTrainers;
|
||||
extern const struct FacilityMon *gFacilityTrainerMons;
|
||||
|
||||
@@ -7,6 +7,16 @@
|
||||
#define FLOOR_WALKABLE_METATILE 0x28D
|
||||
#define FLOOR_EXIT_METATILE 0x28E
|
||||
|
||||
#define HINT_EXIT_DIRECTION 0
|
||||
#define HINT_REMAINING_ITEMS 1
|
||||
#define HINT_REMAINING_TRAINERS 2
|
||||
#define HINT_EXIT_SHORT_REMAINING_TRAINERS 3
|
||||
#define HINT_EXIT_SHORT_REMAINING_ITEMS 4
|
||||
#define HINT_EXIT_MEDIUM_REMAINING_TRAINERS 5
|
||||
#define HINT_EXIT_MEDIUM_REMAINING_ITEMS 6
|
||||
#define HINT_EXIT_FAR_REMAINING_TRAINERS 7
|
||||
#define HINT_EXIT_FAR_REMAINING_ITEMS 8
|
||||
|
||||
#define OBJ_TRAINERS 0
|
||||
#define OBJ_ITEMS 1
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
#define OBJ_EVENT_GFX_REGICE 201
|
||||
#define OBJ_EVENT_GFX_REGISTEEL 202
|
||||
#define OBJ_EVENT_GFX_SKITTY 203
|
||||
#define OBJ_EVENT_GFX_KECLEON_1 204
|
||||
#define OBJ_EVENT_GFX_KECLEON 204
|
||||
#define OBJ_EVENT_GFX_KYOGRE_2 205
|
||||
#define OBJ_EVENT_GFX_GROUDON_2 206
|
||||
#define OBJ_EVENT_GFX_RAYQUAZA_2 207
|
||||
@@ -213,7 +213,7 @@
|
||||
#define OBJ_EVENT_GFX_PIKACHU 209
|
||||
#define OBJ_EVENT_GFX_AZUMARILL 210
|
||||
#define OBJ_EVENT_GFX_WINGULL 211
|
||||
#define OBJ_EVENT_GFX_KECLEON_2 212
|
||||
#define OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW 212
|
||||
#define OBJ_EVENT_GFX_TUBER_M_SWIMMING 213
|
||||
#define OBJ_EVENT_GFX_AZURILL 214
|
||||
#define OBJ_EVENT_GFX_MOM 215
|
||||
|
||||
@@ -1012,7 +1012,7 @@
|
||||
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN 0x3C7
|
||||
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_BELDUM_POKEBALL 0x3C8
|
||||
#define FLAG_HIDE_FORTREE_CITY_KECLEON 0x3C9
|
||||
#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE 0x3CA
|
||||
#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE 0x3CA
|
||||
#define FLAG_HIDE_LILYCOVE_CITY_RIVAL 0x3CB
|
||||
#define FLAG_HIDE_ROUTE_120_STEVEN 0x3CC
|
||||
#define FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN 0x3CD
|
||||
@@ -1023,7 +1023,7 @@
|
||||
#define FLAG_HIDE_AQUA_HIDEOUT_B1F_ELECTRODE_2 0x3D2
|
||||
#define FLAG_HIDE_OLDALE_TOWN_RIVAL 0x3D3
|
||||
#define FLAG_HIDE_UNDERWATER_SEA_FLOOR_CAVERN_STOLEN_SUBMARINE 0x3D4
|
||||
#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5
|
||||
#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_SHADOW 0x3D5
|
||||
#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3D6
|
||||
#define FLAG_HIDE_RUSTURF_TUNNEL_WANDA 0x3D7
|
||||
#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WANDA 0x3D8
|
||||
|
||||
@@ -51,6 +51,11 @@
|
||||
|
||||
// fields 6 and onwards are item-specific arguments
|
||||
|
||||
// Special HP recovery amounts for ITEM4_HEAL_HP
|
||||
#define ITEM6_HEAL_FULL ((u8) -1)
|
||||
#define ITEM6_HEAL_HALF ((u8) -2)
|
||||
#define ITEM6_HEAL_LVL_UP ((u8) -3)
|
||||
|
||||
// Used for GetItemEffectType.
|
||||
#define ITEM_EFFECT_X_ITEM 0
|
||||
#define ITEM_EFFECT_RAISE_LEVEL 1
|
||||
|
||||
@@ -497,6 +497,10 @@
|
||||
#define MAX_PC_ITEM_CAPACITY 999
|
||||
#define MAX_BERRY_CAPACITY 999
|
||||
|
||||
#define BAG_ITEM_CAPACITY_DIGITS 2
|
||||
#define BERRY_CAPACITY_DIGITS 3
|
||||
#define MAX_ITEM_DIGITS BERRY_CAPACITY_DIGITS
|
||||
|
||||
// Secondary IDs for rods
|
||||
#define OLD_ROD 0
|
||||
#define GOOD_ROD 1
|
||||
|
||||
@@ -239,12 +239,12 @@
|
||||
#define UNOWN_FORM_COUNT 28
|
||||
|
||||
// Battle move flags
|
||||
#define FLAG_MAKES_CONTACT 0x1
|
||||
#define FLAG_PROTECT_AFFECTED 0x2
|
||||
#define FLAG_MAGICCOAT_AFFECTED 0x4
|
||||
#define FLAG_SNATCH_AFFECTED 0x8
|
||||
#define FLAG_MIRROR_MOVE_AFFECTED 0x10
|
||||
#define FLAG_KINGSROCK_AFFECTED 0x20
|
||||
#define FLAG_MAKES_CONTACT (1 << 0)
|
||||
#define FLAG_PROTECT_AFFECTED (1 << 1)
|
||||
#define FLAG_MAGICCOAT_AFFECTED (1 << 2)
|
||||
#define FLAG_SNATCH_AFFECTED (1 << 3)
|
||||
#define FLAG_MIRROR_MOVE_AFFECTED (1 << 4)
|
||||
#define FLAG_KINGSROCK_AFFECTED (1 << 5)
|
||||
|
||||
// Growth rates
|
||||
#define GROWTH_MEDIUM_FAST 0
|
||||
@@ -268,22 +268,22 @@
|
||||
|
||||
#define F_SUMMARY_SCREEN_FLIP_SPRITE 0x80
|
||||
|
||||
// Evolution type flags
|
||||
#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220
|
||||
#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220
|
||||
#define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220
|
||||
#define EVO_LEVEL 0x0004 // Pokémon reaches the specified level
|
||||
#define EVO_TRADE 0x0005 // Pokémon is traded
|
||||
#define EVO_TRADE_ITEM 0x0006 // Pokémon is traded while it's holding the specified item
|
||||
#define EVO_ITEM 0x0007 // specified item is used on Pokémon
|
||||
#define EVO_LEVEL_ATK_GT_DEF 0x0008 // Pokémon reaches the specified level with attack > defense
|
||||
#define EVO_LEVEL_ATK_EQ_DEF 0x0009 // Pokémon reaches the specified level with attack = defense
|
||||
#define EVO_LEVEL_ATK_LT_DEF 0x000a // Pokémon reaches the specified level with attack < defense
|
||||
#define EVO_LEVEL_SILCOON 0x000b // Pokémon reaches the specified level with a Silcoon personality value
|
||||
#define EVO_LEVEL_CASCOON 0x000c // Pokémon reaches the specified level with a Cascoon personality value
|
||||
#define EVO_LEVEL_NINJASK 0x000d // Pokémon reaches the specified level (special value for Ninjask)
|
||||
#define EVO_LEVEL_SHEDINJA 0x000e // Pokémon reaches the specified level (special value for Shedinja)
|
||||
#define EVO_BEAUTY 0x000f // Pokémon levels up with beauty ≥ specified value
|
||||
// Evolution types
|
||||
#define EVO_FRIENDSHIP 1 // Pokémon levels up with friendship ≥ 220
|
||||
#define EVO_FRIENDSHIP_DAY 2 // Pokémon levels up during the day with friendship ≥ 220
|
||||
#define EVO_FRIENDSHIP_NIGHT 3 // Pokémon levels up at night with friendship ≥ 220
|
||||
#define EVO_LEVEL 4 // Pokémon reaches the specified level
|
||||
#define EVO_TRADE 5 // Pokémon is traded
|
||||
#define EVO_TRADE_ITEM 6 // Pokémon is traded while it's holding the specified item
|
||||
#define EVO_ITEM 7 // specified item is used on Pokémon
|
||||
#define EVO_LEVEL_ATK_GT_DEF 8 // Pokémon reaches the specified level with attack > defense
|
||||
#define EVO_LEVEL_ATK_EQ_DEF 9 // Pokémon reaches the specified level with attack = defense
|
||||
#define EVO_LEVEL_ATK_LT_DEF 10 // Pokémon reaches the specified level with attack < defense
|
||||
#define EVO_LEVEL_SILCOON 11 // Pokémon reaches the specified level with a Silcoon personality value
|
||||
#define EVO_LEVEL_CASCOON 12 // Pokémon reaches the specified level with a Cascoon personality value
|
||||
#define EVO_LEVEL_NINJASK 13 // Pokémon reaches the specified level (special value for Ninjask)
|
||||
#define EVO_LEVEL_SHEDINJA 14 // Pokémon reaches the specified level (special value for Shedinja)
|
||||
#define EVO_BEAUTY 15 // Pokémon levels up with beauty ≥ specified value
|
||||
|
||||
#define EVOS_PER_MON 5
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#define GUARD_DATA_H
|
||||
|
||||
#include "constants/moves.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
#define SPECIES_SHINY_TAG 500
|
||||
|
||||
|
||||
@@ -140,13 +140,55 @@ struct SoundChannel
|
||||
struct WaveData *wav;
|
||||
u32 cp;
|
||||
struct MusicPlayerTrack *track;
|
||||
void *pp;
|
||||
void *np;
|
||||
void *d4;
|
||||
u32 pp;
|
||||
u32 np;
|
||||
u32 d4;
|
||||
u16 xpi;
|
||||
u16 xpc;
|
||||
};
|
||||
|
||||
#define MAX_DIRECTSOUND_CHANNELS 12
|
||||
|
||||
#define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer
|
||||
|
||||
struct SoundInfo
|
||||
{
|
||||
// This field is normally equal to ID_NUMBER but it is set to other
|
||||
// values during sensitive operations for locking purposes.
|
||||
// This field should be volatile but isn't. This could potentially cause
|
||||
// race conditions.
|
||||
u32 ident;
|
||||
|
||||
vu8 pcmDmaCounter;
|
||||
|
||||
// Direct Sound
|
||||
u8 reverb;
|
||||
u8 maxChans;
|
||||
u8 masterVolume;
|
||||
u8 freq;
|
||||
|
||||
u8 mode;
|
||||
u8 c15;
|
||||
u8 pcmDmaPeriod; // number of V-blanks per PCM DMA
|
||||
u8 maxLines;
|
||||
u8 gap[3];
|
||||
s32 pcmSamplesPerVBlank;
|
||||
s32 pcmFreq;
|
||||
s32 divFreq;
|
||||
struct CgbChannel *cgbChans;
|
||||
u32 func;
|
||||
u32 intp;
|
||||
void (*CgbSound)(void);
|
||||
void (*CgbOscOff)(u8);
|
||||
u32 (*MidiKeyToCgbFreq)(u8, u8, u8);
|
||||
u32 MPlayJumpTable;
|
||||
u32 plynote;
|
||||
u32 ExtVolPit;
|
||||
u8 gap2[16];
|
||||
struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS];
|
||||
s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2];
|
||||
};
|
||||
|
||||
struct SongHeader
|
||||
{
|
||||
u8 trackCount;
|
||||
@@ -270,7 +312,7 @@ struct MusicPlayerInfo
|
||||
struct MusicPlayerTrack *tracks;
|
||||
struct ToneData *tone;
|
||||
u32 ident;
|
||||
void (*func)();
|
||||
u32 func;
|
||||
u32 intp;
|
||||
};
|
||||
|
||||
@@ -292,47 +334,7 @@ struct Song
|
||||
extern const struct MusicPlayer gMPlayTable[];
|
||||
extern const struct Song gSongTable[];
|
||||
|
||||
#define MAX_DIRECTSOUND_CHANNELS 12
|
||||
|
||||
#define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer
|
||||
|
||||
struct SoundInfo
|
||||
{
|
||||
// This field is normally equal to ID_NUMBER but it is set to other
|
||||
// values during sensitive operations for locking purposes.
|
||||
// This field should be volatile but isn't. This could potentially cause
|
||||
// race conditions.
|
||||
u32 ident;
|
||||
|
||||
vu8 pcmDmaCounter;
|
||||
|
||||
// Direct Sound
|
||||
u8 reverb;
|
||||
u8 maxChans;
|
||||
u8 masterVolume;
|
||||
u8 freq;
|
||||
|
||||
u8 mode;
|
||||
u8 c15;
|
||||
u8 pcmDmaPeriod; // number of V-blanks per PCM DMA
|
||||
u8 maxLines;
|
||||
u8 gap[3];
|
||||
s32 pcmSamplesPerVBlank;
|
||||
s32 pcmFreq;
|
||||
s32 divFreq;
|
||||
struct CgbChannel *cgbChans;
|
||||
void (*func)();
|
||||
u32 intp;
|
||||
void (*CgbSound)();
|
||||
void (*CgbOscOff)(u8);
|
||||
u32 (*MidiKeyToCgbFreq)(u8, u8, u8);
|
||||
void (**MPlayJumpTable)();
|
||||
void (*plynote)(u8, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void (*ExtVolPit)(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
u32 gap2[4];
|
||||
struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS];
|
||||
s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2];
|
||||
};
|
||||
|
||||
extern u8 gMPlayMemAccArea[];
|
||||
|
||||
@@ -446,7 +448,7 @@ void ply_tune(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_port(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_xcmd(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_endtie(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_note(u8, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
void ply_note(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
|
||||
// extended sound command handler functions
|
||||
void ply_xxx(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
|
||||
|
||||
@@ -214,8 +214,8 @@ struct ObjectEvent
|
||||
struct ObjectEventGraphicsInfo
|
||||
{
|
||||
/*0x00*/ u16 tileTag;
|
||||
/*0x02*/ u16 paletteTag1;
|
||||
/*0x04*/ u16 paletteTag2;
|
||||
/*0x02*/ u16 paletteTag;
|
||||
/*0x04*/ u16 reflectionPaletteTag;
|
||||
/*0x06*/ u16 size;
|
||||
/*0x08*/ s16 width;
|
||||
/*0x0A*/ s16 height;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "constants/global.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/vars.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
// Prevent cross-jump optimization.
|
||||
#define BLOCK_CROSS_JUMP asm("");
|
||||
@@ -65,8 +66,6 @@
|
||||
// Converts a Q24.8 fixed-point format number to a regular integer
|
||||
#define Q_24_8_TO_INT(n) ((int)((n) >> 8))
|
||||
|
||||
#define POKEMON_SLOTS_NUMBER 412
|
||||
|
||||
#define min(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define max(a, b) ((a) >= (b) ? (a) : (b))
|
||||
|
||||
@@ -99,7 +98,7 @@
|
||||
#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
|
||||
|
||||
// Macros for checking the joypad
|
||||
#define TEST_BUTTON(field, button) ((field) & (button))
|
||||
#define TEST_BUTTON(field, button) ({(field) & (button);})
|
||||
#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button)
|
||||
#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button)
|
||||
#define JOY_HELD_RAW(button) TEST_BUTTON(gMain.heldKeysRaw, button)
|
||||
@@ -115,7 +114,7 @@
|
||||
|
||||
#define ROUND_BITS_TO_BYTES(numBits)(((numBits) / 8) + (((numBits) % 8) ? 1 : 0))
|
||||
|
||||
#define DEX_FLAGS_NO (ROUND_BITS_TO_BYTES(POKEMON_SLOTS_NUMBER))
|
||||
#define DEX_FLAGS_NO (ROUND_BITS_TO_BYTES(NUM_SPECIES))
|
||||
#define NUM_FLAG_BYTES (ROUND_BITS_TO_BYTES(FLAGS_COUNT))
|
||||
|
||||
struct Coords8
|
||||
@@ -329,11 +328,12 @@ struct BattleDomeTrainer
|
||||
};
|
||||
|
||||
#define DOME_TOURNAMENT_TRAINERS_COUNT 16
|
||||
#define BATTLE_TOWER_RECORD_COUNT 5
|
||||
|
||||
struct BattleFrontier
|
||||
{
|
||||
/*0x64C*/ struct EmeraldBattleTowerRecord towerPlayer;
|
||||
/*0x738*/ struct EmeraldBattleTowerRecord towerRecords[5]; // From record mixing.
|
||||
/*0x738*/ struct EmeraldBattleTowerRecord towerRecords[BATTLE_TOWER_RECORD_COUNT]; // From record mixing.
|
||||
/*0xBEB*/ struct BattleTowerInterview towerInterview;
|
||||
/*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer;
|
||||
/*0xCA8*/ u8 challengeStatus;
|
||||
|
||||
@@ -5014,4 +5014,10 @@ extern const u16 gPokenavMessageBox_Pal[];
|
||||
extern const u32 gPokenavOptions_Gfx[];
|
||||
extern const u16 gPokenavOptions_Pal[];
|
||||
|
||||
// Object event pals
|
||||
extern const u16 gObjectEventPal_Brendan[];
|
||||
extern const u16 gObjectEventPal_May[];
|
||||
extern const u16 gObjectEventPal_RubySapphireBrendan[];
|
||||
extern const u16 gObjectEventPal_RubySapphireMay[];
|
||||
|
||||
#endif //GUARD_GRAPHICS_H
|
||||
|
||||
@@ -24,7 +24,7 @@ struct ListMenu;
|
||||
struct ListMenuItem
|
||||
{
|
||||
const u8 *name;
|
||||
u32 id;
|
||||
s32 id;
|
||||
};
|
||||
|
||||
struct ListMenuTemplate
|
||||
@@ -98,7 +98,7 @@ struct CursorStruct
|
||||
extern struct ScrollArrowsTemplate gTempScrollArrowTemplate;
|
||||
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
|
||||
|
||||
u32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
|
||||
s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
|
||||
u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
|
||||
u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *arg1, u16 scrollOffset, u16 selectedRow);
|
||||
s32 ListMenu_ProcessInput(u8 listTaskId);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "window.h"
|
||||
#include "constants/pokemon.h"
|
||||
|
||||
#define MENU_NOTHING_CHOSEN -2
|
||||
#define MENU_B_PRESSED -1
|
||||
@@ -14,6 +15,14 @@
|
||||
#define MENU_CURSOR_DELTA_LEFT -1
|
||||
#define MENU_CURSOR_DELTA_RIGHT 1
|
||||
|
||||
#define MENU_INFO_ICON_TYPE (NUMBER_OF_MON_TYPES + 1)
|
||||
#define MENU_INFO_ICON_POWER (NUMBER_OF_MON_TYPES + 2)
|
||||
#define MENU_INFO_ICON_ACCURACY (NUMBER_OF_MON_TYPES + 3)
|
||||
#define MENU_INFO_ICON_PP (NUMBER_OF_MON_TYPES + 4)
|
||||
#define MENU_INFO_ICON_EFFECT (NUMBER_OF_MON_TYPES + 5)
|
||||
#define MENU_INFO_ICON_BALL_RED (NUMBER_OF_MON_TYPES + 6)
|
||||
#define MENU_INFO_ICON_BALL_BLUE (NUMBER_OF_MON_TYPES + 7)
|
||||
|
||||
enum
|
||||
{
|
||||
SAVE_MENU_NAME,
|
||||
@@ -61,7 +70,7 @@ u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 numItems, u8 i
|
||||
u8 Menu_GetCursorPos(void);
|
||||
s8 Menu_ProcessInput(void);
|
||||
s8 Menu_ProcessInputNoWrap(void);
|
||||
void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
|
||||
void BlitMenuInfoIcon(u8 winId, u8 a2, u16 x, u16 y);
|
||||
void ResetTempTileDataBuffers(void);
|
||||
void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
|
||||
bool8 FreeTempTileDataBuffersIfPossible(void);
|
||||
|
||||
@@ -23,7 +23,7 @@ struct UnknownSubStruct_81D1ED4
|
||||
|
||||
struct ConditionGraph
|
||||
{
|
||||
/*0x000*/ u8 unk0[4][FLAVOR_COUNT];
|
||||
/*0x000*/ u8 stat[4][FLAVOR_COUNT];
|
||||
/*0x014*/ struct UnknownSubStruct_81D1ED4 unk14[4][FLAVOR_COUNT];
|
||||
/*0x064*/ struct UnknownSubStruct_81D1ED4 unk64[10][FLAVOR_COUNT];
|
||||
/*0x12C*/ struct UnknownSubStruct_81D1ED4 unk12C[FLAVOR_COUNT];
|
||||
@@ -32,7 +32,7 @@ struct ConditionGraph
|
||||
/*0x350*/ u16 unk350;
|
||||
/*0x352*/ u16 unk352;
|
||||
/*0x354*/ u8 unk354;
|
||||
/*0x355*/ u8 unk355;
|
||||
/*0x355*/ u8 state;
|
||||
};
|
||||
|
||||
bool8 sub_81D1C44(u8 count);
|
||||
@@ -41,12 +41,12 @@ u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page);
|
||||
void sub_81D1E90(struct PlayerPCItemPageStruct *page);
|
||||
void sub_81D1EC0(void);
|
||||
void sub_81D1D04(u8 a0);
|
||||
void sub_81D1ED4(struct ConditionGraph *graph);
|
||||
void InitConditionGraphData(struct ConditionGraph *graph);
|
||||
void sub_81D2108(struct ConditionGraph *graph);
|
||||
void sub_81D21DC(u8 bg);
|
||||
void sub_81D20AC(struct ConditionGraph *graph);
|
||||
void SetConditionGraphIOWindows(u8 bg);
|
||||
void InitConditionGraphState(struct ConditionGraph *graph);
|
||||
void sub_81D2230(struct ConditionGraph *graph);
|
||||
bool8 sub_81D20BC(struct ConditionGraph *graph);
|
||||
bool8 SetupConditionGraphScanlineParams(struct ConditionGraph *graph);
|
||||
bool32 TransitionConditionGraph(struct ConditionGraph *graph);
|
||||
void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1);
|
||||
void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2);
|
||||
|
||||
@@ -29,8 +29,8 @@ bool8 sub_811F960(void);
|
||||
void sub_811FA90(void);
|
||||
void sub_811FAA4(u8 markings, s16 x, s16 y);
|
||||
void sub_811FAF8(void);
|
||||
bool8 sub_811FBA4(void);
|
||||
struct Sprite *sub_811FF94(u16 tileTag, u16 paletteTag, const u16 *palette);
|
||||
bool8 MonMarkingsMenuHandleInput(void);
|
||||
struct Sprite *CreateMonMarkingsSpriteWithPal(u16 tileTag, u16 paletteTag, const u16 *palette);
|
||||
struct Sprite *sub_811FFB4(u16 tileTag, u16 paletteTag, const u16 *palette);
|
||||
void sub_8120084(u8 markings, void *dest);
|
||||
|
||||
|
||||
@@ -127,8 +127,8 @@ struct Unknown_806F160_Struct
|
||||
u32 field_0_1:4;
|
||||
u32 field_1:8;
|
||||
u16 magic:8;
|
||||
u32 size:4;
|
||||
u16 field_3_1:4;
|
||||
u32 field_3_0:4;
|
||||
u32 field_3_1:4;
|
||||
void *bytes;
|
||||
u8 **byteArrays;
|
||||
struct SpriteTemplate *templates;
|
||||
|
||||
@@ -27,17 +27,17 @@ struct PokenavListTemplate
|
||||
struct PokenavMonList *monList;
|
||||
struct PokenavMatchCallEntries *matchCallEntries;
|
||||
} list;
|
||||
u16 unk4;
|
||||
u16 count;
|
||||
u16 unk6;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
u8 unkE;
|
||||
u8 item_X;
|
||||
u8 windowWidth;
|
||||
u8 listTop;
|
||||
u8 maxShowed;
|
||||
u8 fillValue;
|
||||
u8 fontId;
|
||||
union {
|
||||
void (*unk10_1)(struct PokenavMonList *, u8 *a1);
|
||||
void (*printMonFunc)(struct PokenavMonList *item, u8 *dest);
|
||||
void (*unk10_2)(struct PokenavMatchCallEntries *, u8 *a1);
|
||||
} listFunc;
|
||||
void (*unk14)(u16 a0, u32 a1, u32 a2);
|
||||
@@ -45,9 +45,9 @@ struct PokenavListTemplate
|
||||
|
||||
struct PokenavSub18
|
||||
{
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
struct PokenavMonList unk4[TOTAL_BOXES_COUNT * IN_BOX_COUNT + PARTY_SIZE];
|
||||
u16 listCount;
|
||||
u16 currIndex;
|
||||
struct PokenavMonList monData[TOTAL_BOXES_COUNT * IN_BOX_COUNT + PARTY_SIZE];
|
||||
};
|
||||
|
||||
// Return values of LoopedTask functions.
|
||||
@@ -65,6 +65,31 @@ enum
|
||||
POKENAV_MODE_FORCE_CALL_EXIT, // Pokenav tutorial after calling Mr. Stone
|
||||
};
|
||||
|
||||
// TODO - refine these names
|
||||
enum Substructures
|
||||
{
|
||||
POKENAV_SUBSTRUCT_MAIN_MENU,
|
||||
POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER,
|
||||
POKENAV_SUBSTRUCT_MENU_ICONS,
|
||||
POKENAV_SUBSTRUCT_REGION_MAP_STATE,
|
||||
POKENAV_SUBSTRUCT_REGION_MAP_ZOOM,
|
||||
POKENAV_SUBSTRUCT_MATCH_CALL_MAIN,
|
||||
POKENAV_SUBSTRUCT_MATCH_CALL_OPEN,
|
||||
POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS,
|
||||
POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST,
|
||||
POKENAV_SUBSTRUCT_RIBBONS_MON_LIST,
|
||||
POKENAV_SUBSTRUCT_RIBBONS_MON_MENU,
|
||||
POKENAV_SUBSTRUCT_CONDITION_GRAPH,
|
||||
POKENAV_SUBSTRUCT_MON_MARK_MENU,
|
||||
POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST,
|
||||
POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU,
|
||||
POKENAV_SUBSTRUCT_15, //unused
|
||||
POKENAV_SUBSTRUCT_REGION_MAP,
|
||||
POKENAV_SUBSTRUCT_MATCH_CALL_LIST,
|
||||
POKENAV_SUBSTRUCT_MON_LIST,
|
||||
POKENAV_SUBSTRUCT_COUNT,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
POKENAV_GFX_MAIN_MENU,
|
||||
@@ -97,12 +122,12 @@ enum
|
||||
POKENAV_REGION_MAP,
|
||||
POKENAV_CONDITION_PARTY,
|
||||
POKENAV_CONDITION_SEARCH_RESULTS,
|
||||
POKENAV_MENU_9, // Condition
|
||||
POKENAV_MENU_A, // Condition
|
||||
POKENAV_CONDITION_GRAPH_FROM_SEARCH, // opening condition graph from search list
|
||||
POKENAV_RETURN_CONDITION_SEARCH, //return to search list from condition graph
|
||||
POKENAV_MATCH_CALL,
|
||||
POKENAV_RIBBONS_MON_LIST,
|
||||
POKENAV_MENU_D, // Ribbons
|
||||
POKENAV_MENU_E, // Ribbons
|
||||
POKENAV_RIBBONS_SUMMARY_SCREEN,
|
||||
POKENAV_RIBBONS_RETURN_TO_MON_LIST,
|
||||
};
|
||||
|
||||
enum
|
||||
@@ -207,7 +232,7 @@ enum
|
||||
// Pokenav Function IDs
|
||||
// Indices into the LoopedTask tables for each of the main Pokenav features
|
||||
|
||||
enum
|
||||
enum RegionMapFuncIds
|
||||
{
|
||||
POKENAV_MENU_FUNC_NONE,
|
||||
POKENAV_MENU_FUNC_MOVE_CURSOR,
|
||||
@@ -220,6 +245,19 @@ enum
|
||||
POKENAV_MENU_FUNC_OPEN_FEATURE,
|
||||
};
|
||||
|
||||
enum PartyConditionFuncIds
|
||||
{
|
||||
PARTY_CONDITION_FUNC_NONE,
|
||||
PARTY_CONDITION_FUNC_SLIDE_MON_IN,
|
||||
PARTY_CONDITION_FUNC_RETURN,
|
||||
PARTY_CONDITION_FUNC_NO_TRANSITION,
|
||||
PARTY_CONDITION_FUNC_SLIDE_MON_OUT,
|
||||
PARTY_CONDITION_FUNC_ADD_MARKINGS,
|
||||
PARTY_CONDITION_FUNC_CLOSE_MARKINGS,
|
||||
};
|
||||
|
||||
#define POKENAV_MENU_FUNC_EXIT -1
|
||||
|
||||
enum
|
||||
{
|
||||
POKENAV_MC_FUNC_NONE,
|
||||
@@ -268,17 +306,17 @@ void SetPokenavVBlankCallback(void);
|
||||
void SetVBlankCallback_(IntrCallback callback);
|
||||
|
||||
// pokenav_match_call_ui.c
|
||||
u32 GetSelectedMatchCall(void);
|
||||
u32 GetSelectedPokenavListIndex(void);
|
||||
bool32 sub_81C8224(void);
|
||||
int MatchCall_MoveCursorUp(void);
|
||||
int MatchCall_MoveCursorDown(void);
|
||||
int MatchCall_PageDown(void);
|
||||
int MatchCall_PageUp(void);
|
||||
bool32 sub_81C8630(void);
|
||||
bool32 IsMonListLoopedTaskActive(void);
|
||||
void ToggleMatchCallVerticalArrows(bool32 shouldHide);
|
||||
void sub_81C8838(void);
|
||||
void sub_81C877C(void);
|
||||
bool32 sub_81C8820(void);
|
||||
bool32 IsMatchCallListTaskActive(void);
|
||||
void PrintCheckPageInfo(s16 a0);
|
||||
u32 GetMatchCallListTopIndex(void);
|
||||
void sub_81C87F0(void);
|
||||
@@ -300,30 +338,30 @@ void MatchCall_GetNameAndDesc(u32 idx, const u8 **desc, const u8 **name);
|
||||
// pokenav_main_menu.c
|
||||
bool32 InitPokenavMainMenu(void);
|
||||
void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size);
|
||||
void sub_81C7850(u32 a0);
|
||||
u32 sub_81C786C(void);
|
||||
void RunMainMenuLoopedTask(u32 a0);
|
||||
u32 IsActiveMenuLoopTaskActive(void);
|
||||
void LoadLeftHeaderGfxForIndex(u32 arg0);
|
||||
void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2);
|
||||
void ShowLeftHeaderGfx(u32 menugfxId, bool32 arg1, bool32 isOnRightSide);
|
||||
void PokenavFadeScreen(s32 fadeType);
|
||||
bool32 sub_81C8010(void);
|
||||
bool32 AreLeftHeaderSpritesMoving(void);
|
||||
void InitBgTemplates(const struct BgTemplate *templates, int count);
|
||||
bool32 IsPaletteFadeActive(void);
|
||||
void PrintHelpBarText(u32 textId);
|
||||
bool32 WaitForHelpBar(void);
|
||||
void sub_81C78A0(void);
|
||||
void SlideMenuHeaderDown(void);
|
||||
bool32 MainMenuLoopedTaskIsBusy(void);
|
||||
void sub_81C7FDC(void);
|
||||
void sub_81C79BC(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *palette);
|
||||
void SetLeftHeaderSpritesInvisibility(void);
|
||||
void PokenavCopyPalette(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *palette);
|
||||
void sub_81C7B40(void);
|
||||
struct Sprite *PauseSpinningPokenavSprite(void);
|
||||
void ResumeSpinningPokenavSprite(void);
|
||||
void sub_81C7E14(u32 arg0);
|
||||
void sub_81C7FC4(u32 arg0, bool32 arg1);
|
||||
void sub_81C7880(void);
|
||||
void sub_81C7990(u32 a0, u16 a1);
|
||||
void UpdateRegionMapRightHeaderTiles(u32 arg0);
|
||||
void HideMainOrSubMenuLeftHeader(u32 id, bool32 onRightSide);
|
||||
void SlideMenuHeaderUp(void);
|
||||
void PokenavFillPalette(u32 palIndex, u16 fillValue);
|
||||
u32 PokenavMainMenuLoopedTaskIsActive(void);
|
||||
bool32 WaitForPokenavShutdownFade(void);
|
||||
void sub_81C7834(void *func1, void *func2);
|
||||
void SetActiveMenuLoopTasks(void *func1, void *func2);
|
||||
void ShutdownPokenav(void);
|
||||
|
||||
// pokenav_menu_handler_1.c
|
||||
@@ -345,7 +383,7 @@ bool32 OpenPokenavMenuNotInitial(void);
|
||||
void CreateMenuHandlerLoopedTask(s32 ltIdx);
|
||||
bool32 IsMenuHandlerLoopedTaskActive(void);
|
||||
void FreeMenuHandlerSubstruct2(void);
|
||||
void sub_81CAADC(void);
|
||||
void ResetBldCnt_(void);
|
||||
|
||||
// pokenav_match_call_1.c
|
||||
bool32 PokenavCallback_Init_MatchCall(void);
|
||||
@@ -364,7 +402,7 @@ const u8 *GetMatchCallMessageText(int index, u8 *arg1);
|
||||
u16 GetMatchCallOptionCursorPos(void);
|
||||
u16 GetMatchCallOptionId(int arg0);
|
||||
void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntries * arg0, u8 *str);
|
||||
u8 sub_81CB0C8(int rematchIndex);
|
||||
u8 GetMatchTableMapSectionId(int rematchIndex);
|
||||
int GetIndexDeltaOfNextCheckPageDown(int index);
|
||||
int GetIndexDeltaOfNextCheckPageUp(int index);
|
||||
bool32 IsRematchEntryRegistered(int index);
|
||||
@@ -385,60 +423,60 @@ void FreeRegionMapSubstruct1(void);
|
||||
void FreeRegionMapSubstruct2(void);
|
||||
|
||||
// pokenav_conditions_1.c
|
||||
u32 PokenavCallback_Init_7(void);
|
||||
u32 PokenavCallback_Init_9(void);
|
||||
u32 sub_81CD070(void);
|
||||
void sub_81CD1C0(void);
|
||||
bool32 sub_81CD3C4(void);
|
||||
bool32 sub_81CDD5C(void);
|
||||
struct ConditionGraph *sub_81CDC70(void);
|
||||
u16 sub_81CDC60(void);
|
||||
u16 sub_81CDC50(void);
|
||||
u8 sub_81CDDB0(void);
|
||||
bool32 sub_81CD548(u8 arg0);
|
||||
u8 sub_81CDD7C(void);
|
||||
u8 *sub_81CDD04(u8 id);
|
||||
u8 *sub_81CDD24(u8 id);
|
||||
u16 sub_81CDD48(void);
|
||||
void *sub_81CDCB4(u8 id);
|
||||
void *sub_81CDCD4(u8 id);
|
||||
u32 PokenavCallback_Init_PartyCondition(void);
|
||||
u32 PokenavCallback_Init_ConditionGraphFromSearch(void);
|
||||
u32 GetPartyConditionCallback(void);
|
||||
void FreePartyConditionSubstruct1(void);
|
||||
bool32 LoadPartyConditionMenuGfx(void);
|
||||
bool32 IsConditionMenuSearchMode(void);
|
||||
struct ConditionGraph *GetConditionGraphDataPtr(void);
|
||||
u16 GetConditionGraphCurrentMonIndex(void);
|
||||
u16 GetMonListCount(void);
|
||||
u8 GetMonSheen(void);
|
||||
bool32 SetConditionGraphData(u8 arg0);
|
||||
u8 TryGetMonMarkId(void);
|
||||
u8 *GetConditionMonNameBuffer(u8 id);
|
||||
u8 *GetConditionMonLocationBuffer(u8 id);
|
||||
u16 GetConditionMonDataBuffer(void);
|
||||
void *GetConditionMonPicGfx(u8 id);
|
||||
void *GetConditionMonPal(u8 id);
|
||||
|
||||
// pokenav_conditions_2.c
|
||||
bool32 sub_81CDDD4(void);
|
||||
void sub_81CDE2C(s32);
|
||||
u32 sub_81CDE64(void);
|
||||
void sub_81CECA0(void);
|
||||
u8 sub_81CEF14(void);
|
||||
bool32 OpenPartyConditionMenu(void);
|
||||
void CreatePartyConditionLoopedTask(s32);
|
||||
u32 IsPartyConditionLoopedTaskActive(void);
|
||||
void FreePartyConditionSubstruct2(void);
|
||||
u8 GetMonMarkingsData(void);
|
||||
|
||||
// pokenav_conditions_3.c
|
||||
u32 PokenavCallback_Init_8(void);
|
||||
u32 PokenavCallback_Init_10(void);
|
||||
u32 sub_81CEFDC(void);
|
||||
void sub_81CEFF0(void);
|
||||
bool32 sub_81CF330(void);
|
||||
bool32 sub_81CF368(void);
|
||||
void sub_81CF3A0(s32);
|
||||
u32 sub_81CF3D0(void);
|
||||
void sub_81CF3F8(void);
|
||||
u32 PokenavCallback_Init_ConditionSearch(void);
|
||||
u32 PokenavCallback_Init_ReturnToMonSearchList(void);
|
||||
u32 GetConditionSearchResultsCallback(void);
|
||||
void FreeSearchResultSubstruct1(void);
|
||||
bool32 OpenConditionSearchResults(void);
|
||||
bool32 OpenConditionSearchListFromGraph(void);
|
||||
void CreateSearchResultsLoopedTask(s32);
|
||||
u32 IsSearchResultLoopedTaskActive(void);
|
||||
void FreeSearchResultSubstruct2(void);
|
||||
|
||||
// pokenav_ribbons_1.c
|
||||
u32 PokenavCallback_Init_12(void);
|
||||
u32 PokenavCallback_Init_14(void);
|
||||
u32 sub_81CFA34(void);
|
||||
void sub_81CFA48(void);
|
||||
bool32 sub_81CFDD0(void);
|
||||
bool32 sub_81CFE08(void);
|
||||
void sub_81CFE40(s32);
|
||||
u32 sub_81CFE70(void);
|
||||
void sub_81CFE98(void);
|
||||
u32 PokenavCallback_Init_MonRibbonList(void);
|
||||
u32 PokenavCallback_Init_RibbonsMonListFromSummary(void);
|
||||
u32 GetRibbonsMonListCallback(void);
|
||||
void FreeRibbonsMonList1(void);
|
||||
bool32 OpenRibbonsMonList(void);
|
||||
bool32 OpenRibbonsMonListFromRibbonsSummary(void);
|
||||
void CreateRibbonsMonListLoopedTask(s32);
|
||||
u32 IsRibbonsMonListLoopedTaskActive(void);
|
||||
void FreeRibbonsMonList2(void);
|
||||
|
||||
// pokenav_ribbons_2.c
|
||||
u32 PokenavCallback_Init_13(void);
|
||||
u32 sub_81D04A0(void);
|
||||
void sub_81D04B8(void);
|
||||
bool32 sub_81D0978(void);
|
||||
void sub_81D09B0(s32);
|
||||
u32 sub_81D09E0(void);
|
||||
void sub_81D09F4(void);
|
||||
u32 PokenavCallback_Init_RibbonsSummaryMenu(void);
|
||||
u32 GetRibbonsSummaryMenuCallback(void);
|
||||
void FreeRibbonsSummaryScreen1(void);
|
||||
bool32 OpenRibbonsSummaryMenu(void);
|
||||
void CreateRibbonsSummaryLoopedTask(s32);
|
||||
u32 IsRibbonsSummaryLoopedTaskActive(void);
|
||||
void FreeRibbonsSummaryScreen2(void);
|
||||
|
||||
#endif // GUARD_POKENAV_H
|
||||
|
||||
@@ -8,10 +8,10 @@ struct TrainerHillTrainer
|
||||
u8 name[HILL_TRAINER_NAME_LENGTH];
|
||||
u8 facilityClass;
|
||||
u32 unused;
|
||||
u16 speechBefore[6];
|
||||
u16 speechWin[6];
|
||||
u16 speechLose[6];
|
||||
u16 speechAfter[6];
|
||||
u16 speechBefore[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
u16 speechWin[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
u16 speechLose[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
u16 speechAfter[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
struct BattleTowerPokemon mons[PARTY_SIZE];
|
||||
};
|
||||
|
||||
@@ -23,11 +23,19 @@ struct TrHillRoomTrainers
|
||||
|
||||
struct TrHillDisplay
|
||||
{
|
||||
u8 data[0x100];
|
||||
u16 unk3A0[16];
|
||||
u8 coords[2]; // x first 4 bits, y last 4 bits
|
||||
u8 direction; // array of 4 bits for each trainer
|
||||
u8 range; // array of 4 bits for each trainer
|
||||
// Metatile data. Add 0x200 to the values in this array to get metatiles.
|
||||
// This data then overwrites the metatiles in the map starting at (0,5)
|
||||
u8 metatileData[0x100];
|
||||
// Collision data. One bit for each tile in column-major order,
|
||||
// so every array entry is one row. 1 = impassable, 0 = passable
|
||||
u16 collisionData[16];
|
||||
// Trainer coordinates, starting at (0,6). Format is 0bYYYYXXXX.
|
||||
u8 coords[2];
|
||||
// Trainer facing directions. Same as (DIR_* - 1).
|
||||
// Effectively an array of nibbles, one for each trainer.
|
||||
u8 direction;
|
||||
// Trainer sight ranges. Effectively an array of nibbles, one for each trainer.
|
||||
u8 range;
|
||||
};
|
||||
|
||||
struct TrHillFloor
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
.include "../constants/gba_constants.inc"
|
||||
.include "../asm/macros/function.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
.set SOFT_RESET_DIRECT_BUF, 0x03007FFA
|
||||
.set USER_STACK, 0x03007F00
|
||||
.set RESET_EX_WRAM_FLAG, 0x1
|
||||
|
||||
.ifdef NO_GRANULAR_AGBSYSCALL
|
||||
@@ -109,7 +106,7 @@ SoundDriverVSyncOn:
|
||||
thumb_func_start Mod
|
||||
Mod:
|
||||
svc #6
|
||||
adds r0, r1, #0
|
||||
mov r0, r1
|
||||
bx lr
|
||||
thumb_func_end Mod
|
||||
.endif
|
||||
@@ -148,7 +145,7 @@ HuffUnComp:
|
||||
.endif
|
||||
|
||||
.ifdef L_SoftResetExram
|
||||
thumb_func_start SoftResetExram
|
||||
arm_func_start SoftResetExram
|
||||
SoftResetExram:
|
||||
ldr r3, =REG_IME
|
||||
movs r2, #0
|
||||
@@ -156,14 +153,14 @@ SoftResetExram:
|
||||
ldr r3, =SOFT_RESET_DIRECT_BUF
|
||||
movs r2, #1
|
||||
strb r2, [r3, #0]
|
||||
subs r3, #SOFT_RESET_DIRECT_BUF - USER_STACK
|
||||
subs r3, #SOFT_RESET_DIRECT_BUF - 0x3007f00
|
||||
mov sp, r3
|
||||
movs r2, #RESET_EX_WRAM_FLAG
|
||||
bics r0, r2
|
||||
svc #1
|
||||
svc #0
|
||||
.pool
|
||||
thumb_func_end SoftResetExram
|
||||
arm_func_end SoftResetExram
|
||||
.endif
|
||||
|
||||
.ifdef L_MusicPlayerFadeOut
|
||||
@@ -234,7 +231,7 @@ DivArm:
|
||||
thumb_func_start ModArm
|
||||
ModArm:
|
||||
svc #7
|
||||
adds r0, r1, #0
|
||||
mov r0, r1
|
||||
bx lr
|
||||
thumb_func_end ModArm
|
||||
.endif
|
||||
@@ -274,7 +271,7 @@ Diff8bitUnFilterWram:
|
||||
.ifdef L_MultiBoot
|
||||
thumb_func_start MultiBoot
|
||||
MultiBoot:
|
||||
movs r1, #1
|
||||
mov r1, #1
|
||||
svc #37
|
||||
bx lr
|
||||
thumb_func_end MultiBoot
|
||||
@@ -329,7 +326,7 @@ SoftResetRom:
|
||||
ldr r3, =SOFT_RESET_DIRECT_BUF
|
||||
movs r2, #0
|
||||
strb r2, [r3, #0]
|
||||
subs r3, #SOFT_RESET_DIRECT_BUF - USER_STACK
|
||||
sub r3, #SOFT_RESET_DIRECT_BUF - 0x3007f00
|
||||
mov sp, r3
|
||||
svc #1
|
||||
svc #0
|
||||
@@ -416,7 +413,7 @@ SoftReset:
|
||||
ldr r3, =REG_IME
|
||||
movs r2, #0
|
||||
strb r2, [r3, #0]
|
||||
ldr r1, =USER_STACK
|
||||
ldr r1, =0x3007f00
|
||||
mov sp, r1
|
||||
svc #1
|
||||
svc #0
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_glockenspiel::
|
||||
.incbin "sound/direct_sound_samples/sc88_glockenspiel.bin"
|
||||
DirectSoundWaveData_sc88pro_glockenspiel::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_glockenspiel.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_organ2::
|
||||
.incbin "sound/direct_sound_samples/sc88_organ2.bin"
|
||||
DirectSoundWaveData_sc88pro_organ2::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_organ2.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_fretless_bass::
|
||||
.incbin "sound/direct_sound_samples/sc88_fretless_bass.bin"
|
||||
DirectSoundWaveData_sc88pro_fretless_bass::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_fretless_bass.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_jv1080_slap_bass::
|
||||
.incbin "sound/direct_sound_samples/jv1080_slap_bass.bin"
|
||||
DirectSoundWaveData_sc88pro_slap_bass::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_slap_bass.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_synth_bass::
|
||||
.incbin "sound/direct_sound_samples/sc88_synth_bass.bin"
|
||||
DirectSoundWaveData_sc88pro_synth_bass::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_synth_bass.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_timpani::
|
||||
.incbin "sound/direct_sound_samples/sc88_timpani.bin"
|
||||
DirectSoundWaveData_sc88pro_timpani::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_timpani.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_classical_choir_voice_ahhs::
|
||||
@@ -35,44 +35,44 @@ DirectSoundWaveData_unused_sd90_oboe::
|
||||
.incbin "sound/direct_sound_samples/unused_sd90_oboe.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unused_electric_guitar::
|
||||
.incbin "sound/direct_sound_samples/unused_electric_guitar.bin"
|
||||
DirectSoundWaveData_unused_guitar_separates_power_chord::
|
||||
.incbin "sound/direct_sound_samples/unused_guitar_separates_power_chord.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unused_sc88_unison_slap::
|
||||
.incbin "sound/direct_sound_samples/unused_sc88_unison_slap.bin"
|
||||
DirectSoundWaveData_unused_sc88pro_unison_slap::
|
||||
.incbin "sound/direct_sound_samples/unused_sc88pro_unison_slap.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_snare::
|
||||
.incbin "sound/direct_sound_samples/unknown_snare.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_wood_block_low::
|
||||
.incbin "sound/direct_sound_samples/unknown_wood_block_low.bin"
|
||||
DirectSoundWaveData_ethnic_flavours_ohtsuzumi::
|
||||
.incbin "sound/direct_sound_samples/ethnic_flavours_ohtsuzumi.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_wood_block_high::
|
||||
.incbin "sound/direct_sound_samples/unknown_wood_block_high.bin"
|
||||
DirectSoundWaveData_ethnic_flavours_hyoushigi::
|
||||
.incbin "sound/direct_sound_samples/ethnic_flavours_hyoushigi.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_standard_kick::
|
||||
.incbin "sound/direct_sound_samples/sc88_standard_kick.bin"
|
||||
DirectSoundWaveData_sc88pro_rnd_kick::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_rnd_kick.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_standard3_snare::
|
||||
.incbin "sound/direct_sound_samples/sc88_standard3_snare.bin"
|
||||
DirectSoundWaveData_sc88pro_rnd_snare::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_rnd_snare.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_standard_hand_clap::
|
||||
.incbin "sound/direct_sound_samples/sc88_standard_hand_clap.bin"
|
||||
DirectSoundWaveData_sc88pro_tr909_hand_clap::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_tr909_hand_clap.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_orchestra_snare::
|
||||
.incbin "sound/direct_sound_samples/sc88_orchestra_snare.bin"
|
||||
DirectSoundWaveData_sc88pro_orchestra_snare::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_orchestra_snare.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_tom::
|
||||
.incbin "sound/direct_sound_samples/unknown_tom.bin"
|
||||
DirectSoundWaveData_unused_sc55_tom::
|
||||
.incbin "sound/direct_sound_samples/unused_sc55_tom.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_close_hihat::
|
||||
@@ -87,24 +87,24 @@ DirectSoundWaveData_unknown_bell::
|
||||
.incbin "sound/direct_sound_samples/unknown_bell.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_tambourine::
|
||||
.incbin "sound/direct_sound_samples/unknown_tambourine.bin"
|
||||
DirectSoundWaveData_sc88pro_tambourine::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_tambourine.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_trinity_cymbal_crash::
|
||||
.incbin "sound/direct_sound_samples/trinity_cymbal_crash.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_orchestra_cymbal_crash::
|
||||
.incbin "sound/direct_sound_samples/sc88_orchestra_cymbal_crash.bin"
|
||||
DirectSoundWaveData_sc88pro_orchestra_cymbal_crash::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_orchestra_cymbal_crash.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_bongo::
|
||||
.incbin "sound/direct_sound_samples/sc88_bongo.bin"
|
||||
DirectSoundWaveData_sc88pro_mute_high_conga::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_mute_high_conga.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_bongo_low::
|
||||
.incbin "sound/direct_sound_samples/sc88_bongo_low.bin"
|
||||
DirectSoundWaveData_sc88pro_open_low_conga::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_open_low_conga.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_drum_and_percussion_kick::
|
||||
@@ -123,96 +123,96 @@ DirectSoundWaveData_dance_drums_ride_bell::
|
||||
.incbin "sound/direct_sound_samples/dance_drums_ride_bell.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_cowbell::
|
||||
.incbin "sound/direct_sound_samples/unknown_cowbell.bin"
|
||||
DirectSoundWaveData_sd90_cowbell::
|
||||
.incbin "sound/direct_sound_samples/sd90_cowbell.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_djembe::
|
||||
.incbin "sound/direct_sound_samples/unknown_djembe.bin"
|
||||
DirectSoundWaveData_unused_heart_of_asia_indian_drum::
|
||||
.incbin "sound/direct_sound_samples/unused_heart_of_asia_indian_drum.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_anvil_high::
|
||||
.incbin "sound/direct_sound_samples/unknown_anvil_high.bin"
|
||||
DirectSoundWaveData_sd90_open_triangle::
|
||||
.incbin "sound/direct_sound_samples/sd90_open_triangle.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_standard_bells::
|
||||
.incbin "sound/direct_sound_samples/sc88_standard_bells.bin"
|
||||
DirectSoundWaveData_sc88pro_jingle_bell::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_jingle_bell.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_anvil_low::
|
||||
.incbin "sound/direct_sound_samples/unknown_anvil_low.bin"
|
||||
DirectSoundWaveData_ethnic_flavours_atarigane::
|
||||
.incbin "sound/direct_sound_samples/ethnic_flavours_atarigane.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_ethnic_drum::
|
||||
.incbin "sound/direct_sound_samples/unknown_ethnic_drum.bin"
|
||||
DirectSoundWaveData_sc88pro_taiko::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_taiko.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_tsuzumi::
|
||||
.incbin "sound/direct_sound_samples/unknown_tsuzumi.bin"
|
||||
DirectSoundWaveData_ethnic_flavours_kotsuzumi::
|
||||
.incbin "sound/direct_sound_samples/ethnic_flavours_kotsuzumi.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_piano1_48::
|
||||
.incbin "sound/direct_sound_samples/sc88_piano1_48.bin"
|
||||
DirectSoundWaveData_sc88pro_piano1_48::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_piano1_48.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_piano1_60::
|
||||
.incbin "sound/direct_sound_samples/sc88_piano1_60.bin"
|
||||
DirectSoundWaveData_sc88pro_piano1_60::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_piano1_60.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_piano1_72::
|
||||
.incbin "sound/direct_sound_samples/sc88_piano1_72.bin"
|
||||
DirectSoundWaveData_sc88pro_piano1_72::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_piano1_72.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_piano1_84::
|
||||
.incbin "sound/direct_sound_samples/sc88_piano1_84.bin"
|
||||
DirectSoundWaveData_sc88pro_piano1_84::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_piano1_84.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_string_ensemble_60::
|
||||
.incbin "sound/direct_sound_samples/sc88_string_ensemble_60.bin"
|
||||
DirectSoundWaveData_sc88pro_string_ensemble_60::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_string_ensemble_60.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_string_ensemble_72::
|
||||
.incbin "sound/direct_sound_samples/sc88_string_ensemble_72.bin"
|
||||
DirectSoundWaveData_sc88pro_string_ensemble_72::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_string_ensemble_72.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_string_ensemble_84::
|
||||
.incbin "sound/direct_sound_samples/sc88_string_ensemble_84.bin"
|
||||
DirectSoundWaveData_sc88pro_string_ensemble_84::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_string_ensemble_84.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_trumpet_60::
|
||||
.incbin "sound/direct_sound_samples/sc88_trumpet_60.bin"
|
||||
DirectSoundWaveData_sc88pro_trumpet_60::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_trumpet_60.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_trumpet_72::
|
||||
.incbin "sound/direct_sound_samples/sc88_trumpet_72.bin"
|
||||
DirectSoundWaveData_sc88pro_trumpet_72::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_trumpet_72.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_trumpet_84::
|
||||
.incbin "sound/direct_sound_samples/sc88_trumpet_84.bin"
|
||||
DirectSoundWaveData_sc88pro_trumpet_84::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_trumpet_84.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_trombone_39::
|
||||
.incbin "sound/direct_sound_samples/unknown_trombone_39.bin"
|
||||
DirectSoundWaveData_sc88pro_tuba_39:: @N.B.: These tuba samples are actually sampled at 36 and 48, then pitched up
|
||||
.incbin "sound/direct_sound_samples/sc88pro_tuba_39.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_trombone_51::
|
||||
.incbin "sound/direct_sound_samples/unknown_trombone_51.bin"
|
||||
DirectSoundWaveData_sc88pro_tuba_51::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_tuba_51.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_french_horn_60::
|
||||
.incbin "sound/direct_sound_samples/sc88_french_horn_60.bin"
|
||||
DirectSoundWaveData_sc88pro_french_horn_60::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_french_horn_60.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_french_horn_72::
|
||||
.incbin "sound/direct_sound_samples/sc88_french_horn_72.bin"
|
||||
DirectSoundWaveData_sc88pro_french_horn_72::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_french_horn_72.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_flute::
|
||||
.incbin "sound/direct_sound_samples/sc88_flute.bin"
|
||||
DirectSoundWaveData_sc88pro_flute::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_flute.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_pick_bass::
|
||||
.incbin "sound/direct_sound_samples/sc88_pick_bass.bin"
|
||||
DirectSoundWaveData_sc88pro_fingered_bass::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_fingered_bass.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_koto_high::
|
||||
@@ -243,12 +243,12 @@ DirectSoundWaveData_heart_of_asia_gamelan::
|
||||
.incbin "sound/direct_sound_samples/heart_of_asia_gamelan.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_church_organ::
|
||||
.incbin "sound/direct_sound_samples/unknown_church_organ.bin"
|
||||
DirectSoundWaveData_sc88pro_church_organ3_low::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_church_organ3_low.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_emu_ii_pipe_organ::
|
||||
.incbin "sound/direct_sound_samples/emu_ii_pipe_organ.bin"
|
||||
DirectSoundWaveData_sc88pro_church_organ3_high::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_church_organ3_high.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_female_voice::
|
||||
@@ -267,16 +267,16 @@ DirectSoundWaveData_sd90_classical_detuned_ep1_high::
|
||||
.incbin "sound/direct_sound_samples/sd90_classical_detuned_ep1_high.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_timpani_with_snare::
|
||||
.incbin "sound/direct_sound_samples/sc88_timpani_with_snare.bin"
|
||||
DirectSoundWaveData_sc88pro_timpani_with_snare::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_timpani_with_snare.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_synth_snare::
|
||||
.incbin "sound/direct_sound_samples/unknown_synth_snare.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_square_wave::
|
||||
.incbin "sound/direct_sound_samples/sc88_square_wave.bin"
|
||||
DirectSoundWaveData_sc88pro_square_wave::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_square_wave.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_bicycle_bell::
|
||||
@@ -287,8 +287,8 @@ DirectSoundWaveData_8725A2C::
|
||||
.incbin "sound/direct_sound_samples/8725A2C.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_pizzicato_strings::
|
||||
.incbin "sound/direct_sound_samples/sc88_pizzicato_strings.bin"
|
||||
DirectSoundWaveData_sc88pro_pizzicato_strings::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_pizzicato_strings.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_872762C::
|
||||
@@ -303,12 +303,12 @@ DirectSoundWaveData_872A5D0::
|
||||
.incbin "sound/direct_sound_samples/872A5D0.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_wind::
|
||||
.incbin "sound/direct_sound_samples/sc88_wind.bin"
|
||||
DirectSoundWaveData_sc88pro_wind::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_wind.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_bubbles::
|
||||
.incbin "sound/direct_sound_samples/sc88_bubbles.bin"
|
||||
DirectSoundWaveData_sc88pro_bubbles::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_bubbles.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_872EEA8::
|
||||
@@ -319,8 +319,8 @@ DirectSoundWaveData_87301B0::
|
||||
.incbin "sound/direct_sound_samples/87301B0.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unused_acid_bass::
|
||||
.incbin "sound/direct_sound_samples/unused_acid_bass.bin"
|
||||
DirectSoundWaveData_trinity_30303_mega_bass::
|
||||
.incbin "sound/direct_sound_samples/trinity_30303_mega_bass.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_8734298::
|
||||
@@ -331,24 +331,24 @@ DirectSoundWaveData_87364A8::
|
||||
.incbin "sound/direct_sound_samples/87364A8.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_tubular_bell::
|
||||
.incbin "sound/direct_sound_samples/sc88_tubular_bell.bin"
|
||||
DirectSoundWaveData_sc88pro_tubular_bell::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_tubular_bell.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_87385E4::
|
||||
.incbin "sound/direct_sound_samples/87385E4.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_unknown_polysynth::
|
||||
.incbin "sound/direct_sound_samples/unknown_polysynth.bin"
|
||||
DirectSoundWaveData_trinity_big_boned::
|
||||
.incbin "sound/direct_sound_samples/trinity_big_boned.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_harp::
|
||||
.incbin "sound/direct_sound_samples/sc88_harp.bin"
|
||||
DirectSoundWaveData_sc88pro_harp::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_harp.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_xylophone::
|
||||
.incbin "sound/direct_sound_samples/sc88_xylophone.bin"
|
||||
DirectSoundWaveData_sc88pro_xylophone::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_xylophone.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_873ECD8::
|
||||
@@ -359,8 +359,8 @@ DirectSoundWaveData_8740818::
|
||||
.incbin "sound/direct_sound_samples/8740818.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_accordion::
|
||||
.incbin "sound/direct_sound_samples/sc88_accordion.bin"
|
||||
DirectSoundWaveData_sc88pro_accordion::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_accordion.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_87424B0::
|
||||
@@ -1947,8 +1947,8 @@ DirectSoundWaveData_88D6978::
|
||||
.incbin "sound/direct_sound_samples/88D6978.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_nylon_str_guitar::
|
||||
.incbin "sound/direct_sound_samples/sc88_nylon_str_guitar.bin"
|
||||
DirectSoundWaveData_sc88pro_nylon_str_guitar::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_nylon_str_guitar.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sd90_special_scream_drive::
|
||||
@@ -2159,8 +2159,8 @@ DirectSoundWaveData_88F6498::
|
||||
.incbin "sound/direct_sound_samples/88F6498.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_sc88_accordion_duplicate::
|
||||
.incbin "sound/direct_sound_samples/sc88_accordion_duplicate.bin"
|
||||
DirectSoundWaveData_sc88pro_accordion_duplicate::
|
||||
.incbin "sound/direct_sound_samples/sc88pro_accordion_duplicate.bin"
|
||||
|
||||
.align 2
|
||||
DirectSoundWaveData_steinway_b_piano::
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user