mirror of https://github.com/zeldaret/mm.git
				
				
				
			
		
			
				
	
	
		
			223 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			C
		
	
	
	
| #ifndef MESSAGE_DATA_FMT_NES_H
 | |
| #define MESSAGE_DATA_FMT_NES_H
 | |
| 
 | |
| #include "sfx.h" // For sfx ids
 | |
| /*
 | |
|  * Text control characters
 | |
|  */
 | |
| 
 | |
| #define MESSAGE_COLOR_DEFAULT 0x00
 | |
| #define MESSAGE_COLOR_RED 0x01
 | |
| #define MESSAGE_COLOR_GREEN 0x02
 | |
| #define MESSAGE_COLOR_BLUE 0x03
 | |
| #define MESSAGE_COLOR_YELLOW 0x04
 | |
| #define MESSAGE_COLOR_LIGHTBLUE 0x05
 | |
| #define MESSAGE_COLOR_PINK 0x06
 | |
| #define MESSAGE_COLOR_SILVER 0x07
 | |
| #define MESSAGE_COLOR_ORANGE 0x08
 | |
| #define MESSAGE_TEXT_SPEED 0x0A // Note this should take an arg 0 to 6, but always just sets next decode char as 0
 | |
| #define MESSAGE_HS_BOAT_ARCHERY 0x0B
 | |
| #define MESSAGE_STRAY_FAIRIES 0x0C
 | |
| #define MESSAGE_TOKENS 0x0D
 | |
| #define MESSAGE_POINTS_TENS 0x0E
 | |
| #define MESSAGE_POINTS_THOUSANDS 0x0F
 | |
| #define MESSAGE_BOX_BREAK 0x10
 | |
| #define MESSAGE_NEWLINE 0x11
 | |
| #define MESSAGE_BOX_BREAK2 0x12
 | |
| #define MESSAGE_CARRIAGE_RETURN 0x13
 | |
| #define MESSAGE_SHIFT 0x14
 | |
| #define MESSAGE_CONTINUE 0x15
 | |
| #define MESSAGE_NAME 0x16
 | |
| #define MESSAGE_QUICKTEXT_ENABLE 0x17
 | |
| #define MESSAGE_QUICKTEXT_DISABLE 0x18
 | |
| #define MESSAGE_EVENT 0x19
 | |
| #define MESSAGE_PERSISTENT 0x1A
 | |
| #define MESSAGE_BOX_BREAK_DELAYED 0x1B
 | |
| #define MESSAGE_FADE 0x1C
 | |
| #define MESSAGE_FADE_SKIPPABLE 0x1D
 | |
| #define MESSAGE_SFX 0x1E
 | |
| #define MESSAGE_DELAY 0x1F
 | |
| #define MESSAGE_BTN_A 0xB0
 | |
| #define MESSAGE_BTN_B 0xB1
 | |
| #define MESSAGE_BTN_C 0xB2
 | |
| #define MESSAGE_BTN_L 0xB3
 | |
| #define MESSAGE_BTN_R 0xB4
 | |
| #define MESSAGE_BTN_Z 0xB5
 | |
| #define MESSAGE_BTN_CUP 0xB6
 | |
| #define MESSAGE_BTN_CDOWN 0xB7
 | |
| #define MESSAGE_BTN_CLEFT 0xB8
 | |
| #define MESSAGE_BTN_CRIGHT 0xB9
 | |
| #define MESSAGE_Z_TARGET 0xBA
 | |
| #define MESSAGE_CONTROL_PAD 0xBB
 | |
| #define MESSAGE_END 0xBF
 | |
| #define MESSAGE_BACKGROUND 0xC1
 | |
| #define MESSAGE_TWO_CHOICE 0xC2
 | |
| #define MESSAGE_THREE_CHOICE 0xC3
 | |
| #define MESSAGE_TIMER_POSTMAN 0xC4
 | |
| #define MESSAGE_TIMER_MINIGAME_1 0xC5
 | |
