Merge pull request #1616 from GriffinRichards/missing-req

Add missing :req, remove old macros
This commit is contained in:
GriffinR 2022-02-02 22:09:36 -05:00 committed by GitHub
commit 7d2344c07b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 114 additions and 300 deletions

View File

@ -1,8 +1,6 @@
.include "asm/macros/asm.inc" .include "asm/macros/asm.inc"
.include "asm/macros/function.inc" .include "asm/macros/function.inc"
.include "asm/macros/movement.inc" .include "asm/macros/movement.inc"
.include "asm/macros/window.inc"
.include "asm/macros/pokemon_data.inc"
.include "asm/macros/map.inc" .include "asm/macros/map.inc"
.include "asm/macros/field_effect_script.inc" .include "asm/macros/field_effect_script.inc"
.include "asm/macros/trainer_hill.inc" .include "asm/macros/trainer_hill.inc"
@ -16,130 +14,3 @@
.include "asm/macros/battle_frontier/battle_pyramid.inc" .include "asm/macros/battle_frontier/battle_pyramid.inc"
.include "asm/macros/battle_frontier/battle_tower.inc" .include "asm/macros/battle_frontier/battle_tower.inc"
.include "asm/macros/battle_frontier/frontier_util.inc" .include "asm/macros/battle_frontier/frontier_util.inc"
.macro region_map_entry x, y, width, height, name
.byte \x
.byte \y
.byte \width
.byte \height
.4byte gMapName_\name
.endm
.macro obj_tiles address, uncompressed_size, tag = 0
.4byte \address
.2byte \uncompressed_size
.2byte \tag
.endm
.macro null_obj_tiles
obj_tiles 0, 0, 0
.endm
.macro obj_pal address, tag
.4byte \address
.2byte \tag
.2byte 0@ padding
.endm
.macro null_obj_pal
obj_pal 0, 0
.endm
.macro paired_pals tag, address
.2byte \tag
.2byte 0 @ padding
.4byte \address
.endm
@ For object animation frames.
.macro obj_frame_tiles address, uncompressed_size
.4byte \address
.2byte \uncompressed_size
.2byte 0 @ padding
.endm
.macro spr_template tile_tag, pal_tag, oam, anims, images, affine_anims, callback
.2byte \tile_tag
.2byte \pal_tag
.4byte \oam
.4byte \anims
.4byte \images
.4byte \affine_anims
.4byte \callback
.endm
@ Berry trees have a table defining the palette slot used for each of their 5
@ stages. However, the first 2 stages always use the same slots regardless of
@ the type of tree and the slots of the last 3 stages always equal each other.
.macro berry_tree_palette_slot_table slot
.byte 3, 4, \slot, \slot, \slot
.endm
.macro subsprite x, y, priority, tile_num_offset, size
.byte \x
.byte \y
.2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size
.endm
.macro obj_image_anim_frame pic_id, duration, flags = 0
.2byte \pic_id
.byte (\flags) | (\duration)
.byte 0 @ padding
.endm
.macro obj_image_anim_loop count
.2byte 0xfffd
.byte \count
.byte 0 @ padding
.endm
.macro obj_image_anim_jump target_index
.2byte 0xfffe
.byte \target_index
.byte 0 @ padding
.endm
.macro obj_image_anim_end
.2byte 0xffff
.2byte 0 @ padding
.endm
.macro obj_rot_scal_anim_frame delta_x_scale, delta_y_scale, delta_angle, duration
.2byte \delta_x_scale
.2byte \delta_y_scale
.byte \delta_angle
.byte \duration
.2byte 0 @ padding
.endm
.macro obj_rot_scal_anim_loop count
.2byte 0x7ffd
.2byte \count
.4byte 0 @ padding
.endm
.macro obj_rot_scal_anim_jump target_index
.2byte 0x7ffe
.2byte \target_index
.4byte 0 @ padding
.endm
.macro obj_rot_scal_anim_end unknown=0
.2byte 0x7fff
.2byte \unknown
.fill 4 @ padding
.endm
.macro door_anim_frame unknown, offset
.byte \unknown
.byte 0 @ padding
.2byte \offset
.endm
.macro door_anim_gfx metatile_num, unknown, unknown2, tile_addr, palette_addr
.2byte \metatile_num
.byte \unknown
.byte \unknown2
.4byte \tile_addr
.4byte \palette_addr
.endm

View File

