Merge pull request #240 from PikalaxALT/union_room_chat

Union room chat
This commit is contained in:
PikalaxALT
2020-01-25 21:07:18 -05:00
committed by GitHub
36 changed files with 3496 additions and 6551 deletions
File diff suppressed because it is too large Load Diff
+30 -30
View File
@@ -75,64 +75,64 @@ gUnknown_847AA8F::
gUnknown_847AAA8::
.string "{CLEAR 11}{CLEAR 16}{CLEAR 16}{CLEAR 18}{CLEAR 18}'{CLEAR 18} $"
gUnknown_847AAC1::
gText_UnionRoomChatKeyboard_ABCDE::
.string "ABCDE$"
gUnknown_847AAC7::
gText_UnionRoomChatKeyboard_FGHIJ::
.string "FGHIJ$"
gUnknown_847AACD::
gText_UnionRoomChatKeyboard_KLMNO::
.string "KLMNO$"
gUnknown_847AAD3::
gText_UnionRoomChatKeyboard_PQRST::
.string "PQRST$"
gUnknown_847AAD9::
gText_UnionRoomChatKeyboard_UVWXY::
.string "UVWXY$"
gUnknown_847AADF::
gText_UnionRoomChatKeyboard_Z::
.string "Z $"
gUnknown_847AAE5::
gText_UnionRoomChatKeyboard_01234Upper::
.string "01234$"
gUnknown_847AAEB::
gText_UnionRoomChatKeyboard_56789Upper::
.string "56789$"
gUnknown_847AAF1::
gText_UnionRoomChatKeyboard_PunctuationUpper::
.string ".,!? $"
gUnknown_847AAF7::
gText_UnionRoomChatKeyboard_SymbolsUpper::
.string "-/& $"
gUnknown_847AAFD::
gText_UnionRoomChatKeyboard_abcde::
.string "abcde$"
gUnknown_847AB03::
gText_UnionRoomChatKeyboard_fghij::
.string "fghij$"
gUnknown_847AB09::
gText_UnionRoomChatKeyboard_klmno::
.string "klmno$"
gUnknown_847AB0F::
gText_UnionRoomChatKeyboard_pqrst::
.string "pqrst$"
gUnknown_847AB15::
gText_UnionRoomChatKeyboard_uvwxy::
.string "uvwxy$"
gUnknown_847AB1B::
gText_UnionRoomChatKeyboard_z::
.string "z $"
gUnknown_847AB21::
gText_UnionRoomChatKeyboard_01234Lower::
.string "01234$"
gUnknown_847AB27::
gText_UnionRoomChatKeyboard_56789Lower::
.string "56789$"
gUnknown_847AB2D::
gText_UnionRoomChatKeyboard_PunctuationLower::
.string ".,!? $"
gUnknown_847AB33::
gText_UnionRoomChatKeyboard_SymbolsLower::
.string "-/& $"
.string "$"
@@ -144,34 +144,34 @@ gUnknown_847AB33::
.string "$"
.string "$"
gUnknown_847AB41::
gText_UnionRoomChatKeyboard_Emoji1::
.string "{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}$"
gUnknown_847AB4C::
gText_UnionRoomChatKeyboard_Emoji2::
.string "{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}$"
gUnknown_847AB57::
gText_UnionRoomChatKeyboard_Emoji3::
.string "{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}$"
gUnknown_847AB62::
gText_UnionRoomChatKeyboard_Emoji4::
.string "{EXTRA 212}{EXTRA 213}{EXTRA 211}$"
gUnknown_847AB6B::
gText_UnionRoomChatKeyboard_Emoji5::
.string "{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}$"
gUnknown_847AB76::
gText_UnionRoomChatKeyboard_Emoji6::
.string "{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}$"
gUnknown_847AB81::
gText_UnionRoomChatKeyboard_Emoji7::
.string "{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}$"
gUnknown_847AB8C::
gText_UnionRoomChatKeyboard_Emoji8::
.string "{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}$"
gUnknown_847AB97::
gText_UnionRoomChatKeyboard_Emoji9::
.string "{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}$"
gUnknown_847ABA2::
gText_UnionRoomChatKeyboard_Emoji10::
.string "{EXTRA 210}{EXTRA 208}: $"
// trainer_tower (again?)
+7 -7
View File
@@ -16374,16 +16374,16 @@ gFameCheckerBg3Tilemap:: @ 8EA0700
gFameCheckerBg2Tilemap:: @ 8EA0F00
.incbin "data/graphics/fame_checker_tilemap2.bin"
gUnknown_8EA1700:: @ 8EA1700
gLinkMiscMenu_Pal:: @ 8EA1700
.incbin "graphics/interface/union_room_chat.gbapal"
gUnknown_8EA1720:: @ 8EA1720
gLinkMiscMenu_Gfx:: @ 8EA1720
.incbin "graphics/interface/union_room_chat.4bpp.lz"
gUnknown_8EA1958:: @ 8EA1958
gLinkMiscMenu_Tilemap:: @ 8EA1958
.incbin "graphics/interface/union_room_chat.bin.lz"
gUnknown_8EA1A50:: @ 8EA1A50
gUnionRoomChatIcons:: @ 8EA1A50
.incbin "graphics/interface/union_room_chat_icons.4bpp.lz"
.align 2
@@ -16508,13 +16508,13 @@ gTilesetPalettes_8EA9D88:: @ 8EA9D88
gTilesetTiles_8EA9F88:: @ 8EA9F88
.incbin "data/tilesets/secondary/82D4E6C/tiles.4bpp.lz"
gUnknown_8EAA9F0:: @ 8EAA9F0
gUnionRoomChatPanelBgPal_7:: @ 8EAA9F0
.incbin "graphics/interface/union_room_chat_panel.gbapal"
gUnknown_8EAAA10:: @ 8EAAA10
gUnionRoomChatPanelBgTiles:: @ 8EAAA10
.incbin "graphics/interface/union_room_chat_panel.4bpp.lz"
gUnknown_8EAAA6C:: @ 8EAAA6C
gUnionRoomChatPanelBgMap:: @ 8EAAA6C
.incbin "graphics/interface/union_room_chat_panel.bin.lz"
gCreditsMonBackdropPals:: @ 8EAAB18
+29 -29
View File
@@ -3093,40 +3093,40 @@ gUnknown_841B32E:: @ 841B32E
.string "{DYNAMIC 0x00} learned\n"
.string "{DYNAMIC 0x01}!$"
gUnknown_841B33D:: @ 0x841B33D
gText_Upper:: @ 0x841B33D
.string "UPPER$"
gUnknown_841B343:: @ 0x841B343
gText_Lower:: @ 0x841B343
.string "lower$"
gUnknown_841B349:: @ 0x841B349
gText_Others:: @ 0x841B349
.string "OTHERS$"
gUnknown_841B350:: @ 0x841B350
gText_Symbols:: @ 0x841B350
.string "SYMBOLS$"
gUnknown_841B358:: @ 0x841B358
gText_Register2:: @ 0x841B358
.string "REGISTER$"
gUnknown_841B361:: @ 0x841B361
gText_Exit:: @ 0x841B361
.string "EXIT$"
gUnknown_841B366:: @ 0x841B366
gText_QuitChatting:: @ 0x841B366
.string "Quit chatting?$"
gUnknown_841B375:: @ 0x841B375
gText_RegisterTextWhere:: @ 0x841B375
.string "Register text where?$"
gUnknown_841B38A:: @ 0x841B38A
gText_RegisterTextHere:: @ 0x841B38A
.string "Register text here?$"
gUnknown_841B39E:: @ 0x841B39E
gText_InputText:: @ 0x841B39E
.string "Input text.$"
gUnknown_841B3AA:: @ 841B3AA
gText_F700JoinedChat:: @ 841B3AA
.string "{DYNAMIC 0x00} joined the chat!$"
gUnknown_841B3BE:: @ 841B3BE
gText_F700LeftChat:: @ 841B3BE
.string "{DYNAMIC 0x00} left the chat.$"
gUnknown_841B3D0:: @ 0x841B3D0
@@ -3135,60 +3135,60 @@ gUnknown_841B3D0:: @ 0x841B3D0
gUnknown_841B3DA:: @ 0x841B3DA
.string "{DYNAMIC 0x00}{DYNAMIC 0x01} $"
gUnknown_841B3E9:: @ 0x841B3E9
gText_ExitingTheChat:: @ 0x841B3E9
.string "Exiting the chat$"
gUnknown_841B3FB:: @ 0x841B3FB
gText_LeaderHasLeftEndingChat:: @ 0x841B3FB
.string "The LEADER, {DYNAMIC 0x00}, has\n"
.string "left, ending the chat.$"
gUnknown_841B426:: @ 0x841B426
gText_RegisteredTextChanged_OKtoSave:: @ 0x841B426
.string "The registered text has been changed.\n"
.string "Is it okay to save the game?$"
gUnknown_841B469:: @ 0x841B469
gText_RegisteredTextChanged_AlreadySavedFile:: @ 0x841B469
.string "There is already a saved file.\n"
.string "Is it okay to overwrite it?$"
gUnknown_841B4A4:: @ 0x841B4A4
gText_RegisteredTextChanged_SavingDontTurnOff:: @ 0x841B4A4
.string "SAVING\n"
.string "DON'T TURN OFF THE POWER.$"
gUnknown_841B4C6:: @ 0x841B4C6
gText_RegisteredTextChanged_SavedTheGame:: @ 0x841B4C6
.string "{DYNAMIC 0x00} saved the game.$"
gUnknown_841B4D9:: @ 0x841B4D9
gText_IfLeaderLeavesChatWillEnd:: @ 0x841B4D9
.string "If the LEADER leaves, the chat\n"
.string "will end. Is that okay?$"
gUnknown_841B510:: @ 841B510
gText_Hello:: @ 841B510
.string "HELLO$"
gUnknown_841B516:: @ 841B516
gText_Pokemon2:: @ 841B516
.string "POKéMON$"
gUnknown_841B51E:: @ 841B51E
gText_Trade:: @ 841B51E
.string "TRADE$"
gUnknown_841B524:: @ 841B524
gText_Battle:: @ 841B524
.string "BATTLE$"
gUnknown_841B52B:: @ 841B52B
gText_Lets:: @ 841B52B
.string "LET'S$"
gUnknown_841B531:: @ 841B531
gText_Ok:: @ 841B531
.string "OK!$"
gUnknown_841B535:: @ 841B535
gText_Sorry:: @ 841B535
.string "SORRY$"
gUnknown_841B53B:: @ 841B53B
gText_YaySmileEmoji:: @ 841B53B
.string "YAY{EXTRA 0xF9}$"
gUnknown_841B541:: @ 841B541
gText_ThankYou:: @ 841B541
.string "THANK YOU$"
gUnknown_841B54B:: @ 841B54B
gText_ByeBye:: @ 841B54B
.string "BYE-BYE!$"
gUnknown_841B554:: @ 841B554
-358
View File
@@ -1,358 +0,0 @@
#include "constants/region_map.h"
#include "constants/flags.h"
#include "constants/moves.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_845A880:: @ 845A880
.4byte sub_8128640
.4byte sub_81286C4
.4byte sub_81287B4
.4byte sub_81288D4
.4byte sub_8128DA4
.4byte sub_8128E78
.4byte sub_8128AA0
.4byte sub_8128C04
.4byte sub_8128CA8
.4byte sub_8128FB8
gUnknown_845A8A8:: @ 845A8A8
.byte 0x09, 0x09, 0x09, 0x09
gUnknown_845A8AC:: @ 845A8AC
.byte 0x00, 0x16, 0x17, 0x68, 0x19, 0x1a, 0x1b, 0x1c
.byte 0x1d, 0x1e, 0x00, 0x20, 0x21, 0x22, 0x23, 0x24
.byte 0x25, 0x26, 0x27, 0x28, 0x29, 0x15, 0x01, 0x02
.byte 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00
.byte 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12
.byte 0x13, 0x14, 0x2a, 0x2b, 0x2c, 0x2d, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x36, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x53, 0x54, 0x55, 0x56, 0x00
.byte 0x00, 0x00, 0x6f, 0x5b, 0x5c, 0x5d, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x84, 0x85, 0x86, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7
.byte 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf
.byte 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7
.byte 0xb8, 0xb9, 0xba, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9
.byte 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1
.byte 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9
.byte 0xea, 0xeb, 0xec, 0xed, 0xee, 0xbb, 0xbc, 0xbd
.byte 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5
.byte 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd
.byte 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xef
.byte 0xf0, 0xf4, 0xf5, 0xf6, 0xf1, 0xf2, 0xf3, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
gUnknown_845A9AC:: @ 845A9AC
.4byte gUnknown_847AAC1
.4byte gUnknown_847AAC7
.4byte gUnknown_847AACD
.4byte gUnknown_847AAD3
.4byte gUnknown_847AAD9
.4byte gUnknown_847AADF
.4byte gUnknown_847AAE5
.4byte gUnknown_847AAEB
.4byte gUnknown_847AAF1
.4byte gUnknown_847AAF7
.4byte gUnknown_847AAFD
.4byte gUnknown_847AB03
.4byte gUnknown_847AB09
.4byte gUnknown_847AB0F
.4byte gUnknown_847AB15
.4byte gUnknown_847AB1B
.4byte gUnknown_847AB21
.4byte gUnknown_847AB27
.4byte gUnknown_847AB2D
.4byte gUnknown_847AB33
.4byte gUnknown_847AB41
.4byte gUnknown_847AB4C
.4byte gUnknown_847AB57
.4byte gUnknown_847AB62
.4byte gUnknown_847AB6B
.4byte gUnknown_847AB76
.4byte gUnknown_847AB81
.4byte gUnknown_847AB8C
.4byte gUnknown_847AB97
.4byte gUnknown_847ABA2
gUnknown_845AA24:: @ 845AA24
.incbin "graphics/union_room_chat/unk_845AA24.gbapal"
gUnknown_845AA44:: @ 845AA44
.incbin "graphics/union_room_chat/unk_845AA44.gbapal"
gUnknown_845AA64:: @ 845AA64
.incbin "graphics/union_room_chat/unk_845AA64.gbapal"
gUnknown_845AA84:: @ 845AA84
.4byte 0x00000070
@ {
@ .bg = 0,
@ .charBaseIndex = 0,
@ .mapBaseIndex = 7,
@ .screenSize = 0,
@ .paletteMode = 0,
@ .priority = 0,
@ .baseTile = 0x0000
@ }
.4byte 0x000011fd
@ {
@ .bg = 1,
@ .charBaseIndex = 3,
@ .mapBaseIndex = 31,
@ .screenSize = 0,
@ .paletteMode = 0,
@ .priority = 1,
@ .baseTile = 0x0000
@ }
.4byte 0x0000217a
@ {
@ .bg = 2,
@ .charBaseIndex = 2,
@ .mapBaseIndex = 23,
@ .screenSize = 0,
@ .paletteMode = 0,
@ .priority = 2,
@ .baseTile = 0x0000
@ }
.4byte 0x000070f7
@ {
@ .bg = 3,
@ .charBaseIndex = 1,
@ .mapBaseIndex = 15,
@ .screenSize = 0,
@ .paletteMode = 0,
@ .priority = 3,
@ .baseTile = 0x0001
@ }
gUnknown_845AA94:: @ 845AA94
.byte 3, 8, 1, 21, 19, 15
.2byte 0x0001
.byte 1, 9, 18, 15, 2, 12
.2byte 0x007a
.byte 1, 0, 2, 6, 15, 7
.2byte 0x0020
.byte 0, 1, 2, 7, 9, 14
.2byte 0x0013
.byte 255, 0, 0, 0, 0, 0
.2byte 0x0000
gUnknown_845AABC:: @ 845AABC
.2byte 0x00
.align 2
.4byte sub_8129CA0
.2byte 0x03
.align 2
.4byte sub_8129D40
.2byte 0x04
.align 2
.4byte sub_8129D78
.2byte 0x05
.align 2
.4byte sub_8129DB0
.2byte 0x01
.align 2
.4byte sub_8129E1C
.2byte 0x06
.align 2
.4byte sub_8129E28
.2byte 0x07
.align 2
.4byte sub_8129E74
.2byte 0x08
.align 2
.4byte sub_8129EB8
.2byte 0x09
.align 2
.4byte sub_8129F24
.2byte 0x0a
.align 2
.4byte sub_8129FCC
.2byte 0x0b
.align 2
.4byte sub_812A074
.2byte 0x0c
.align 2
.4byte sub_812A0B0
.2byte 0x02
.align 2
.4byte sub_812A18C
.2byte 0x0d
.align 2
.4byte sub_812A1B8
.2byte 0x12
.align 2
.4byte sub_812A1FC
.2byte 0x13
.align 2
.4byte sub_812A240
.2byte 0x0e
.align 2
.4byte sub_812A294
.2byte 0x0f
.align 2
.4byte sub_812A2E4
.2byte 0x10
.align 2
.4byte sub_812A334
.2byte 0x11
.align 2
.4byte sub_812A378
.2byte 0x14
.align 2
.4byte sub_812A3D0
gUnknown_845AB64:: @ 845AB64
.4byte gUnknown_841B366
.byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00
.align 2
.4byte gUnknown_841B375
.byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00
.align 2
.4byte gUnknown_841B38A
.byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00
.align 2
.4byte gUnknown_841B39E
.byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00
.align 2
.4byte gUnknown_841B3E9
.byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00
.align 2
.4byte gUnknown_841B3FB
.byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00
.align 2
.4byte gUnknown_841B426
.byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01
.align 2
.4byte gUnknown_841B469
.byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01
.align 2
.4byte gUnknown_841B4A4
.byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01
.align 2
.4byte gUnknown_841B4C6
.byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x01, 0x01
.align 2
.4byte gUnknown_841B4D9
.byte 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01
.align 2
gUnknown_845ABE8:: @ 845ABE8
.string "$"
.align 2
gUnknown_845ABEC:: @ 845ABEC
.4byte gUnknown_841B33D, 0
.4byte gUnknown_841B343, 0
.4byte gUnknown_841B350, 0
.4byte gUnknown_841B358, 0
.4byte gUnknown_841B361, 0
gUnknown_845AC14:: @ 845AC14
.incbin "graphics/union_room_chat/unk_845AC14.gbapal"
gUnknown_845AC34::
.incbin "graphics/union_room_chat/unk_845AC34.4bpp.lz"
gUnknown_845AEB8::
.incbin "graphics/union_room_chat/unk_845AEB8.4bpp.lz"
gUnknown_845AED8::
.incbin "graphics/union_room_chat/unk_845AED8.4bpp.lz"
gUnknown_845AF04::
.incbin "graphics/union_room_chat/unk_845AF04.4bpp.lz"
gUnknown_845AF58:: @ 845AF58
obj_tiles gUnknown_845AC34, 0x1000, 0
obj_tiles gUnknown_845AED8, 0x0040, 1
obj_tiles gUnknown_845AEB8, 0x0040, 2
obj_tiles gUnknown_845AF04, 0x0080, 3
obj_tiles gUnknown_8EA1A50, 0x0400, 4
gUnknown_845AF80:: @ 845AF80
obj_pal gUnknown_845AC14, 0
gOamData_845AF88::
.4byte 0xc0004000, 0x00000400
gAnimCmd_845AF90::
obj_image_anim_frame 0x0000, 30
obj_image_anim_end
gAnimCmd_845AF98::
obj_image_anim_frame 0x0020, 30
obj_image_anim_end
gAnimCmd_845AFA0::
obj_image_anim_frame 0x0040, 30
obj_image_anim_end
gAnimCmd_845AFA8::
obj_image_anim_frame 0x0060, 30
obj_image_anim_end
gSpriteAnimTable_845AFB0::
.4byte gAnimCmd_845AF90
.4byte gAnimCmd_845AF98
.4byte gAnimCmd_845AFA0
.4byte gAnimCmd_845AFA8
gUnknown_845AFC0:: @ 845AFC0
spr_template 0, 0, gOamData_845AF88, gSpriteAnimTable_845AFB0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gOamData_845AFD8::
.4byte 0x00008000, 0x00000800
gUnknown_845AFE0:: @ 845AFE0
spr_template 2, 0, gOamData_845AFD8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_812B09C
gUnknown_845AFF8:: @ 845AFF8
spr_template 1, 0, gOamData_845AFD8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_812B0D4
gOamData_845B010::
.4byte 0x40000000, 0x00000800
gOamData_845B018::
.4byte 0x80004000, 0x00000800
gAnimCmd_845B020::
obj_image_anim_frame 0x0000, 2
obj_image_anim_end
gAnimCmd_845B028::
obj_image_anim_frame 0x0008, 2
obj_image_anim_end
gAnimCmd_845B030::
obj_image_anim_frame 0x0010, 2
obj_image_anim_end
gAnimCmd_845B038::
obj_image_anim_frame 0x0018, 2
obj_image_anim_end
gSpriteAnimTable_845B040::
.4byte gAnimCmd_845B020
.4byte gAnimCmd_845B028
.4byte gAnimCmd_845B030
.4byte gAnimCmd_845B038
gUnknown_845B050:: @ 845B050
spr_template 3, 0, gOamData_845B010, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gUnknown_845B068:: @ 845B068
spr_template 4, 0, gOamData_845B018, gSpriteAnimTable_845B040, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+5
View File
@@ -38,6 +38,10 @@
#define FEMALE 1
#define GENDER_COUNT 2
#define BARD_SONG_LENGTH 6
#define NUM_STORYTELLER_TALES 4
#define NUM_TRADER_ITEMS 4
#define OPTIONS_BUTTON_MODE_HELP 0
#define OPTIONS_BUTTON_MODE_LR 1
#define OPTIONS_BUTTON_MODE_L_EQUALS_A 2
@@ -62,6 +66,7 @@
#define MAX_MON_MOVES 4
#define TRAINER_ID_LENGTH 4
#define PARTY_SIZE 6
#define MULTI_PARTY_SIZE (PARTY_SIZE / 2)
+35
View File
@@ -0,0 +1,35 @@
#ifndef GUARD_DATA_8479668_H
#define GUARD_DATA_8479668_H
extern const u8 gText_UnionRoomChatKeyboard_ABCDE[];
extern const u8 gText_UnionRoomChatKeyboard_FGHIJ[];
extern const u8 gText_UnionRoomChatKeyboard_KLMNO[];
extern const u8 gText_UnionRoomChatKeyboard_PQRST[];
extern const u8 gText_UnionRoomChatKeyboard_UVWXY[];
extern const u8 gText_UnionRoomChatKeyboard_Z[];
extern const u8 gText_UnionRoomChatKeyboard_01234Upper[];
extern const u8 gText_UnionRoomChatKeyboard_56789Upper[];
extern const u8 gText_UnionRoomChatKeyboard_PunctuationUpper[];
extern const u8 gText_UnionRoomChatKeyboard_SymbolsUpper[];
extern const u8 gText_UnionRoomChatKeyboard_abcde[];
extern const u8 gText_UnionRoomChatKeyboard_fghij[];
extern const u8 gText_UnionRoomChatKeyboard_klmno[];
extern const u8 gText_UnionRoomChatKeyboard_pqrst[];
extern const u8 gText_UnionRoomChatKeyboard_uvwxy[];
extern const u8 gText_UnionRoomChatKeyboard_z[];
extern const u8 gText_UnionRoomChatKeyboard_01234Lower[];
extern const u8 gText_UnionRoomChatKeyboard_56789Lower[];
extern const u8 gText_UnionRoomChatKeyboard_PunctuationLower[];
extern const u8 gText_UnionRoomChatKeyboard_SymbolsLower[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji1[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji2[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji3[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji4[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji5[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji6[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji7[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji8[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji9[];
extern const u8 gText_UnionRoomChatKeyboard_Emoji10[];
#endif //GUARD_DATA_8479668_H
+59 -29
View File
@@ -182,13 +182,13 @@ struct BerryCrush
u32 unk;
};
#define PLAYER_NAME_LENGTH 8
#define PLAYER_NAME_LENGTH 7
#define LINK_B_RECORDS_COUNT 5
struct LinkBattleRecord
{
u8 name[PLAYER_NAME_LENGTH];
u8 name[PLAYER_NAME_LENGTH + 1];
u16 trainerId;
u16 wins;
u16 losses;
@@ -261,7 +261,7 @@ struct BattleTowerData // Leftover from R/S
struct SaveBlock2
{
/*0x000*/ u8 playerName[PLAYER_NAME_LENGTH];
/*0x000*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x008*/ u8 playerGender; // MALE, FEMALE
/*0x009*/ u8 specialSaveWarpFlags;
/*0x00A*/ u8 playerTrainerId[4];
@@ -312,7 +312,7 @@ struct SecretBaseRecord
/*0x1A9D*/ u8 gender:1;
/*0x1A9D*/ u8 sbr_field_1_5:1;
/*0x1A9D*/ u8 sbr_field_1_6:2;
/*0x1A9E*/ u8 trainerName[7]; // TODO: Change PLAYER_NAME_LENGTH to 7
/*0x1A9E*/ u8 trainerName[PLAYER_NAME_LENGTH];
/*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
/*0x1AA9*/ u8 language;
/*0x1AAA*/ u16 sbr_field_e;
@@ -398,41 +398,68 @@ struct MailStruct
/*0x20*/ u16 itemId;
};
struct UnkMauvilleOldManStruct
struct MauvilleManCommon
{
u8 unk_2D94;
u8 unk_2D95;
/*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
/*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
/*0x2DAE*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x2DB6*/ u8 filler_2DB6[0x3];
/*0x2DB9*/ u8 playerTrainerId[4];
u8 unk_2DBD;
u8 id;
};
struct MauvilleManBard
{
/*0x00*/ u8 id;
/*0x02*/ u16 songLyrics[BARD_SONG_LENGTH];
/*0x0E*/ u16 temporaryLyrics[BARD_SONG_LENGTH];
/*0x1A*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x22*/ u8 filler_2DB6[0x3];
/*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH];
/*0x29*/ bool8 hasChangedSong;
/*0x2A*/ u8 language;
}; /*size = 0x2C*/
struct UnkMauvilleOldManStruct2
struct MauvilleManStoryteller
{
u8 filler0;
u8 unk1;
u8 unk2;
u16 mauvilleOldMan_ecArray[10];
u8 mauvilleOldMan_ecArray2[12];
u8 fillerF[0x2];
u8 id;
bool8 alreadyRecorded;
u8 filler2[2];
u8 gameStatIDs[NUM_STORYTELLER_TALES];
u8 trainerNames[NUM_STORYTELLER_TALES][PLAYER_NAME_LENGTH];
u8 statValues[NUM_STORYTELLER_TALES][4];
u8 language[NUM_STORYTELLER_TALES];
};
struct MauvilleManGiddy
{
/*0x00*/ u8 id;
/*0x01*/ u8 taleCounter;
/*0x02*/ u8 questionNum;
/*0x04*/ u16 randomWords[10];
/*0x18*/ u8 questionList[8];
/*0x20*/ u8 language;
}; /*size = 0x2C*/
struct MauvilleManHipster
{
u8 id;
bool8 alreadySpoken;
u8 language;
};
struct MauvilleOldManTrader
{
u8 unk0;
u8 unk1[4];
u8 unk5[4][11];
u8 unk31;
u8 id;
u8 decorIds[NUM_TRADER_ITEMS];
u8 playerNames[NUM_TRADER_ITEMS][11];
u8 alreadyTraded;
u8 language[NUM_TRADER_ITEMS];
};
typedef union OldMan
{
struct UnkMauvilleOldManStruct oldMan1;
struct UnkMauvilleOldManStruct2 oldMan2;
struct MauvilleManCommon common;
struct MauvilleManBard bard;
struct MauvilleManGiddy giddy;
struct MauvilleManHipster hipster;
struct MauvilleOldManTrader trader;
struct MauvilleManStoryteller storyteller;
u8 filler[0x40];
} OldMan;
@@ -715,9 +742,11 @@ struct TrainerRematchState
struct TrainerNameRecord
{
u32 trainerId;
u8 trainerName[PLAYER_NAME_LENGTH];
u8 trainerName[PLAYER_NAME_LENGTH + 1];
};
#define UNION_ROOM_KB_ROW_COUNT 10
struct SaveBlock1
{
/*0x0000*/ struct Coords16 pos;
@@ -770,9 +799,10 @@ struct SaveBlock1
/*0x361C*/ struct RamScript ramScript;
/*0x3A08*/ u8 filler3A08[16];
/*0x3A18*/ u8 seen2[DEX_FLAGS_NO];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH + 1];
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
/*0x3A94*/ u8 filler3A94[0x114];
/*0x3A94*/ u8 filler3A94[0x40];
/*0x3AD4*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21];
/*0x3BA8*/ struct TrainerNameRecord trainerNameRecords[20];
/*0x3C98*/ struct DaycareMon route5DayCareMon;
/*0x3D24*/ u8 filler3D24[0x10];
+11
View File
@@ -4864,4 +4864,15 @@ extern const u32 gUnknown_8E83444[];
extern const u32 gBagBgPalette[];
extern const u32 gBagBgPalette_FemaleOverride[];
// union_room_chat_display
extern const u16 gUnionRoomChatPanelBgPal_7[];
extern const u32 gUnionRoomChatPanelBgTiles[];
extern const u32 gUnionRoomChatPanelBgMap[];
extern const u16 gLinkMiscMenu_Pal[];
extern const u32 gLinkMiscMenu_Gfx[];
extern const u32 gLinkMiscMenu_Tilemap[];
// union_room_chat_objects
extern const u32 gUnionRoomChatIcons[];
#endif //GUARD_GRAPHICS_H
+1
View File
@@ -92,5 +92,6 @@ bool8 MoveCursor(u8 by, u8 dirn);
void HelpSystem_BackupSomeVariable(void);
void HelpSystem_RestoreSomeVariable(void);
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height);
void sub_812B4AC(void);
#endif //GUARD_HELP_SYSTEM_H
+5 -1
View File
@@ -216,7 +216,7 @@ struct UnkRfuStruct_2
/* 0x99d */ u8 unk_ce5;
/* 0x99e */ u8 unk_ce6;
/* 0x99f */ u8 unk_ce7;
/* 0x9a0 */ u8 unk_ce8;
/* 0x9a0 */ bool8 unk_ce8;
/* 0x9a1 */ u8 unk_ce9;
/* 0x9a2 */ u8 unk_cea[RFU_CHILD_MAX];
/* 0x9a6 */ u8 unk_cee[RFU_CHILD_MAX];
@@ -325,6 +325,10 @@ void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
bool8 sub_80FCC3C(struct GFtgtGname *gname, u8 *uname, u8 idx);
bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx);
bool32 GetRfuUnkCE8(void);
void sub_80FA4A8(void);
void sub_80FB9D0(void);
void sub_80FB030(u32 a0);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
+1
View File
@@ -73,5 +73,6 @@ extern const char RomHeaderGameCode[4];
extern const char RomHeaderSoftwareVersion;
extern u8 gLinkTransferringData;
extern u16 gKeyRepeatStartDelay;
#endif // GUARD_MAIN_H
+42 -7
View File
@@ -40,7 +40,6 @@ extern const u8 gText_Second[];
extern const u8 gText_Third[];
extern const u8 gText_NoDecorations[];
extern const u8 gText_NoDecorationsInUse[];
extern const u8 gText_Exit[];
extern const u8 gText_Cancel[];
extern const u8 gText_Color161Shadow161[];
extern const u8 gText_GoBackPrevMenu[];
@@ -288,7 +287,6 @@ extern const u8 gText_ThreePkmnAreNeeded[];
extern const u8 gText_TwoPokemonAreNeeded[];
extern const u8 gText_PokemonCantBeSame[];
extern const u8 gText_NoIdenticalHoldItems[];
extern const u8 gString_Dummy[];
extern const u8 gText_DoWhatWithPokemon[];
extern const u8 gText_RestoreWhichMove[];
extern const u8 gText_BoostPp[];
@@ -327,13 +325,9 @@ extern const u8 gText_SendOut[];
extern const u8 gText_Enter[];
extern const u8 gText_NoEntry[];
extern const u8 gText_Store[];
extern const u8 gText_Register[];
extern const u8 gText_Trade4[];
extern const u8 gText_NotPkmnOtherTrainerWants[];
extern const u8 gText_ThatIsntAnEgg[];
extern const u8 gText_PkmnCantBeTradedNow[];
extern const u8 gText_OtherTrainersPkmnCantBeTraded[];
extern const u8 gText_EggCantBeTradedNow[];
extern const u8 gText_OtherTrainerCantAcceptPkmn[];
extern const u8 gText_CantTradeWithTrainer[];
extern const u8 gUnknown_84176CF[];
@@ -346,7 +340,6 @@ extern const u8 gText_PkmnCantParticipate[];
extern const u8 gText_CancelParticipation[];
extern const u8 gUnknown_8417494[];
extern const u8 gMenuText_Confirm[];
extern const u8 gText_Lv[];
extern const u8 gText_MaleSymbol[];
extern const u8 gText_FemaleSymbol[];
extern const u8 gText_Slash[];
@@ -984,6 +977,16 @@ extern const u8 gUnknown_8415F6C[];
extern const u8 gUnknown_8415FFF[];
extern const u8 gUnknown_8416002[];
// daycare
extern const u8 gText_Lv[];
extern const u8 gDaycareText_GetAlongVeryWell[];
extern const u8 gDaycareText_GetAlong[];
extern const u8 gDaycareText_DontLikeOther[];
extern const u8 gDaycareText_PlayOther[];
extern const u8 gExpandedPlaceholder_Empty[];
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
// trainer card
extern const u8 gText_WaitingTrainerFinishReading[];
extern const u8 gText_TrainerCardName[];
@@ -1061,4 +1064,36 @@ extern const u8 gText_CommStandbyAwaitingOtherPlayer[];
extern const u8 gText_RefusedBattle[];
extern const u8 gText_BattleWasRefused[];
// union_room_chat
extern const u8 gText_F700JoinedChat[];
extern const u8 gText_F700LeftChat[];
extern const u8 gText_Hello[];
extern const u8 gText_Pokemon2[];
extern const u8 gText_Trade[];
extern const u8 gText_Battle[];
extern const u8 gText_Lets[];
extern const u8 gText_Ok[];
extern const u8 gText_Sorry[];
extern const u8 gText_YaySmileEmoji[];
extern const u8 gText_ThankYou[];
extern const u8 gText_ByeBye[];
// union_room_chat_display
extern const u8 gText_QuitChatting[];
extern const u8 gText_RegisterTextWhere[];
extern const u8 gText_RegisterTextHere[];
extern const u8 gText_InputText[];
extern const u8 gText_ExitingTheChat[];
extern const u8 gText_LeaderHasLeftEndingChat[];
extern const u8 gText_RegisteredTextChanged_OKtoSave[];
extern const u8 gText_RegisteredTextChanged_AlreadySavedFile[];
extern const u8 gText_RegisteredTextChanged_SavingDontTurnOff[];
extern const u8 gText_RegisteredTextChanged_SavedTheGame[];
extern const u8 gText_IfLeaderLeavesChatWillEnd[];
extern const u8 gText_Upper[];
extern const u8 gText_Lower[];
extern const u8 gText_Symbols[];
extern const u8 gText_Register2[];
extern const u8 gText_Exit[];
#endif //GUARD_STRINGS_H
+14
View File
@@ -5,10 +5,24 @@
#define CHAR_SPACE 0x00
#define CHAR_0 0xA1
#define CHAR_1 0xA2
#define CHAR_2 0xA3
#define CHAR_3 0xA4
#define CHAR_4 0xA5
#define CHAR_5 0xA6
#define CHAR_6 0xA7
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_ELLIPSIS 0xB0
#define CHAR_DBL_QUOT_LEFT 0xB1
#define CHAR_DBL_QUOT_RIGHT 0xB2
#define CHAR_SGL_QUOT_LEFT 0xB3
#define CHAR_SGL_QUOT_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
+1
View File
@@ -26,6 +26,7 @@ void TextWindow_SetUserSelectedFrame(u8 windowId, u16 tileStart, u8 palette);
void LoadUserWindowBorderGfx(u8 windowId, u16 tileStart, u8 palette);
void sub_814FDA0(u8 windowId, u16 tileStart, u8 palette);
void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette);
void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum);
void TextWindow_LoadTilesStdFrame1(u8 windowId, u16 destOffset);
void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx);
void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx);
+4
View File
@@ -8,6 +8,10 @@
extern struct MailStruct gLinkPartnerMail[6];
extern u8 gSelectedTradeMonPositions[2];
extern const u8 gText_MaleSymbol4[];
extern const u8 gText_FemaleSymbol4[];
extern const u8 gText_GenderlessSymbol[];
extern const u16 gUnknown_826601C[];
void CB2_ReturnFromLinkTrade(void);
s32 sub_804FB34(void);
+1 -1
View File
@@ -24,7 +24,7 @@ struct TrainerCard
/*0x20*/ u16 pokemonTrades;
/*0x24*/ u32 money;
/*0x28*/ u16 var_28[4];
/*0x30*/ u8 playerName[PLAYER_NAME_LENGTH];
/*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x38*/ u8 version;
/*0x3A*/ u16 var_3A;
/*0x3C*/ u32 berryCrushPoints;
+1 -1
View File
@@ -7,7 +7,7 @@
struct UnkStruct_Shared
{
struct GFtgtGname gname;
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH];
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH + 1];
};
struct UnkStruct_x1C
+25 -3
View File
@@ -1,8 +1,30 @@
#ifndef GUARD_UNION_ROOM_CHAT_H
#define GUARD_UNION_ROOM_CHAT_H
void sub_801DD98(void);
void sub_8128420(void);
void copy_strings_to_sav1(void);
enum
{
UNION_ROOM_KB_PAGE_UPPER,
UNION_ROOM_KB_PAGE_LOWER,
UNION_ROOM_KB_PAGE_EMOJI,
UNION_ROOM_KB_PAGE_COUNT
};
extern const u8 *const gUnionRoomKeyboardText[UNION_ROOM_KB_PAGE_COUNT][UNION_ROOM_KB_ROW_COUNT];
void EnterUnionRoomChat(void);
u8 *UnionRoomChat_GetWorkRegisteredText(int arg0);
void UnionRoomChat_GetCursorColAndRow(u8 *colp, u8 *rowp);
u8 *UnionRoomChat_GetMessageEntryBuffer(void);
int UnionRoomChat_LenMessageEntryBuffer(void);
void UnionRoomChat_GetBufferSelectionRegion(u32 *startp, u32 *diffp);
u8 *UnionRoomChat_GetEndOfMessageEntryBuffer(void);
u16 UnionRoomChat_GetNumCharsInMessageEntryBuffer(void);
u8 *UnionRoomChat_GetLastReceivedMessage(void);
u16 UnionRoomChat_GetReceivedPlayerIndex(void);
int UnionRoomChat_GetMessageEntryCursorPosition(void);
int UnionRoomChat_GetWhetherShouldShowCaseToggleIcon(void);
u8 *UnionRoomChat_GetNameOfPlayerWhoDisbandedChat(void);
void UnionRoomChat_InitializeRegisteredTexts(void);
u8 GetCurrentKeyboardPage(void);
#endif // GUARD_UNION_ROOM_CHAT_H
+34
View File
@@ -0,0 +1,34 @@
#ifndef GUARD_UNION_ROOM_CHAT_DISPLAY_H
#define GUARD_UNION_ROOM_CHAT_DISPLAY_H
#define CHATDISPLAYROUTINE_LOADGFX 0
#define CHATDISPLAYROUTINE_MOVEKBCURSOR 1
#define CHATDISPLAYROUTINE_CURSORBLINK 2
#define CHATDISPLAYROUTINE_SHOWKBSWAPMENU 3
#define CHATDISPLAYROUTINE_HIDEKBSWAPMENU 4
#define CHATDISPLAYROUTINE_SWITCHPAGES 5
#define CHATDISPLAYROUTINE_SHOWQUITCHATTINGDIALOG 6
#define CHATDISPLAYROUTINE_DESTROYSTDMSGANDYESNO 7
#define CHATDISPLAYROUTINE_PRINTMSG 8
#define CHATDISPLAYROUTINE_PRINTREGISTERWHERE 9
#define CHATDISPLAYROUTINE_CANCELREGISTER 10
#define CHATDISPLAYROUTINE_RETURNTOKB 11
#define CHATDISPLAYROUTINE_SCROLLCHAT 12
#define CHATDISPLAYROUTINE_PRINTINPUTTEXT 13
#define CHATDISPLAYROUTINE_ASKSAVE 14
#define CHATDISPLAYROUTINE_ASKOVERWRITESAVE 15
#define CHATDISPLAYROUTINE_PRINTSAVING 16
#define CHATDISPLAYROUTINE_PRINTSAVEDTHEGAME 17
#define CHATDISPLAYROUTINE_PRINTEXITINGCHAT 18
#define CHATDISPLAYROUTINE_PRINTLEADERLEFT 19
#define CHATDISPLAYROUTINE_SHOWCONFIRMLEADERLEAVEDIALOG 20
bool8 UnionRoomChat_TryAllocGraphicsWork(void);
bool32 UnionRoomChat_RunDisplaySubtask0(void);
void UnionRoomChat_FreeGraphicsWork(void);
void UnionRoomChat_RunDisplaySubtasks(void);
void UnionRoomChat_StartDisplaySubtask(u16 a0, u8 a1);
u8 RunDisplaySubtask(u8 a0);
s8 UnionRoomChat_ProcessInput(void);
#endif //GUARD_UNION_ROOM_CHAT_DISPLAY_H
+16
View File
@@ -0,0 +1,16 @@
#ifndef GUARD_UNION_ROOM_CHAT_OBJECTS_H
#define GUARD_UNION_ROOM_CHAT_OBJECTS_H
bool32 UnionRoomChat_TryAllocSpriteWork(void);
void UnionRoomChat_FreeSpriteWork(void);
void UnionRoomChat_CreateSelectorCursorObj(void);
void UnionRoomChat_ToggleSelectorCursorObjVisibility(bool32 invisible);
void UnionRoomChat_MoveSelectorCursorObj(void);
void UnionRoomChat_UpdateObjPalCycle(u32 idx);
void UnionRoomChat_SetSelectorCursorClosedImage(void);
bool32 UnionRoomChat_AnimateSelectorCursorReopen(void);
void UnionRoomChat_SpawnTextEntryPointerSprites(void);
void CreatePageSwitchUISprites(void);
void UpdateVisibleUnionRoomChatIcon(void);
#endif //GUARD_UNION_ROOM_CHAT_OBJECTS_H
+6 -2
View File
@@ -246,7 +246,9 @@ SECTIONS {
src/union_room_battle.o(.text);
asm/pokemon_special_anim.o(.text);
src/party_menu.o(.text);
asm/union_room_chat.o(.text);
src/union_room_chat.o(.text);
src/union_room_chat_display.o(.text);
src/union_room_chat_objects.o(.text);
src/help_system_812B1E0.o(.text);
src/quest_log_battle.o(.text);
src/fame_checker.o(.text);
@@ -534,7 +536,9 @@ SECTIONS {
src/union_room_message.o(.rodata);
data/pokemon_special_anim.o(.rodata);
src/party_menu.o(.rodata);
data/union_room_chat.o(.rodata);
src/union_room_chat.o(.rodata);
src/union_room_chat_display.o(.rodata);
src/union_room_chat_objects.o(.rodata);
src/help_system_812B1E0.o(.rodata);
src/fame_checker.o(.rodata);
src/menu2.o(.rodata);
+3 -27
View File
@@ -1,44 +1,34 @@
#include "global.h"
#include "pokemon.h"
#include "gflib.h"
#include "battle.h"
#include "daycare.h"
#include "string_util.h"
#include "constants/species.h"
#include "constants/items.h"
#include "mail_data.h"
#include "pokemon_storage_system.h"
#include "event_data.h"
#include "random.h"
#include "main.h"
#include "constants/moves.h"
#include "text.h"
#include "menu.h"
#include "new_menu_helpers.h"
#include "script.h"
#include "strings.h"
#include "task.h"
#include "window.h"
#include "party_menu.h"
#include "list_menu.h"
#include "overworld.h"
#include "pokedex.h"
#include "decompress.h"
#include "palette.h"
#include "sound.h"
#include "constants/songs.h"
#include "text_window.h"
#include "trig.h"
#include "malloc.h"
#include "gpu_regs.h"
#include "bg.h"
#include "m4a.h"
#include "graphics.h"
#include "scanline_effect.h"
#include "naming_screen.h"
#include "help_system.h"
#include "field_fadetransition.h"
#include "trade.h"
#include "constants/daycare.h"
#include "constants/pokemon.h"
#include "constants/region_map.h"
// Combination of RSE's Day-Care (re-used on Four Island), FRLG's Day-Care, and egg_hatch.c
@@ -60,20 +50,6 @@ struct EggHatchData
u8 textColor[3];
};
extern const u8 gText_MaleSymbol4[];
extern const u8 gText_FemaleSymbol4[];
extern const u8 gText_GenderlessSymbol[];
extern const u8 gText_Lv[];
extern const u8 gDaycareText_GetAlongVeryWell[];
extern const u8 gDaycareText_GetAlong[];
extern const u8 gDaycareText_DontLikeOther[];
extern const u8 gDaycareText_PlayOther[];
extern const u8 gExpandedPlaceholder_Empty[];
extern const u32 gUnknown_826601C[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
// this file's functions
static void ClearDaycareMonMail(struct DayCareMail *mail);
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
@@ -638,7 +614,7 @@ static void ClearDaycareMonMail(struct DayCareMail *mail)
{
s32 i;
for (i = 0; i < PLAYER_NAME_LENGTH/* + 1*/; i++)
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
mail->OT_name[i] = 0;
for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
mail->monName[i] = 0;
+16 -15
View File
@@ -30,7 +30,7 @@ static u16 gUnknown_3002008[7];
struct GFtgtGname gHostRFUtgtGnameBuffer;
struct UnkRfuStruct_2 Rfu;
u8 gHostRFUtgtUnameBuffer[PLAYER_NAME_LENGTH];
u8 gHostRFUtgtUnameBuffer[PLAYER_NAME_LENGTH + 1];
static void sub_80F8AA4(void);
static void sub_80F8AEC(void);
@@ -448,7 +448,7 @@ static void sub_80F8B34(u8 taskId)
gTasks[taskId].data[1] = 8;
Rfu.unk_0c = 1;
CreateTask(sub_80FA834, 5);
Rfu.unk_ce8 = 1;
Rfu.unk_ce8 = TRUE;
DestroyTask(taskId);
break;
}
@@ -1337,7 +1337,7 @@ static void sub_80FA1C4(void)
static void sub_80FA224(void)
{
if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0)
if (gSendCmd[0] == 0 && !Rfu.unk_ce8)
{
sub_80F9D04(0x5f00);
Rfu.RfuFunc = sub_80FA1C4;
@@ -1620,7 +1620,7 @@ static void sub_80FA834(u8 taskId)
if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2)
{
Rfu.unk_ce8 = 0;
Rfu.unk_ce8 = FALSE;
DestroyTask(taskId);
}
switch (gTasks[taskId].data[0])
@@ -1681,7 +1681,7 @@ static void sub_80FA834(u8 taskId)
case 6:
DestroyTask(taskId);
gReceivedRemoteLinkPlayers = 1;
Rfu.unk_ce8 = 0;
Rfu.unk_ce8 = FALSE;
sub_80FEA34(1, 0x258);
if (Rfu.unk_ce6)
{
@@ -1740,7 +1740,7 @@ static void sub_80FAA94(u8 taskId)
u8 r4 = Rfu.unk_cde[gUnknown_843EC38[Rfu.unk_ce9]];
if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2)
{
Rfu.unk_ce8 = 0;
Rfu.unk_ce8 = FALSE;
DestroyTask(taskId);
}
switch (gTasks[taskId].data[0])
@@ -1790,7 +1790,7 @@ static void sub_80FAA94(u8 taskId)
{
CpuFill16(0, gBlockRecvBuffer, sizeof(struct UnkRfuStruct_8010A14));
ResetBlockReceivedFlag(0);
Rfu.unk_ce8 = 0;
Rfu.unk_ce8 = FALSE;
if (Rfu.unk_ce6)
{
for (i = 0; i < RFU_CHILD_MAX; i++)
@@ -1799,7 +1799,7 @@ static void sub_80FAA94(u8 taskId)
{
Rfu.unk_ce5 = 1 << i;
Rfu.unk_ce6 ^= (1 << i);
Rfu.unk_ce8 = 1;
Rfu.unk_ce8 = TRUE;
break;
}
}
@@ -1948,7 +1948,7 @@ void sub_80FB008(u8 a0, u32 a1, u32 a2)
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
void sub_80FB030(u32 a0)
void sub_80FB030(u32 linkPlayerCount)
{
s32 i;
u32 r5;
@@ -1964,9 +1964,10 @@ void sub_80FB030(u32 a0)
{
if ((r8 >> i) & 1)
{
r7 |= ((0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7)) << (r5 << 3));
r7 |= ((
0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7)) << (r5 << 3));
r5++;
if (r5 == a0 - 1)
if (r5 == linkPlayerCount - 1)
break;
}
}
@@ -2214,11 +2215,11 @@ static void sub_80FB5EC(u8 a0, u8 unused1)
if (idx != 0)
{
r1 = 1 << sub_80F886C(idx);
if (Rfu.unk_ce6 == 0 && Rfu.unk_ce8 == 0)
if (Rfu.unk_ce6 == 0 && !Rfu.unk_ce8)
{
Rfu.unk_ce5 = r1;
Rfu.unk_ce6 |= (r1 ^ idx);
Rfu.unk_ce8 = 1;
Rfu.unk_ce8 = TRUE;
}
else
{
@@ -2360,7 +2361,7 @@ bool32 sub_80FBA00(void)
return FALSE;
}
bool32 sub_80FBA1C(void)
bool32 GetRfuUnkCE8(void)
{
return Rfu.unk_ce8;
}
@@ -2534,7 +2535,7 @@ void sub_80FBD6C(u32 a0)
static void sub_80FBDB8(u8 taskId)
{
if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0)
if (gSendCmd[0] == 0 && !Rfu.unk_ce8)
{
sub_80F9D04(0xED00);
gSendCmd[1] = gTasks[taskId].data[0];
+2 -2
View File
@@ -848,7 +848,7 @@ static void ZeroName(u8 *name)
{
s32 i;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
{
*name++ = 0;
}
@@ -858,7 +858,7 @@ static bool32 NameIsEmpty(const u8 *name)
{
s32 i;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
{
if (*name++ != 0)
{
+2 -2
View File
@@ -20,7 +20,7 @@ void ClearMailStruct(struct MailStruct *mail)
for (i = 0; i < MAIL_WORDS_COUNT; i++)
mail->words[i] = 0xFFFF;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
mail->playerName[i] = EOS;
for (i = 0; i < 4; i++)
mail->trainerId[i] = 0;
@@ -52,7 +52,7 @@ u8 GiveMailToMon(struct Pokemon *mon, u16 itemId)
{
for (i = 0; i < MAIL_WORDS_COUNT; i++)
gSaveBlock1Ptr->mail[id].words[i] = 0xFFFF;
for (i = 0; i < PLAYER_NAME_LENGTH - 1 && gSaveBlock2Ptr->playerName[i] != EOS; i++)
for (i = 0; i < PLAYER_NAME_LENGTH && gSaveBlock2Ptr->playerName[i] != EOS; i++)
gSaveBlock1Ptr->mail[id].playerName[i] = gSaveBlock2Ptr->playerName[i];
for (; i <= 5; i++)
gSaveBlock1Ptr->mail[id].playerName[i] = CHAR_SPACE;
+2 -2
View File
@@ -108,7 +108,7 @@ void ResetMenuAndMonGlobals(void)
void NewGameInitData(void)
{
u8 rivalName[PLAYER_NAME_LENGTH];
u8 rivalName[PLAYER_NAME_LENGTH + 1];
StringCopy(rivalName, gSaveBlock1Ptr->rivalName);
gDifferentSaveFile = TRUE;
@@ -143,7 +143,7 @@ void NewGameInitData(void)
sub_809C794();
InitEasyChatPhrases();
ResetTrainerFanClub();
copy_strings_to_sav1();
UnionRoomChat_InitializeRegisteredTexts();
ResetMiniGamesResults();
sub_8143D24();
SetAllRenewableItemFlags();
+2 -2
View File
@@ -1902,8 +1902,8 @@ static void GetDefaultName(u8 arg0, u8 namePick)
src = sRivalNameChoices[namePick];
dest = gSaveBlock1Ptr->rivalName;
}
for (i = 0; i < PLAYER_NAME_LENGTH - 1 && src[i] != EOS; i++)
for (i = 0; i < PLAYER_NAME_LENGTH && src[i] != EOS; i++)
dest[i] = src[i];
for (; i < PLAYER_NAME_LENGTH; i++)
for (; i < PLAYER_NAME_LENGTH + 1; i++)
dest[i] = EOS;
}
+2 -2
View File
@@ -2991,7 +2991,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
{
retVal = 0;
// FRLG changed this to 7 which used to be PLAYER_NAME_LENGTH
// FRLG changed this to 7 which used to be PLAYER_NAME_LENGTH + 1
while (retVal < 7)
{
data[retVal] = boxMon->otName[retVal];
@@ -5769,7 +5769,7 @@ s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor)
bool8 IsTradedMon(struct Pokemon *mon)
{
u8 otName[7 + 1]; // change PLAYER_NAME_LENGTH to 7
u8 otName[PLAYER_NAME_LENGTH];
u32 otId;
GetMonData(mon, MON_DATA_OT_NAME, otName);
otId = GetMonData(mon, MON_DATA_OT_ID, 0);
+22 -22
View File
@@ -2411,8 +2411,8 @@ static void BufferFanClubTrainerName(struct LinkBattleRecords *linkRecords, u8 w
else
{
str = gStringVar1;
StringCopyN(str, linkTrainerName, PLAYER_NAME_LENGTH - 1);
str[PLAYER_NAME_LENGTH - 1] = EOS;
StringCopyN(str, linkTrainerName, PLAYER_NAME_LENGTH);
str[PLAYER_NAME_LENGTH] = EOS;
if ( str[0] == EXT_CTRL_CODE_BEGIN
&& str[1] == EXT_CTRL_CODE_JPN)
{
@@ -3401,8 +3401,8 @@ static const u16 *BufferQuestLogText_LinkTraded(const u16 *a0)
{
const u16 *r6 = a0 + 4;
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH);
memcpy(gStringVar1, r6, PLAYER_NAME_LENGTH - 1);
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1);
memcpy(gStringVar1, r6, PLAYER_NAME_LENGTH);
BufferLinkPartnersName(gStringVar1);
QuestLog_GetSpeciesName(a0[3], gStringVar2, 0); // Mon received
@@ -3435,7 +3435,7 @@ static u16 *BufferQuestLogData_LinkBattledSingle(u16 *a0, const u16 *eventData)
a0[0] = QL_EVENT_LINK_BATTLED_SINGLE;
a0[1] = sQuestLogIdx;
*((u8 *)a0 + 4) = *((const u8 *)eventData + 0);
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH - 1);
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH);
a0 += 6;
return a0;
}
@@ -3444,8 +3444,8 @@ static const u16 *BufferQuestLogText_LinkBattledSingle(const u16 *a0)
{
DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH);
memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH - 1);
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1);
memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH);
BufferLinkPartnersName(gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, sBattleOutcomeTexts[((const u8 *)a0)[4]]);
@@ -3459,7 +3459,7 @@ static u16 *BufferQuestLogData_LinkBattledDouble(u16 *a0, const u16 *eventData)
a0[0] = QL_EVENT_LINK_BATTLED_DOUBLE;
a0[1] = sQuestLogIdx;
*((u8 *)a0 + 4) = *((const u8 *)eventData + 0);
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH - 1);
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH);
a0 += 6;
return a0;
}
@@ -3468,8 +3468,8 @@ static const u16 *BufferQuestLogText_LinkBattledDouble(const u16 *a0)
{
DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH);
memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH - 1);
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1);
memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH);
BufferLinkPartnersName(gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, sBattleOutcomeTexts[((const u8 *)a0)[4]]);
@@ -3483,9 +3483,9 @@ static u16 *BufferQuestLogData_LinkBattledMulti(u16 *a0, const u16 *eventData)
a0[0] = QL_EVENT_LINK_BATTLED_MULTI;
a0[1] = sQuestLogIdx;
*((u8 *)a0 + 4) = *((const u8 *)eventData + 0);
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH - 1);
memcpy((u8 *)a0 + 12, (const u8 *)eventData + 8, PLAYER_NAME_LENGTH - 1);
memcpy((u8 *)a0 + 19, (const u8 *)eventData + 15, PLAYER_NAME_LENGTH - 1);
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH);
memcpy((u8 *)a0 + 12, (const u8 *)eventData + 8, PLAYER_NAME_LENGTH);
memcpy((u8 *)a0 + 19, (const u8 *)eventData + 15, PLAYER_NAME_LENGTH);
a0 += 13;
return a0;
}
@@ -3494,9 +3494,9 @@ static const u16 *BufferQuestLogText_LinkBattledMulti(const u16 *a0)
{
DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH);
memset(gStringVar2, EOS, PLAYER_NAME_LENGTH);
memset(gStringVar3, EOS, PLAYER_NAME_LENGTH);
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1);
memset(gStringVar2, EOS, PLAYER_NAME_LENGTH + 1);
memset(gStringVar3, EOS, PLAYER_NAME_LENGTH + 1);
StringCopy7(gStringVar1, (const u8 *)a0 + 5);
StringCopy7(gStringVar2, (const u8 *)a0 + 12);
StringCopy7(gStringVar3, (const u8 *)a0 + 19);
@@ -3548,7 +3548,7 @@ static u16 *BufferQuestLogData_LinkTradedUnionRoom(u16 *a0, const u16 *eventData
a0[1] = sQuestLogIdx;
a0[2] = eventData[0];
a0[3] = eventData[1];
memcpy(r4, eventData + 2, PLAYER_NAME_LENGTH - 1);
memcpy(r4, eventData + 2, PLAYER_NAME_LENGTH);
r4 += 8;
return (u16 *)r4;
}
@@ -3556,8 +3556,8 @@ static u16 *BufferQuestLogData_LinkTradedUnionRoom(u16 *a0, const u16 *eventData
static const u16 *BufferQuestLogText_LinkTradedUnionRoom(const u16 *a0)
{
const u8 *r6 = (const u8 *)(a0 + 4);
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH);
memcpy(gStringVar1, r6, PLAYER_NAME_LENGTH - 1);
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1);
memcpy(gStringVar1, r6, PLAYER_NAME_LENGTH);
BufferLinkPartnersName(gStringVar1);
QuestLog_GetSpeciesName(a0[3], gStringVar2, 0);
QuestLog_GetSpeciesName(a0[2], gStringVar3, 0);
@@ -3571,15 +3571,15 @@ static u16 *BufferQuestLogData_LinkBattledUnionRoom(u16 *a0, const u16 *eventDat
a0[0] = QL_EVENT_LINK_BATTLED_UNION;
a0[1] = sQuestLogIdx;
*(u8 *)&a0[2] = *(const u8 *)&eventData[0];
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH - 1);
memcpy((u8 *)a0 + 5, (const u8 *)eventData + 1, PLAYER_NAME_LENGTH);
a0 += 6;
return a0;
}
static const u16 *BufferQuestLogText_LinkBattledUnionRoom(const u16 *a0)
{
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH);
memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH - 1);
memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1);
memcpy(gStringVar1, (const u8 *)a0 + 5, PLAYER_NAME_LENGTH);
BufferLinkPartnersName(gStringVar1);
StringCopy(gStringVar2, sBattleOutcomeTexts[*(const u8 *)&a0[2]]);
StringExpandPlaceholders(gStringVar4, QuestLog_Text_BattledTrainerEndedInOutcome);
+1 -24
View File
@@ -1,41 +1,22 @@
#include "global.h"
#include "palette.h"
#include "gflib.h"
#include "task.h"
#include "decompress.h"
#include "gpu_regs.h"
#include "malloc.h"
#include "bg.h"
#include "text.h"
#include "window.h"
#include "librfu.h"
#include "text_window.h"
#include "evolution_scene.h"
#include "pokemon_icon.h"
#include "pokedex.h"
#include "mail_data.h"
#include "graphics.h"
#include "link.h"
#include "random.h"
#include "save.h"
#include "load_save.h"
#include "quest_log.h"
#include "field_fadetransition.h"
#include "mevent.h"
#include "help_system.h"
#include "link_rfu.h"
#include "cable_club.h"
#include "data.h"
#include "sound.h"
#include "string_util.h"
#include "strings.h"
#include "menu.h"
#include "overworld.h"
#include "battle_anim.h"
#include "pokeball.h"
#include "party_menu.h"
#include "util.h"
#include "daycare.h"
#include "script.h"
#include "event_data.h"
#include "battle_interface.h"
#include "pokemon_summary_screen.h"
@@ -43,11 +24,7 @@
#include "new_menu_helpers.h"
#include "trade.h"
#include "trade_scene.h"
#include "constants/species.h"
#include "constants/items.h"
#include "constants/easy_chat.h"
#include "constants/songs.h"
#include "constants/region_map.h"
#include "constants/moves.h"
struct TradeMenuResources
+2 -2
View File
@@ -1852,7 +1852,7 @@ static void sub_81175BC(u8 taskId)
sub_80F8D14();
SetHostRFUtgtGname(69, 0, 1);
}
sub_8128420();
EnterUnionRoomChat();
break;
case 8:
case 72:
@@ -3385,7 +3385,7 @@ static void sub_81199FC(u8 taskId)
case 2:
if (sUnionRoomPlayerName[0] == EOS)
{
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
{
if (structPtr->field_0->arr[i].field_1A_0 == 1)
{
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+318
View File
@@ -0,0 +1,318 @@
#include "global.h"
#include "gflib.h"
#include "decompress.h"
#include "graphics.h"
#include "union_room_chat.h"
struct UnionRoomChat3
{
struct Sprite *selectorCursorSprite;
struct Sprite *characterSelectCursorSprite;
struct Sprite *textEntryCursorSprite;
struct Sprite *rButtonSprite;
struct Sprite *chatIconsSprite;
u16 cursorBlinkTimer;
};
static EWRAM_DATA struct UnionRoomChat3 *sWork = NULL;
static void SpriteCB_TextEntryCursor(struct Sprite * sprite);
static void SpriteCB_CharacterSelectCursor(struct Sprite * sprite);
static const u16 sUnionRoomChatInterfacePal[] = INCBIN_U16("graphics/union_room_chat/unk_845AC14.gbapal");
static const u32 sSelectorCursorGfxTiles[] = INCBIN_U32("graphics/union_room_chat/unk_845AC34.4bpp.lz");
static const u32 sHorizontalBarGfxTiles[] = INCBIN_U32("graphics/union_room_chat/unk_845AEB8.4bpp.lz");
static const u32 sMenuCursorGfxTiles[] = INCBIN_U32("graphics/union_room_chat/unk_845AED8.4bpp.lz");
static const u32 sRButtonGfxTiles[] = INCBIN_U32("graphics/union_room_chat/unk_845AF04.4bpp.lz");
static const struct CompressedSpriteSheet sSpriteSheets[] = {
{sSelectorCursorGfxTiles, 0x1000, 0},
{sMenuCursorGfxTiles, 0x0040, 1},
{sHorizontalBarGfxTiles, 0x0040, 2},
{sRButtonGfxTiles, 0x0080, 3},
{gUnionRoomChatIcons, 0x0400, 4}
};
static const struct SpritePalette sSpritePalette = {
sUnionRoomChatInterfacePal, 0
};
static const struct OamData sOamData_64x32_1 = {
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
.priority = 1
};
static const union AnimCmd sAnim_CursorSmallOpen[] = {
ANIMCMD_FRAME(0x00, 30),
ANIMCMD_END
};
static const union AnimCmd sAnim_CursorSmallClosed[] = {
ANIMCMD_FRAME(0x20, 30),
ANIMCMD_END
};
static const union AnimCmd sAnim_CursorLargeOpen[] = {
ANIMCMD_FRAME(0x40, 30),
ANIMCMD_END
};
static const union AnimCmd sAnim_CursorLargeClosed[] = {
ANIMCMD_FRAME(0x60, 30),
ANIMCMD_END
};
static const union AnimCmd *const sSpriteAnims_SelectorCursor[] = {
sAnim_CursorSmallOpen,
sAnim_CursorSmallClosed,
sAnim_CursorLargeOpen,
sAnim_CursorLargeClosed
};
static const struct SpriteTemplate sSpriteTemplate_SelectorCursor = {
.tileTag = 0,
.paletteTag = 0,
.oam = &sOamData_64x32_1,
.anims = sSpriteAnims_SelectorCursor,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
static const struct OamData sOamData_8x16_2 = {
.shape = SPRITE_SHAPE(8x16),
.size = SPRITE_SIZE(8x16),
.priority = 2
};
static const struct SpriteTemplate sSpriteTemplate_TextEntryCursor = {
.tileTag = 2,
.paletteTag = 0,
.oam = &sOamData_8x16_2,
.anims = gDummySpriteAnimTable,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_TextEntryCursor
};
static const struct SpriteTemplate sSpriteTemplate_CharacterSelectCursor = {
.tileTag = 1,
.paletteTag = 0,
.oam = &sOamData_8x16_2,
.anims = gDummySpriteAnimTable,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_CharacterSelectCursor
};
static const struct OamData sOamData_16x16_2 = {
.shape = SPRITE_SHAPE(16x16),
.size = SPRITE_SIZE(16x16),
.priority = 2
};
static const struct OamData sOamData_32x16_2 = {
.shape = SPRITE_SHAPE(32x16),
.size = SPRITE_SIZE(32x16),
.priority = 2
};
static const union AnimCmd sAnim_UnionRoomChatIcons_ToggleCase[] = {
ANIMCMD_FRAME(0x00, 2),
ANIMCMD_END
};
static const union AnimCmd sAnim_UnionRoomChatIcons_Dummy1[] = {
ANIMCMD_FRAME(0x08, 2),
ANIMCMD_END
};
static const union AnimCmd sAnim_UnionRoomChatIcons_Dummy2[] = {
ANIMCMD_FRAME(0x10, 2),
ANIMCMD_END
};
static const union AnimCmd sAnim_UnionRoomChatIcons_Register[] = {
ANIMCMD_FRAME(0x18, 2),
ANIMCMD_END
};
static const union AnimCmd *const sSpriteAnimTable_UnionRoomChatIcons[] = {
sAnim_UnionRoomChatIcons_ToggleCase,
sAnim_UnionRoomChatIcons_Dummy1,
sAnim_UnionRoomChatIcons_Dummy2,
sAnim_UnionRoomChatIcons_Register
};
static const struct SpriteTemplate sSpriteTemplate_RButton = {
.tileTag = 3,
.paletteTag = 0,
.oam = &sOamData_16x16_2,
.anims = gDummySpriteAnimTable,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
static const struct SpriteTemplate sSpriteTemplate_UnionRoomChatIcons = {
.tileTag = 4,
.paletteTag = 0,
.oam = &sOamData_32x16_2,
.anims = sSpriteAnimTable_UnionRoomChatIcons,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
bool32 UnionRoomChat_TryAllocSpriteWork(void)
{
int i;
for (i = 0; i < NELEMS(sSpriteSheets); i++)
LoadCompressedSpriteSheet(&sSpriteSheets[i]);
LoadSpritePalette(&sSpritePalette);
sWork = Alloc(sizeof(struct UnionRoomChat3));
if (sWork == NULL)
return FALSE;
return TRUE;
}
void UnionRoomChat_FreeSpriteWork(void)
{
if (sWork != NULL)
Free(sWork);
}
void UnionRoomChat_CreateSelectorCursorObj(void)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_SelectorCursor, 10, 24, 0);
sWork->selectorCursorSprite = &gSprites[spriteId];
}
void UnionRoomChat_ToggleSelectorCursorObjVisibility(bool32 invisible)
{
sWork->selectorCursorSprite->invisible = invisible;
}
void UnionRoomChat_MoveSelectorCursorObj(void)
{
u8 x, y;
u8 page = GetCurrentKeyboardPage();
UnionRoomChat_GetCursorColAndRow(&x, &y);
if (page != UNION_ROOM_KB_PAGE_COUNT)
{
StartSpriteAnim(sWork->selectorCursorSprite, 0);
sWork->selectorCursorSprite->pos1.x = x * 8 + 10;
sWork->selectorCursorSprite->pos1.y = y * 12 + 24;
}
else
{
StartSpriteAnim(sWork->selectorCursorSprite, 2);
sWork->selectorCursorSprite->pos1.x = 24;
sWork->selectorCursorSprite->pos1.y = y * 12 + 24;
}
}
void UnionRoomChat_UpdateObjPalCycle(int arg0)
{
const u16 *palette = &sUnionRoomChatInterfacePal[arg0 * 2 + 1];
u8 index = IndexOfSpritePaletteTag(0);
LoadPalette(palette, index * 16 + 0x101, 4);
}
void UnionRoomChat_SetSelectorCursorClosedImage(void)
{
if (GetCurrentKeyboardPage() != UNION_ROOM_KB_PAGE_COUNT)
StartSpriteAnim(sWork->selectorCursorSprite, 1);
else
StartSpriteAnim(sWork->selectorCursorSprite, 3);
sWork->cursorBlinkTimer = 0;
}
bool32 UnionRoomChat_AnimateSelectorCursorReopen(void)
{
if (sWork->cursorBlinkTimer > 3)
return FALSE;
if (++sWork->cursorBlinkTimer > 3)
{
if (GetCurrentKeyboardPage() != UNION_ROOM_KB_PAGE_COUNT)
StartSpriteAnim(sWork->selectorCursorSprite, 0);
else
StartSpriteAnim(sWork->selectorCursorSprite, 2);
return FALSE;
}
return TRUE;
}
void UnionRoomChat_SpawnTextEntryPointerSprites(void)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_TextEntryCursor, 76, 152, 2);
sWork->textEntryCursorSprite = &gSprites[spriteId];
spriteId = CreateSprite(&sSpriteTemplate_CharacterSelectCursor, 64, 152, 1);
sWork->characterSelectCursorSprite = &gSprites[spriteId];
}
static void SpriteCB_TextEntryCursor(struct Sprite *sprite)
{
int var0 = UnionRoomChat_GetMessageEntryCursorPosition();
if (var0 == 15)
{
sprite->invisible = TRUE;
}
else
{
sprite->invisible = FALSE;
sprite->pos1.x = var0 * 8 + 76;
}
}
static void SpriteCB_CharacterSelectCursor(struct Sprite *sprite)
{
if (++sprite->data[0] > 4)
{
sprite->data[0] = 0;
if (++sprite->pos2.x > 4)
sprite->pos2.x = 0;
}
}
void CreatePageSwitchUISprites(void)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_RButton, 8, 152, 3);
sWork->rButtonSprite = &gSprites[spriteId];
spriteId = CreateSprite(&sSpriteTemplate_UnionRoomChatIcons, 32, 152, 4);
sWork->chatIconsSprite = &gSprites[spriteId];
sWork->chatIconsSprite->invisible = TRUE;
}
void UpdateVisibleUnionRoomChatIcon(void)
{
if (GetCurrentKeyboardPage() == UNION_ROOM_KB_PAGE_COUNT)
{
if (UnionRoomChat_LenMessageEntryBuffer() != 0)
{
// REGISTER
sWork->chatIconsSprite->invisible = FALSE;
StartSpriteAnim(sWork->chatIconsSprite, 3);
}
else
{
sWork->chatIconsSprite->invisible = TRUE;
}
}
else
{
int anim = UnionRoomChat_GetWhetherShouldShowCaseToggleIcon();
if (anim == 3)
{
sWork->chatIconsSprite->invisible = TRUE;
}
else
{
// A <--> a
sWork->chatIconsSprite->invisible = FALSE;
StartSpriteAnim(sWork->chatIconsSprite, anim);
}
}
}
+5 -10
View File
@@ -369,17 +369,12 @@ gUnknown_203B098: @ 203B098
.align 2
.include "src/party_menu.o"
.align 2
gUnknown_203B0E0: @ 203B0E0
.space 0x4
gUnknown_203B0E4: @ 203B0E4
.space 0x4
gUnknown_203B0E8: @ 203B0E8
.space 0x4
.include "src/union_room_chat.o"
.align 2
.include "src/union_room_chat_display.o"
.align 2
.include "src/union_room_chat_objects.o"
.align 2
.include "src/help_system_812B1E0.o"
.align 2