| #define MESSAGE_TIMER_2 0xC6
 | |
| #define MESSAGE_TIMER_MOON_CRASH 0xC7
 | |
| #define MESSAGE_TIMER_MINIGAME_2 0xC8
 | |
| #define MESSAGE_TIMER_ENV_HAZARD 0xC9
 | |
| #define MESSAGE_TIME 0xCA
 | |
| #define MESSAGE_CHEST_FLAGS 0xCB
 | |
| #define MESSAGE_INPUT_BANK 0xCC
 | |
| #define MESSAGE_RUPEES_SELECTED 0xCD
 | |
| #define MESSAGE_RUPEES_TOTAL 0xCE
 | |
| #define MESSAGE_TIME_UNTIL_MOON_CRASH 0xCF
 | |
| #define MESSAGE_INPUT_DOGGY_RACETRACK_BET 0xD0
 | |
| #define MESSAGE_INPUT_BOMBER_CODE 0xD1
 | |
| #define MESSAGE_PAUSE_MENU 0xD2
 | |
| #define MESSAGE_TIME_SPEED 0xD3
 | |
| #define MESSAGE_OWL_WARP 0xD4
 | |
| #define MESSAGE_INPUT_LOTTERY_CODE 0xD5
 | |
| #define MESSAGE_SPIDER_HOUSE_MASK_CODE 0xD6
 | |
| #define MESSAGE_STRAY_FAIRIES_LEFT_WOODFALL 0xD7
 | |
| #define MESSAGE_STRAY_FAIRIES_LEFT_SNOWHEAD 0xD8
 | |
| #define MESSAGE_STRAY_FAIRIES_LEFT_GREAT_BAY 0xD9
 | |
| #define MESSAGE_STRAY_FAIRIES_LEFT_STONE_TOWER 0xDA
 | |
| #define MESSAGE_POINTS_BOAT_ARCHERY 0xDB // Seems to be the exact same as CTRL_POINTS_THOUSANDS
 | |
| #define MESSAGE_LOTTERY_CODE 0xDC
 | |
| #define MESSAGE_LOTTERY_CODE_GUESS 0xDD
 | |
| #define MESSAGE_HELD_ITEM_PRICE 0xDE
 | |
| #define MESSAGE_BOMBER_CODE 0xDF
 | |
| #define MESSAGE_EVENT2 0xE0 // Seems to be the exact same as CTRL_EVENT
 | |
| #define MESSAGE_SPIDER_HOUSE_MASK_CODE_1 0xE1
 | |
| #define MESSAGE_SPIDER_HOUSE_MASK_CODE_2 0xE2
 | |
| #define MESSAGE_SPIDER_HOUSE_MASK_CODE_3 0xE3
 | |
| #define MESSAGE_SPIDER_HOUSE_MASK_CODE_4 0xE4
 | |
| #define MESSAGE_SPIDER_HOUSE_MASK_CODE_5 0xE5
 | |
| #define MESSAGE_SPIDER_HOUSE_MASK_CODE_6 0xE6
 | |
| #define MESSAGE_HOURS_UNTIL_MOON_CRASH 0xE7
 | |
| #define MESSAGE_TIME_UNTIL_NEW_DAY 0xE8
 | |
| #define MESSAGE_HS_POINTS_BANK_RUPEES 0xF0
 | |
| #define MESSAGE_HS_POINTS_UNK_1 0xF1
 | |
| #define MESSAGE_HS_POINTS_FISHING 0xF2
 | |
| #define MESSAGE_HS_TIME_BOAT_ARCHERY 0xF3 // Note this interprets the highscore value as a time (not the actual timer for the minigame)
 | |
| #define MESSAGE_HS_TIME_HORSE_BACK_BALLOON 0xF4 // Note this interprets the highscore value as a time (not the actual timer for the minigame)
 | |
| #define MESSAGE_HS_TIME_LOTTERY_GUESS 0xF5
 | |