@ -1,4 +1,4 @@
.macro inc x .macro inc x:req
.set \x, \x + 1 .set \x, \x + 1
.endm .endm
@ -6,7 +6,7 @@
.set __enum__, \x .set __enum__, \x
.endm .endm
.macro enum constant .macro enum constant:req
.equiv \constant, __enum__ .equiv \constant, __enum__
inc __enum__ inc __enum__
.endm .endm

View File

@ -1,19 +1,21 @@
.macro field_eff_loadtiles address @ The first .byte argument of each macro below is an index into gFieldEffectScriptFuncs
.macro field_eff_loadtiles address:req
.byte 0 .byte 0
.4byte \address .4byte \address
.endm .endm
.macro field_eff_loadfadedpal address .macro field_eff_loadfadedpal address:req
.byte 1 .byte 1
.4byte \address .4byte \address
.endm .endm
.macro field_eff_loadpal address .macro field_eff_loadpal address:req
.byte 2 .byte 2
.4byte \address .4byte \address
.endm .endm
.macro field_eff_callnative address .macro field_eff_callnative address:req
.byte 3 .byte 3
.4byte \address .4byte \address
.endm .endm
@ -22,20 +24,20 @@
.byte 4 .byte 4
.endm .endm
.macro field_eff_loadgfx_callnative tiles_address, palette_address, function_address .macro field_eff_loadgfx_callnative tiles_address:req, palette_address:req, function_address:req
.byte 5 .byte 5
.4byte \tiles_address .4byte \tiles_address
.4byte \palette_address .4byte \palette_address
.4byte \function_address .4byte \function_address
.endm .endm
.macro field_eff_loadtiles_callnative tiles_address, function_address .macro field_eff_loadtiles_callnative tiles_address:req, function_address:req
.byte 6 .byte 6
.4byte \tiles_address .4byte \tiles_address
.4byte \function_address .4byte \function_address
.endm .endm
.macro field_eff_loadfadedpal_callnative palette_address, function_address .macro field_eff_loadfadedpal_callnative palette_address:req, function_address:req
.byte 7 .byte 7
.4byte \palette_address .4byte \palette_address
.4byte \function_address .4byte \function_address

View File

@ -1,15 +1,15 @@
.macro arm_func_start name .macro arm_func_start name:req
.align 2, 0 .align 2, 0
.global \name .global \name
.arm .arm
.type \name, %function .type \name, %function
.endm .endm
.macro arm_func_end name .macro arm_func_end name:req
.size \name, .-\name .size \name, .-\name
.endm .endm
.macro thumb_func_start name .macro thumb_func_start name:req
.align 2, 0 .align 2, 0
.global \name .global \name
.thumb .thumb
@ -17,13 +17,13 @@
.type \name, %function .type \name, %function
.endm .endm
.macro non_word_aligned_thumb_func_start name .macro non_word_aligned_thumb_func_start name:req
.global \name .global \name
.thumb .thumb
.thumb_func .thumb_func
.type \name, %function .type \name, %function
.endm .endm
.macro thumb_func_end name .macro thumb_func_end name:req
.size \name, .-\name .size \name, .-\name
.endm .endm

View File

@ -1,13 +1,13 @@
.macro song label, music_player, unknown .macro song label:req, music_player:req, unknown:req
.4byte \label .4byte \label
.2byte \music_player .2byte \music_player
.2byte \unknown .2byte \unknown
.endm .endm
.macro music_player info_struct, track_struct, unknown_1, unknown_2 .macro music_player info_struct:req, track_struct:req, num_tracks:req, unknown:req
.4byte \info_struct .4byte \info_struct
.4byte \track_struct .4byte \track_struct
.byte \unknown_1 .byte \num_tracks
.space 1 .space 1 @ Padding
.2byte \unknown_2 .2byte \unknown
.endm .endm

View File