| #define MESSAGE_HS_TOWN_SHOOTING_GALLERY 0xF6
 | |
| #define MESSAGE_HS_UNK_1 0xF7
 | |
| #define MESSAGE_HS_UNK_3_LOWER 0xF8
 | |
| #define MESSAGE_HS_HORSE_BACK_BALLOON 0xF9
 | |
| #define MESSAGE_HS_DEKU_PLAYGROUND_DAY_1 0xFA
 | |
| #define MESSAGE_HS_DEKU_PLAYGROUND_DAY_2 0xFB
 | |
| #define MESSAGE_HS_DEKU_PLAYGROUND_DAY_3 0xFC
 | |
| #define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_1 0xFD
 | |
| #define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_2 0xFE
 | |
| #define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_3 0xFF
 | |
| 
 | |
| #ifdef MESSAGE_DATA_STATIC
 | |
| // For use in message_data_static files
 | |
| 
 | |
| #define ARG1(x) (x),
 | |
| #define ARG2(x) (((x) >> 8) & 0xFF), (((x) >> 0) & 0xFF),
 | |
| #define CTRL_BASE(name) ARG1(MESSAGE_##name)
 | |
| 
 | |
| // For use in message_data_static files
 | |
| 
 | |
| // Encoded text consists of an array of bytes. Since it's in a macro it must be wrapped in a varargs macro so that each
 | |
| // byte is not treated as a separate macro argument to DEFINE_MESSAGE. IDO doesn't support varargs macros, however we
 | |
| // preprocess the message_data_static files with modern cpp instead. See the makefile rule for assets/text/
 | |
| #define MSG(...) \
 | |
|     { __VA_ARGS__ END }
 | |
| 
 | |
| // Not a control command, used to define the data that begins every message
 | |
| #define HEADER(unk11F08, itemId, nextTextId, unk1206C, unk12070, unk12074) \
 | |
|     ARG2(unk11F08) ARG1(itemId) ARG2(nextTextId) ARG2(unk1206C) ARG2(unk12070) ARG2(unk12074)
 | |
| 
 | |
| #define COLOR_DEFAULT CTRL_BASE(COLOR_DEFAULT)
 | |
| #define COLOR_RED CTRL_BASE(COLOR_RED)
 | |
| #define COLOR_GREEN CTRL_BASE(COLOR_GREEN)
 | |
| #define COLOR_BLUE CTRL_BASE(COLOR_BLUE)
 | |
| #define COLOR_YELLOW CTRL_BASE(COLOR_YELLOW)
 | |
| #define COLOR_LIGHTBLUE CTRL_BASE(COLOR_LIGHTBLUE)
 | |
| #define COLOR_PINK CTRL_BASE(COLOR_PINK)
 | |
| #define COLOR_SILVER CTRL_BASE(COLOR_SILVER)
 | |
| #define COLOR_ORANGE CTRL_BASE(COLOR_ORANGE)
 | |
| #define TEXT_SPEED CTRL_BASE(TEXT_SPEED)
 | |
| #define HS_BOAT_ARCHERY CTRL_BASE(HS_BOAT_ARCHERY)
 | |
| #define STRAY_FAIRIES CTRL_BASE(STRAY_FAIRIES)
 | |
| #define TOKENS CTRL_BASE(TOKENS)
 | |
| #define POINTS_TENS CTRL_BASE(POINTS_TENS)
 | |
| #define POINTS_THOUSANDS CTRL_BASE(POINTS_THOUSANDS)
 | |
| #define BOX_BREAK CTRL_BASE(BOX_BREAK)
 | |
| // while a control character, newlines are handled in the charmap conversion
 | |
| // stage to allow normal newline \n usage in message_data_static files
 | |
| #define NEWLINE CTRL_BASE(NEWLINE)
 | |
| #define BOX_BREAK2 CTRL_BASE(BOX_BREAK2)
 | |