@ -1,83 +1,110 @@
.macro map map_id @ Most of the macros in this file are for arranging map event data, and are output by mapjson using data from each map's JSON file.
@ Takes a MAP constant and outputs the map group and map number as separate bytes
.macro map map_id:req
.byte \map_id >> 8 @ map group .byte \map_id >> 8 @ map group
.byte \map_id & 0xFF @ map num .byte \map_id & 0xFF @ map num
.endm .endm
.macro map_script type, address @ Defines a map script. 'type' is any MAP_SCRIPT_* constant (see include/constants/map_scripts.h)
.macro map_script type:req, script:req
.byte \type .byte \type
.4byte \address .4byte \script
.endm .endm
.macro map_script_2 word1, word2, address @ Defines an entry in a map script table (for either ON_WARP_INTO_MAP_TABLE or ON_FRAME_TABLE)
.2byte \word1 .macro map_script_2 var:req, compare:req, script:req
.2byte \word2 .2byte \var
.4byte \address .2byte \compare
.4byte \script
.endm .endm
.macro object_event index:req, gfx:req, replacement:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req @ Defines an object event template for map data. Mirrors the struct layout of ObjectEventTemplate in include/global.fieldmap.h
.byte \index, \gfx, \replacement, 0 .macro object_event index:req, gfx:req, inConnection:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req
.2byte \x .byte \index
.2byte \y .byte \gfx
.byte \elevation, \movement_type, ((\y_radius << 4) | \x_radius), 0 .byte \inConnection
.2byte \trainer_type, \sight_radius_tree_etc .space 1 @ Padding
.2byte \x, \y
.byte \elevation
.byte \movement_type
.byte ((\y_radius << 4) | \x_radius)
.space 1 @ Padding
.2byte \trainer_type
.2byte \sight_radius_tree_etc
.4byte \script .4byte \script
.2byte \event_flag .2byte \event_flag
.2byte 0 .space 2 @ Padding
inc _num_npcs inc _num_npcs
.endm .endm
.macro warp_def x, y, byte, warp, map_id @ Defines a warp event for map data. Mirrors the struct layout of WarpEvent in include/global.fieldmap.h
.macro warp_def x:req, y:req, elevation:req, warpId:req, map_id:req
.2byte \x, \y .2byte \x, \y
.byte \byte, \warp .byte \elevation
.byte \warpId
.byte \map_id & 0xFF @ map num .byte \map_id & 0xFF @ map num
.byte \map_id >> 8 @ map group .byte \map_id >> 8 @ map group
inc _num_warps inc _num_warps
.endm .endm
.macro coord_event x, y, elevation, trigger, index, script @ Defines a coord event for map data. Mirrors the struct layout of CoordEvent in include/global.fieldmap.h
.macro coord_event x:req, y:req, elevation:req, trigger:req, index:req, script:req
.2byte \x, \y .2byte \x, \y
.byte \elevation, 0 .byte \elevation
.2byte \trigger, \index, 0 .space 1 @ Padding
.2byte \trigger
.2byte \index
.space 2 @ Padding
.4byte \script .4byte \script
inc _num_traps inc _num_traps
.endm .endm
.macro coord_weather_event x, y, elevation, weather @ Defines a weather coord event for map data. Any coord event is treated as a weather coord event if its script is NULL
.2byte \x, \y .macro coord_weather_event x:req, y:req, elevation:req, weather:req
.byte \elevation, 0 coord_event \x, \y, \elevation, \weather, 0, NULL
.2byte \weather
.2byte 0, 0
.4byte 0
inc _num_traps
.endm .endm
.macro bg_event x, y, elevation, kind, arg6, arg7 @ Defines a generic background event for map data. Mirrors the struct layout of BgEvent in include/global.fieldmap.h
@ 'kind' is any BG_EVENT_* constant (see include/constants/event_bg.h).
@ 'arg6' and 'arg7' are used differently depending on the bg event type. See macros below
.macro bg_event x:req, y:req, elevation:req, kind:req, arg6:req, arg7
.2byte \x, \y .2byte \x, \y
.byte \elevation, \kind .byte \elevation
.2byte 0 .byte \kind
.space 2 @ Padding
.if \kind != BG_EVENT_HIDDEN_ITEM .if \kind != BG_EVENT_HIDDEN_ITEM
.4byte \arg6 .4byte \arg6
.else .else
.2byte \arg6 .2byte \arg6
.2byte \arg7 .2byte \arg7
.endif .endif
inc _num_signs inc _num_signs
.endm .endm
.macro bg_hidden_item_event x, y, height, item, flag @ Defines a background sign event for map data. 'facing_dir' is any of the BG_EVENT_PLAYER_FACING_* constants (see include/constants/event_bg.h)
bg_event \x, \y, \height, BG_EVENT_HIDDEN_ITEM, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START) .macro bg_sign_event x:req, y:req, elevation:req, facing_dir:req, script:req
bg_event \x, \y, \elevation, \facing_dir, \script
.endm .endm
.macro bg_secret_base_event x, y, height, secret_base_id @ Defines a background hidden item event for map data
bg_event \x, \y, \height, BG_EVENT_SECRET_BASE, \secret_base_id .macro bg_hidden_item_event x:req, y:req, elevation:req, item:req, flag:req
bg_event \x, \y, \elevation, BG_EVENT_HIDDEN_ITEM, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START)
.endm .endm
.macro map_events npcs, warps, traps, signs @ Defines a background secret base event for map data
.macro bg_secret_base_event x:req, y:req, elevation:req, secret_base_id:req
bg_event \x, \y, \elevation, BG_EVENT_SECRET_BASE, \secret_base_id
.endm
@ Defines the table of event data for a map. Mirrors the struct layout of MapEvents in include/global.fieldmap.h
.macro map_events npcs:req, warps:req, traps:req, signs:req
.byte _num_npcs, _num_warps, _num_traps, _num_signs .byte _num_npcs, _num_warps, _num_traps, _num_signs
.4byte \npcs, \warps, \traps, \signs .4byte \npcs, \warps, \traps, \signs
reset_map_events reset_map_events
.endm .endm
@ Resets the event counters used to track how many events a map has. Run when the events table is created by map_events
.macro reset_map_events .macro reset_map_events
.set _num_npcs, 0 .set _num_npcs, 0
.set _num_warps, 0 .set _num_warps, 0
@ -85,23 +112,29 @@
.set _num_signs, 0 .set _num_signs, 0
.endm .endm
@ Initialize the event counters for the first map
reset_map_events reset_map_events
.equiv connection_down, 1 @ Directions for connecting maps
.equiv connection_up, 2 @ The map.json files will only have e.g. "down" as direction data, and this will be appended to "connection_" by the connection macro
.equiv connection_left, 3 .equiv connection_down, CONNECTION_SOUTH
.equiv connection_right, 4 .equiv connection_up, CONNECTION_NORTH
.equiv connection_dive, 5 .equiv connection_left, CONNECTION_WEST
.equiv connection_emerge, 6 .equiv connection_right, CONNECTION_EAST
.equiv connection_dive, CONNECTION_DIVE
.equiv connection_emerge, CONNECTION_EMERGE
.macro connection direction, offset, map @ Defines a map connection. Mirrors the struct layout of MapConnection in include/global.fieldmap.h
.4byte connection_\direction .macro connection direction:req, offset:req, map:req
.byte connection_\direction
.space 3 @ Padding
.4byte \offset .4byte \offset
map \map map \map
.space 2 .space 2 @ Padding
.endm .endm
@ Defines the flags for a map header. Mirrors the layout of the bitfield in struct MapHeader in include/global.fieldmap.h
.macro map_header_flags allow_cycling:req, allow_escaping:req, allow_running:req, show_map_name:req .macro map_header_flags allow_cycling:req, allow_escaping:req, allow_running:req, show_map_name:req
.byte ((\show_map_name & 1) << 3) | ((\allow_running & 1) << 2) | ((\allow_escaping & 1) << 1) | \allow_cycling .byte ((\show_map_name & 1) << 3) | ((\allow_running & 1) << 2) | ((\allow_escaping & 1) << 1) | \allow_cycling
.endm .endm

View File

@ -1,56 +0,0 @@
.macro pokedex_entry height, width, text_pointer, pokemon_scale, pokemon_offset, trainer_scale, trainer_offset
.2byte \height @ in decimeters
.2byte \width @ in hectograms
.4byte \text_pointer
.2byte 0 @ unused
.2byte \pokemon_scale
.2byte \pokemon_offset
.2byte \trainer_scale
.2byte \trainer_offset
.2byte 0 @ padding
.endm
.macro base_stats hp, attack, defense, speed, sp_attack, sp_defense
.byte \hp
.byte \attack
.byte \defense
.byte \speed
.byte \sp_attack
.byte \sp_defense
.endm
.macro ev_yield hp, attack, defense, speed, sp_attack, sp_defense
.2byte (\sp_defense << 10) | (\sp_attack << 8) | (\speed << 6) | (\defense << 4) | (\attack << 2) | \hp
.endm
.macro level_up_move level, move
.2byte (\level << 9) | \move
.endm
.macro evo_entry method, parameter, target_species
.2byte \method
.2byte \parameter
.2byte \target_species
.2byte 0 @ padding
.endm
.macro empty_evo_entries count
.fill 8 * \count, 1, 0
.endm
.macro egg_moves_begin species
.2byte 20000 + \species
.endm
@ If the min level equals the max level, only one level argument is needed.
.macro wild_mon species, min_level, max_level
.byte \min_level
.ifb \max_level
.byte \min_level
.else
.byte \max_level
.endif
.2byte \species
.endm

View File