| #define CARRIAGE_RETURN CTRL_BASE(CARRIAGE_RETURN)
 | |
| #define SHIFT(amount) CTRL_BASE(SHIFT) ARG1(amount)
 | |
| #define CONTINUE CTRL_BASE(CONTINUE)
 | |
| #define NAME CTRL_BASE(NAME)
 | |
| #define QUICKTEXT_ENABLE CTRL_BASE(QUICKTEXT_ENABLE)
 | |
| #define QUICKTEXT_DISABLE CTRL_BASE(QUICKTEXT_DISABLE)
 | |
| #define EVENT CTRL_BASE(EVENT)
 | |
| #define PERSISTENT CTRL_BASE(PERSISTENT)
 | |
| #define BOX_BREAK_DELAYED(delay) CTRL_BASE(BOX_BREAK_DELAYED) ARG2(delay)
 | |
| #define FADE(delay) CTRL_BASE(FADE) ARG2(delay)
 | |
| #define FADE_SKIPPABLE(delay) CTRL_BASE(FADE_SKIPPABLE) ARG2(delay)
 | |
| #define SFX(sfxId) CTRL_BASE(SFX) ARG2(sfxId)
 | |
| #define DELAY(delay) CTRL_BASE(DELAY) ARG2(delay)
 | |
| #define END CTRL_BASE(END)
 | |
| #define BACKGROUND CTRL_BASE(BACKGROUND)
 | |
| #define TWO_CHOICE CTRL_BASE(TWO_CHOICE)
 | |
| #define THREE_CHOICE CTRL_BASE(THREE_CHOICE)
 | |
| #define TIMER_POSTMAN CTRL_BASE(TIMER_POSTMAN)
 | |
| #define TIMER_MINIGAME_1 CTRL_BASE(TIMER_MINIGAME_1)
 | |
| #define TIMER_2 CTRL_BASE(TIMER_2)
 | |
| #define TIMER_MOON_CRASH CTRL_BASE(TIMER_MOON_CRASH)
 | |
| #define TIMER_MINIGAME_2 CTRL_BASE(TIMER_MINIGAME_2)
 | |
| #define TIMER_ENV_HAZARD CTRL_BASE(TIMER_ENV_HAZARD)
 | |
| #define TIME CTRL_BASE(TIME)
 | |
| #define CHEST_FLAGS CTRL_BASE(CHEST_FLAGS)
 | |
| #define INPUT_BANK CTRL_BASE(INPUT_BANK)
 | |
| #define RUPEES_SELECTED CTRL_BASE(RUPEES_SELECTED)
 | |
| #define RUPEES_TOTAL CTRL_BASE(RUPEES_TOTAL)
 | |
| #define TIME_UNTIL_MOON_CRASH CTRL_BASE(TIME_UNTIL_MOON_CRASH)
 | |
| #define INPUT_DOGGY_RACETRACK_BET CTRL_BASE(INPUT_DOGGY_RACETRACK_BET)
 | |
| #define INPUT_BOMBER_CODE CTRL_BASE(INPUT_BOMBER_CODE)
 | |
| #define PAUSE_MENU CTRL_BASE(PAUSE_MENU)
 | |
| #define TIME_SPEED CTRL_BASE(TIME_SPEED)
 | |
| #define OWL_WARP CTRL_BASE(OWL_WARP)
 | |
| #define INPUT_LOTTERY_CODE CTRL_BASE(INPUT_LOTTERY_CODE)
 | |
| #define SPIDER_HOUSE_MASK_CODE CTRL_BASE(SPIDER_HOUSE_MASK_CODE)
 | |
| #define STRAY_FAIRIES_LEFT_WOODFALL CTRL_BASE(STRAY_FAIRIES_LEFT_WOODFALL)
 | |
| #define STRAY_FAIRIES_LEFT_SNOWHEAD CTRL_BASE(STRAY_FAIRIES_LEFT_SNOWHEAD)
 | |
| #define STRAY_FAIRIES_LEFT_GREAT_BAY CTRL_BASE(STRAY_FAIRIES_LEFT_GREAT_BAY)
 | |
| #define STRAY_FAIRIES_LEFT_STONE_TOWER CTRL_BASE(STRAY_FAIRIES_LEFT_STONE_TOWER)
 | |
| #define POINTS_BOAT_ARCHERY CTRL_BASE(POINTS_BOAT_ARCHERY)
 | |
| #define LOTTERY_CODE CTRL_BASE(LOTTERY_CODE)
 | |
| #define LOTTERY_CODE_GUESS CTRL_BASE(LOTTERY_CODE_GUESS)
 | |
| #define HELD_ITEM_PRICE CTRL_BASE(HELD_ITEM_PRICE)
 | |
| #define BOMBER_CODE CTRL_BASE(BOMBER_CODE)
 | |
| #define EVENT2 CTRL_BASE(EVENT2)
 | |
| #define SPIDER_HOUSE_MASK_CODE_1 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_1)
 | |
| #define SPIDER_HOUSE_MASK_CODE_2 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_2)
 | |
| #define SPIDER_HOUSE_MASK_CODE_3 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_3)
 | |
| #define SPIDER_HOUSE_MASK_CODE_4 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_4)
 | |
| #define SPIDER_HOUSE_MASK_CODE_5 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_5)
 | |
| #define SPIDER_HOUSE_MASK_CODE_6 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_6)
 | |
| #define HOURS_UNTIL_MOON_CRASH CTRL_BASE(HOURS_UNTIL_MOON_CRASH)
 | |
| #define TIME_UNTIL_NEW_DAY CTRL_BASE(TIME_UNTIL_NEW_DAY)
 | |
| #define HS_POINTS_BANK_RUPEES CTRL_BASE(HS_POINTS_BANK_RUPEES)
 | |
| #define HS_POINTS_UNK_1 CTRL_BASE(HS_POINTS_UNK_1)
 | |
| #define HS_POINTS_FISHING CTRL_BASE(HS_POINTS_FISHING)
 | |
| #define HS_TIME_BOAT_ARCHERY CTRL_BASE(HS_TIME_BOAT_ARCHERY)
 | |
| #define HS_TIME_HORSE_BACK_BALLOON CTRL_BASE(HS_TIME_HORSE_BACK_BALLOON)
 | |
| #define HS_TIME_LOTTERY_GUESS CTRL_BASE(HS_TIME_LOTTERY_GUESS)
 | |
| #define HS_TOWN_SHOOTING_GALLERY CTRL_BASE(HS_TOWN_SHOOTING_GALLERY)
 | |
| #define HS_UNK_1 CTRL_BASE(HS_UNK_1)
 | |
| #define HS_UNK_3_LOWER CTRL_BASE(HS_UNK_3_LOWER)
 | |
| #define HS_HORSE_BACK_BALLOON CTRL_BASE(HS_HORSE_BACK_BALLOON)
 | |
| #define HS_DEKU_PLAYGROUND_DAY_1 CTRL_BASE(HS_DEKU_PLAYGROUND_DAY_1)
 | |
| #define HS_DEKU_PLAYGROUND_DAY_2 CTRL_BASE(HS_DEKU_PLAYGROUND_DAY_2)
 | |
| #define HS_DEKU_PLAYGROUND_DAY_3 CTRL_BASE(HS_DEKU_PLAYGROUND_DAY_3)
 | |
| #define DEKU_PLAYGROUND_NAME_DAY_1 CTRL_BASE(DEKU_PLAYGROUND_NAME_DAY_1)
 | |
| #define DEKU_PLAYGROUND_NAME_DAY_2 CTRL_BASE(DEKU_PLAYGROUND_NAME_DAY_2)
 | |
| #define DEKU_PLAYGROUND_NAME_DAY_3 CTRL_BASE(DEKU_PLAYGROUND_NAME_DAY_3)
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif
 |