@ -1,35 +0,0 @@
.macro window_template bg_id, x, y, width, height, palette, vram_tile_offset
.byte \bg_id
.byte \x
.byte \y
.byte \width
.byte \height
.byte \palette
.2byte \vram_tile_offset
.endm
.macro null_window_template
window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000
.endm
.macro glyph_width_func font_id, func
.4byte \font_id
.4byte \func
.endm
.macro keypad_icon tile_offset, width, height
.2byte \tile_offset
.byte \width
.byte \height
.endm
.macro font_info func, max_glyph_width, glyph_height, glyph_spacing, line_spacing, text_color, shadow_color, bg_color
.4byte \func
.byte \max_glyph_width
.byte \glyph_height
.byte \glyph_spacing
.byte \line_spacing
.byte \text_color << 4 @ low nybble seems unused
.byte (\shadow_color << 4) | \bg_color
.2byte 0 @ padding
.endm

View File

@ -1,3 +1,4 @@
#include "constants/global.h"
#include "constants/event_bg.h" #include "constants/event_bg.h"
#include "constants/event_object_movement.h" #include "constants/event_object_movement.h"
#include "constants/event_objects.h" #include "constants/event_objects.h"

View File

@ -1,3 +1,4 @@
#include "constants/global.h"
#include "constants/layouts.h" #include "constants/layouts.h"
#include "constants/map_types.h" #include "constants/map_types.h"
#include "constants/maps.h" #include "constants/maps.h"

View File

@ -138,4 +138,13 @@
#define DIR_NORTHWEST 7 #define DIR_NORTHWEST 7
#define DIR_NORTHEAST 8 #define DIR_NORTHEAST 8
#define CONNECTION_INVALID -1
#define CONNECTION_NONE 0
#define CONNECTION_SOUTH 1
#define CONNECTION_NORTH 2
#define CONNECTION_WEST 3
#define CONNECTION_EAST 4
#define CONNECTION_DIVE 5
#define CONNECTION_EMERGE 6
#endif // GUARD_CONSTANTS_GLOBAL_H #endif // GUARD_CONSTANTS_GLOBAL_H

View File

@ -349,7 +349,7 @@ struct MusicPlayer
{ {
struct MusicPlayerInfo *info; struct MusicPlayerInfo *info;
struct MusicPlayerTrack *track; struct MusicPlayerTrack *track;
u8 unk_8; u8 numTracks;
u16 unk_A; u16 unk_A;
}; };

View File

@ -33,18 +33,6 @@ enum {
// for constructing large tiles, such as the Battle Pike's curtain tile. // for constructing large tiles, such as the Battle Pike's curtain tile.
#define METATILE_ROW_WIDTH 8 #define METATILE_ROW_WIDTH 8
enum
{
CONNECTION_INVALID = -1,
CONNECTION_NONE,
CONNECTION_SOUTH,
CONNECTION_NORTH,
CONNECTION_WEST,
CONNECTION_EAST,
CONNECTION_DIVE,
CONNECTION_EMERGE
};
typedef void (*TilesetCB)(void); typedef void (*TilesetCB)(void);
struct Tileset struct Tileset

View File

@ -83,7 +83,7 @@ void m4aSoundInit(void)
for (i = 0; i < NUM_MUSIC_PLAYERS; i++) for (i = 0; i < NUM_MUSIC_PLAYERS; i++)
{ {
struct MusicPlayerInfo *mplayInfo = gMPlayTable[i].info; struct MusicPlayerInfo *mplayInfo = gMPlayTable[i].info;
MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].unk_8); MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].numTracks);
mplayInfo->unk_B = gMPlayTable[i].unk_A; mplayInfo->unk_B = gMPlayTable[i].unk_A;
mplayInfo->memAccArea = gMPlayMemAccArea; mplayInfo->memAccArea = gMPlayMemAccArea;
} }

View File

@ -230,7 +230,7 @@ string generate_map_events_text(Json map_data) {
text << bgs_label << ":\n"; text << bgs_label << ":\n";
for (auto &bg_event : map_data["bg_events"].array_items()) { for (auto &bg_event : map_data["bg_events"].array_items()) {
if (bg_event["type"] == "sign") { if (bg_event["type"] == "sign") {
text << "\tbg_event " text << "\tbg_sign_event "
<< bg_event["x"].int_value() << ", " << bg_event["x"].int_value() << ", "
<< bg_event["y"].int_value() << ", " << bg_event["y"].int_value() << ", "
<< bg_event["elevation"].int_value() << ", " << bg_event["elevation"].int_value() << ", "