{"name":"King Boo Carnival","description":"Carnival tickets\n& merry mayhem.","game":3,"type":"NORMAL","difficulty":3,"spaces":[{"x":1062,"y":783,"type":7,"z":0},{"x":409,"y":409,"z":0,"type":1,"star":true},{"x":441,"y":218,"z":0,"type":1,"star":true},{"x":696,"y":332,"z":0,"type":1,"star":true},{"x":984,"y":480,"z":0,"type":1,"star":true},{"x":271,"y":803,"z":0,"type":1,"star":false},{"x":462,"y":671,"z":0,"type":1,"star":true},{"x":842,"y":813,"z":0,"type":1,"star":false},{"x":558,"y":669,"z":0,"type":13,"events":[{"id":"King Boo Carnival Shop v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"ShopSpace":109}}]},{"x":205,"y":234,"z":0,"type":13,"rotation":48,"events":[{"id":"King Boo Carnival Shop v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"ShopSpace":137}}]},{"x":208,"y":547,"z":0,"type":12,"events":[{"id":"BANK","activationType":1,"executionType":1}]},{"x":981,"y":231,"z":0,"type":12,"events":[{"id":"BANK","activationType":1,"executionType":1}]},{"x":1021,"y":781,"z":0,"type":0},{"x":962,"y":692,"z":0,"type":0,"events":[{"id":"Ticket Booth v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"TicketBooth":122}}]},{"x":885,"y":659,"z":0,"type":0,"events":[{"id":"Prize Exchange v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"PrizeExchange":123}}]},{"x":651,"y":483,"z":0,"type":0},{"x":607,"y":491,"z":0,"type":0,"events":[{"id":"Gachapon v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"Gachapon":129,"CurrentSpace":16}}]},{"x":322,"y":408,"z":0,"type":0,"events":[{"id":"Enter Teacups v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"BooSpace":138,"TeacupsSpace":29,"TeacupsSpacePrev":30}}]},{"x":137,"y":377,"z":0,"type":0},{"x":698,"y":428,"z":0,"type":0},{"x":928,"y":389,"z":0,"type":0,"events":[{"id":"Concession v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"Concession":124}}]},{"x":995,"y":324,"z":0,"type":0,"events":[{"id":"Lady Bow v2","activationType":1,"executionType":1,"custom":true,"parameterValues":{"LadyBowSpace":125}}]},{"x":595,"y":252,"z":0,"type":0,"events":[{"id":"Fear House v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"FearHouse":23,"KingBooSpace":129}}]},{"x":596,"y":206,"z":0,"type":0},{"x":202,"y":641,"z":0,"type":0},{"x":113,"y":759,"z":0,"type":0},{"x":125,"y":719,"z":0,"type":0},{"x":127,"y":780,"z":0,"type":0,"events":[]},{"x":148,"y":798,"z":0,"type":0,"events":[{"id":"BOO","activationType":1,"executionType":1}]},{"x":320,"y":371,"z":0,"type":0,"events":[{"id":"Next Space Setup","activationType":1,"executionType":1,"custom":true,"parameterValues":{"Next":30,"Prev":32}}]},{"x":322,"y":304,"z":0,"type":0,"events":[{"id":"Next Space Setup","activationType":1,"executionType":1,"custom":true,"parameterValues":{"Next":32,"Prev":31}},{"id":"Teacups v3.1","activationType":1,"executionType":1,"custom":true,"parameterValues":{"CurrentSpace":30}}]},{"x":425,"y":249,"z":0,"type":0,"events":[{"id":"Next Space Setup","activationType":1,"executionType":1,"custom":true,"parameterValues":{"Next":2,"Prev":44}}]},{"x":382,"y":268,"z":0,"type":0,"events":[{"id":"Next Space Setup","activationType":1,"executionType":1,"custom":true,"parameterValues":{"Next":31,"Prev":2}}]},{"x":993,"y":726,"z":0,"type":1},{"x":925,"y":658,"z":0,"type":1,"events":[{"id":"Merged Path Fix (v2)","activationType":3,"executionType":1,"custom":true,"parameterValues":{"Behind":13,"Next":14,"OtherBehind":76}}]},{"x":683,"y":663,"z":0,"type":1,"events":[{"id":"Merged Path Fix (v2)","activationType":3,"executionType":1,"custom":true,"parameterValues":{"Behind":66,"Next":67,"OtherBehind":107}}]},{"x":504,"y":413,"z":0,"type":4,"events":[{"id":"Strength Test v1.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"StrengthTest":136,"StrengthTestBoo":130}}]},{"x":142,"y":681,"z":0,"type":2},{"x":163,"y":655,"z":0,"type":0},{"x":179,"y":814,"z":0,"type":1},{"x":493,"y":811,"z":0,"type":4,"events":[{"id":"Boo Brothers Curse v1.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"BooBrother":131,"LeftOrRight":false}}]},{"x":549,"y":812,"z":0,"type":4,"events":[{"id":"Boo Brothers Curse v1.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"BooBrother":132,"LeftOrRight":true}}]},{"x":681,"y":461,"z":0,"type":0},{"x":361,"y":181,"z":0,"type":9},{"x":398,"y":202,"z":0,"type":4,"events":[{"id":"Boo Bellhouse v3","activationType":3,"executionType":1,"custom":true,"parameterValues":{"BooBellhouse":127}}]},{"x":702,"y":289,"z":0,"type":4,"events":[{"id":"Shady Boo v2","activationType":3,"executionType":1,"custom":true,"parameterValues":{"ShadyBoo":133}}]},{"x":459,"y":409,"z":0,"type":4,"events":[{"id":"Strength Test v1.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"StrengthTest":136,"StrengthTestBoo":130}}]},{"x":819,"y":175,"z":0,"type":9},{"x":793,"y":206,"z":0,"type":4,"events":[{"id":"Peepa Bellhouse v3.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"PeepaBellhouse":126}}]},{"x":704,"y":249,"z":0,"type":1,"events":[{"id":"Merged Path Fix (v2)","activationType":3,"executionType":1,"custom":true,"parameterValues":{"Behind":45,"Next":84,"OtherBehind":88}}]},{"x":994,"y":368,"z":0,"type":1,"events":[{"id":"Merged Path Fix (v2)","activationType":3,"executionType":1,"custom":true,"parameterValues":{"Behind":21,"Next":73,"OtherBehind":20}}]},{"x":143,"y":332,"z":0,"type":2},{"x":695,"y":378,"z":0,"type":11},{"x":745,"y":428,"z":0,"type":1},{"x":889,"y":810,"z":0,"type":4,"events":[{"id":"Peek-a-Boo v1.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"BoolockHolmes":134}}]},{"x":931,"y":803,"z":0,"type":4,"events":[{"id":"Peek-a-Boo v1.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"BoolockHolmes":134}}]},{"x":223,"y":804,"z":0,"type":11},{"x":324,"y":808,"z":0,"type":6},{"x":379,"y":811,"z":0,"type":2},{"x":434,"y":811,"z":0,"type":1,"star":true},{"x":606,"y":813,"z":0,"type":1},{"x":665,"y":815,"z":0,"type":1},{"x":724,"y":816,"z":0,"type":9},{"x":784,"y":815,"z":0,"type":15},{"x":838,"y":659,"z":0,"type":1},{"x":785,"y":661,"z":0,"type":1},{"x":735,"y":662,"z":0,"type":2},{"x":675,"y":616,"z":0,"type":1},{"x":666,"y":569,"z":0,"type":10},{"x":659,"y":521,"z":0,"type":1},{"x":791,"y":425,"z":0,"type":10},{"x":839,"y":417,"z":0,"type":1},{"x":888,"y":406,"z":0,"type":1},{"x":994,"y":426,"z":0,"type":2},{"x":967,"y":531,"z":0,"type":10},{"x":955,"y":568,"z":0,"type":1},{"x":940,"y":616,"z":0,"type":11},{"x":556,"y":482,"z":0,"type":1},{"x":520,"y":454,"z":0,"type":2},{"x":362,"y":408,"z":0,"type":10},{"x":277,"y":401,"z":0,"type":1},{"x":181,"y":383,"z":0,"type":9},{"x":228,"y":394,"z":0,"type":1},{"x":994,"y":279,"z":0,"type":1},{"x":755,"y":230,"z":0,"type":1},{"x":862,"y":178,"z":0,"type":10},{"x":905,"y":189,"z":0,"type":1},{"x":946,"y":208,"z":0,"type":1},{"x":650,"y":251,"z":0,"type":1},{"x":491,"y":237,"z":0,"type":10},{"x":543,"y":251,"z":0,"type":1},{"x":152,"y":290,"z":0,"type":11},{"x":177,"y":259,"z":0,"type":1},{"x":241,"y":218,"z":0,"type":1},{"x":282,"y":203,"z":0,"type":6},{"x":322,"y":190,"z":0,"type":1},{"x":972,"y":801,"z":0,"type":10},{"x":135,"y":428,"z":0,"type":1},{"x":161,"y":470,"z":0,"type":10},{"x":211,"y":493,"z":0,"type":1},{"x":206,"y":595,"z":0,"type":1},{"x":277,"y":665,"z":0,"type":15},{"x":323,"y":670,"z":0,"type":4,"events":[{"id":"Magic Show v3.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"MagicShow":135}}]},{"x":370,"y":670,"z":0,"type":4,"events":[{"id":"Magic Show v3.1","activationType":3,"executionType":1,"custom":true,"parameterValues":{"MagicShow":135}}]},{"x":417,"y":670,"z":0,"type":2},{"x":513,"y":671,"z":0,"type":11},{"x":598,"y":667,"z":0,"type":1},{"x":640,"y":665,"z":0,"type":1},{"x":241,"y":652,"z":0,"type":0},{"x":557,"y":618,"z":0,"type":0,"subtype":7},{"x":116,"y":749,"z":0,"type":0,"subtype":8},{"x":135,"y":543,"z":0,"type":0,"subtype":5},{"x":1014,"y":185,"z":0,"type":0,"subtype":5},{"x":1060,"y":233,"z":0,"type":0,"subtype":6},{"x":121,"y":620,"z":0,"type":0,"subtype":6},{"x":75,"y":817,"z":0,"type":0,"subtype":3},{"x":466,"y":634,"z":0,"type":0,"subtype":0},{"x":420,"y":844,"z":0,"type":0,"subtype":0},{"x":388,"y":443,"z":0,"type":0,"subtype":0},{"x":461,"y":187,"z":0,"type":0,"subtype":0},{"x":741,"y":328,"z":0,"type":0,"subtype":0},{"x":1027,"y":486,"z":0,"type":0,"subtype":0},{"x":998,"y":639,"z":0,"type":0},{"x":877,"y":583,"z":0,"type":0},{"x":893,"y":307,"z":0,"type":0},{"x":1054,"y":304,"z":0,"type":0},{"x":757,"y":171,"z":0,"type":0},{"x":411,"y":164,"z":0,"type":0},{"x":596,"y":97,"z":0,"type":0},{"x":606,"y":449,"z":0,"type":0},{"x":461,"y":361,"z":0,"type":0},{"x":501,"y":754,"z":0,"type":0},{"x":547,"y":753,"z":0,"type":0},{"x":746,"y":284,"z":0,"type":0},{"x":901,"y":759,"z":0,"type":0},{"x":347,"y":622,"z":0,"type":0},{"x":505,"y":370,"z":0,"type":0},{"x":171,"y":196,"z":0,"type":0,"subtype":7},{"x":291,"y":353,"z":0,"type":0}],"links":{"0":12,"1":79,"2":89,"3":45,"4":74,"5":57,"6":105,"7":54,"8":106,"9":93,"10":100,"11":83,"12":33,"13":34,"14":64,"15":[42,16],"16":77,"17":80,"18":[51,97],"19":[53,52],"20":50,"21":50,"22":88,"24":[38,108],"25":27,"26":110,"27":28,"28":39,"29":30,"30":32,"32":31,"33":13,"34":14,"35":67,"36":46,"37":26,"38":37,"39":56,"40":41,"41":60,"42":19,"43":44,"44":2,"45":49,"46":1,"47":85,"48":47,"49":84,"50":73,"51":91,"52":3,"53":70,"54":55,"55":96,"56":5,"57":58,"58":59,"59":40,"60":61,"61":62,"62":63,"63":7,"64":65,"65":66,"66":35,"67":68,"68":69,"69":15,"70":71,"71":72,"72":20,"73":4,"74":75,"75":76,"76":34,"77":78,"78":36,"79":17,"80":82,"81":18,"82":81,"83":21,"84":48,"85":86,"86":87,"87":11,"88":49,"89":90,"90":22,"91":92,"92":9,"93":94,"94":95,"95":43,"96":12,"97":98,"98":99,"99":10,"100":24,"101":102,"102":103,"103":104,"104":6,"105":8,"106":107,"107":35,"108":101,"110":25},"events":{"Next Space Setup":{"language":0,"code":"; NAME: Next Space Setup\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|Next\n; PARAM: Space|Prev\n\nADDIU SP SP -40\nSW RA 36(SP)\n\nLI A0 -1 ; Set current player\nLI A1 Next_chain_index ; Pass chain index on A1\nJAL SetNextChainAndSpace\nLI A2 Next_chain_space_index ; Pass chain space index on A2\n\nLI A0 -1\nLI A1 Prev_chain_index ; Pass chain index on A1\nJAL SetPrevChainAndSpace\nLI A2 Prev_chain_space_index ; Pass chain space index on A2\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40"},"Boo Bellhouse v3":{"language":0,"code":"; NAME: Boo Bellhouse v3\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|BooBellhouse\n\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; S0 = Current Player Struct\n; S1 = Empty Item Slot\n\n;===Rotate Toward Boo Bellhouse===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 BooBellhouse ; Face BooBellhouse\n\n;===Check Player Item Slots===\nJAL GetCurrentPlayerIndex ; Get current player index at V0\nNOP\n\nJAL PlayerHasEmptyItemSlot\nMOVE A0 V0 ; Check current player\n\nBLTZ V0 NoSpace ; If V0 < 0 (no empty slots), go to NoSpace\nNOP\nMOVE S1 V0 ; Copy V0 to S1\n\n;===Boo Bellhouse Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(BellhouseMessage)\nJAL CallMessage\nADDIU A0 A0 lo(BellhouseMessage) ; Display BellhouseMessage\n\n;===Receive Boo Bell===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nLI T0 0x0B ; Boo Bell index\nADDU V0 V0 S1 ; Add empty slot offset to player struct\nSB T0 0x18(V0) ; Store item into empty slot offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\n;===Play Happy Voice and Animation===\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nJ exit\nNOP\n\n;===No Space Message===\nNoSpace:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(NoSpaceMessage)\nJAL CallMessage\nADDIU A0 A0 lo(NoSpaceMessage) ; Display NoSpaceMessage\n\nexit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Message Text===\n.align 16\nBellhouseMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"On behalf of the\"\n.byte 0x04 ; Purple font\n.ascii \" Boo Bellhouse\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"please accept this\"\n.byte 0x06 ; Blue font\n.ascii \" sonorous gift\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoSpaceMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You can\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t accept my\"\n.byte 0x06 ; Blue font\n.ascii \" sonorous gift\"\n.byte 0x08,0xC3 ; White font, Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"How regrettable\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Board RAM (KBC)":{"language":0,"code":"; NAME: Board RAM (KBC)\n; GAMES: MP3_USA\n; EXECUTION: Direct\n\nADDIU SP SP -4\nSW RA 0(SP)\n\nJAL GetCurrentPlayerIndex\nNOP\n\nLW RA 0(SP)\nJR RA\nADDIU SP SP 4\n\n; Board RAMs Used for: King Boo Carnival v3\n; 0x800CD096 - Boo Brothers Bell Curse / Spook P1 Flag\n// Values: 0-2\n// When ON, P1 cannot use item\n; 0x800CD097 - Boo Brothers Bell Curse / Spook P2 Flag\n// Values: 0-2\n// When ON, P2 cannot use item\n; 0x800CD098 - Boo Brothers Bell Curse / Spook P3 Flag\n// Values: 0-2\n// When ON, P3 cannot use item\n; 0x800CD099 - Boo Brothers Bell Curse / Spook P4 Flag\n// Values: 0-2\n// When ON, P4 cannot use item\n; 0x800CD09A - Left Boo Brother Repellant Flag\n// Values: 0-1\n// When ON, Left Boo Brother curse will not activate\n; 0x800CD09B - Right Boo Brother Repellant Flag\n// Values: 0-1\n// When ON, Right Boo Brother curse will not activate\n; 0x800CD09C - Boo Brothers Mushroom Curse P1 Flag\n// Values: 0-1\n// When ON, P1 rolls 1-5\n; 0x800CD09D - Boo Brothers Mushroom Curse P2 Flag\n// Values: 0-1\n// When ON, P2 rolls 1-5\n; 0x800CD09E - Boo Brothers Mushroom Curse P3 Flag\n// Values: 0-1\n// When ON, P3 rolls 1-5\n; 0x800CD09F - Boo Brothers Mushroom Curse P4 Flag\n// Values: 0-1\n// When ON, P4 rolls 1-5"},"Mushroom Curse Effect":{"language":0,"code":"; NAME: Mushroom Curse Effect\n; GAMES: MP3_USA\n; EXECUTION: Direct\n\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n;===Get Current Player Index===\nJAL GetCurrentPlayerIndex ; Get current player index at V0\nNOP\nMOVE S0 V0 ; Copy V0 to S0\n\n;===Get Player's Mushroom Curse Flag===\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD09C ; 0x800CD09C - P1 Mushroom Curse Flag\nADDU T0 T0 V0 ; Add to get current player's Mushroom Curse Flag\n\n;===Check Flag===\nLBU T1 0(T0) ; Load Mushroom Curse Flag value\nBEQZ T1 exit ; If flag is OFF, exit\nNOP\n; else, flag is ON\n\n;===Change Flags===\nSB R0 0(T0) ; Turn off Mushroom Curse Flag\n\n;===Store Forced Roll===\nJAL GetRand\nORI A0 R0 0x04 ; Get random byte (0-4) at V0\n\nLUI T1 0x800C ; 0x800C0000\nORI T1 T1 0xDBD2 ; 0x800CDBD2 - P1 Forced Roll Address\n\nLI T0 0x4C ; Distance between each player's forced roll address\nMULT T0 S0 ; Multiply player index by T0\nMFLO T0 ; Move result into T0\nADDU T1 T1 T0 ; Add to get opponent's forced roll address\n\nADDIU V0 V0 1 ; Add 1 to random byte\nSB V0 0(T1) ; Store forced roll into address\n\n;===Display Message===\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 -1 ; Character image (-1 for none)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(CurseMessage)\nADDIU A1 A1 lo(CurseMessage) ; Display CurseMessage\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nexit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Message Text===\n.align 16\nCurseMessage:\n.ascii \"Feeling the effects of the\"\n.byte 0x04 ; Purple font\n.ascii \" Mushroom Curse\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" you\"\n.byte 0x0A ; New line (writes below)\n.ascii \"can only roll up to\"\n.byte 0x03 ; Red font\n.ascii \" five\"\n.byte 0x08 ; White font\n.ascii \" this turn\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Boo Brothers Curse v1.1":{"language":0,"code":"; NAME: Boo Brothers Curse v1.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|BooBrother\n; PARAM: Boolean|LeftOrRight\n\nADDIU SP SP -120\nSW RA 116(SP)\nSW S0 112(SP)\nSW S1 108(SP)\nSW S2 104(SP)\nSW S3 100(SP)\n\n; S0 = Current Player Struct\n; S1 = Prompt Choice / Item Offset of Player Struct\n; S2 = Empty Item Slot / Curse Item Index\n; S3 = Hitlist Address\n\n;===Rotate Toward BooBrother===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 BooBrother ; Face BooBrother\n\n;===Check Boo Repellant Flag===\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD09A ; 0x800CD09A - Boo Repellant Flag\nADDIU T0 T0 LeftOrRight ; Add 1 if it's Right Boo Brother\nLBU T1 0(T0) ; Load value of Boo Repellant Flag\nBNEZ T1 BooRepellantCursed\nNOP\n; else, Boo Brother is active\n\n;===Check Player Inventory===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBEQZ V0 NoItems ; If V0 = 0 (no items), go to NoItems\nNOP\nMOVE S2 V0 ; Copy V0 to S2\n\n;===Create Hitlist===\nLBU T1 0x1D(S0) ; Load current player index into T1\nLUI S3 hi(Hitlist)\nADDIU S3 S3 lo(Hitlist)\nMOVE T3 S3 ; Copy S3 to T3\nBEQZ T1 SkipHitZero ; If current player is P1, do not add to Hitlist\nNOP\nSB R0 0(T3) ; Add P1 to Hitlist\nADDIU T3 T3 1 ; Add 1 to get next spot on Hitlist\n\nSkipHitZero:\nLI T0 1\nBEQ T1 T0 SkipHitOne ; If current player is P2, do not add to Hitlist\nNOP\nSB T0 0(T3) ; Add P2 to Hitlist\nADDIU T3 T3 1 ; Add 1 to get next spot on Hitlist\n\nSkipHitOne:\nLI T0 2\nBEQ T1 T0 SkipHitTwo ; If current player is P3, do not add to Hitlist\nNOP\nSB T0 0(T3) ; Add P3 to Hitlist\nADDIU T3 T3 1 ; Add 1 to get next spot on Hitlist\n\nSkipHitTwo:\nLI T0 3\nBEQ T1 T0 StartGreetingMessage ; If current player is P4, do not add to Hitlist\nNOP\nSB T0 0(T3) ; Add P4 to Hitlist\n\n;===Greeting Message===\nStartGreetingMessage:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(GreetingMessage)\nJAL CallMessage\nADDIU A0 A0 lo(GreetingMessage) ; Display GreetingMessage\n\n;===Prepare Item Strings for Prompt===\nStartItemPrompt:\nLUI A0 hi(ItemPrompt)\nADDIU A0 A0 lo(ItemPrompt)\nJAL PrepareItemStrings\nMOVE A1 S0 ; Pass current player struct on A1\n\n;===Display Item Prompt===\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(ItemPromptHolder)\nADDIU A1 A1 lo(ItemPromptHolder) ; Display ItemPrompt (with strings)\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Pass window ID on A0\nJAL DisablePrompt\nMOVE A1 S2 ; Pass empty item slot on A1\n\nJAL AILogic\nMOVE A0 S2 ; Pass empty item slot on A0\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nLI T0 3\nBNE S1 T0 SelectCurse\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartItemPrompt\nNOP\n\n;===Select Curse===\nSelectCurse:\nADDU S1 S0 S1 ; Add item offset of player struct\nLBU S2 0x18(S1) ; Load item value from offset of player struct\n\nBNEZ S2 SkipMushroom\nNOP\n\n;===Mushroom Curse===\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nJAL MushroomCurse\nMOVE A0 S3 ; Pass Hitlist address on A0\n\nJ Exiting\nNOP\n\n;===Continue Selecting Curse===\nSkipMushroom:\nLI T0 0x02 ; Poison Mushroom index\nBEQ T0 S2 PickNormalCurse\nLI T0 0x03 ; Reverse Mushroom index\nBEQ T0 S2 PickNormalCurse\nLI T0 0x0A ; Golden Mushroom index\nBEQ T0 S2 PickNormalCurse\nNOP\n\nLI T0 0x04 ; Cellular Shopper index\nBEQ T0 S2 PickItemCurse\nLI T0 0x06 ; Plunder Chest index\nBEQ T0 S2 PickItemCurse\nLI T0 0x10 ; Barter Box index\nBEQ T0 S2 PickItemCurse\nNOP\n\nLI T0 0x05 ; Warp Block index\nBEQ T0 S2 PickWarpCurse\nNOP\n\nLI T0 0x08 ; Dueling Glove index\nBEQ T0 S2 PickDuelCurse\nNOP\n\nLI T0 0x0B ; Boo Bell index\nBEQ T0 S2 PickBellCurse\nNOP\n\nLI T0 0x0C ; Boo Repellant index\nBEQ T0 S2 PickRepelCurse\nNOP\n\nLI T0 0x0E ; Magic Lamp index\nBEQ T0 S2 PickStarCurse\nNOP\n\nLI T0 0x0F ; Koopa Kard index\nBEQ T0 S2 PickBankCurse\nNOP\n; else, pick Coin Curse\n\n;===Coin Curse===\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nMOVE A0 S3 ; Pass Hitlist address on A0\nJAL CoinCurse\nMOVE A1 S2 ; Pass item index on A1\n\nJ Exiting\nNOP\n\n;===Normal Curse===\nPickNormalCurse:\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nMOVE A0 S3 ; Pass Hitlist address on A0\nJAL NormalCurse\nMOVE A1 S2 ; Pass item index on A1\n\nJ Exiting\nNOP\n\n;===Item Curse===\nPickItemCurse:\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nMOVE A0 S3 ; Pass Hitlist address on A0\nJAL ItemCurse\nMOVE A1 S2 ; Pass item index on A1\n\nJ Exiting\nNOP\n\n;===Warp Curse===\nPickWarpCurse:\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nJAL WarpCurse\nMOVE A0 S3 ; Pass Hitlist address on A0\n\nJ Exiting\nNOP\n\n;===Duel Curse===\nPickDuelCurse:\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nJAL DuelCurse\nMOVE A0 S3 ; Pass Hitlist address on A0\n\nJ Exiting\nNOP\n\n;===Bell Curse===\nPickBellCurse:\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nJAL BellCurse\nMOVE A0 S3 ; Pass Hitlist address on A0\n\nJ Exiting\nNOP\n\n;===Repel Curse===\nPickRepelCurse:\nJAL PlaySound\nLI A0 0xB9 ; \"Phew\" sound\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for sound\n\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD09A ; 0x800CD09A - Boo Repellant Flag\nADDIU T0 T0 LeftOrRight ; Add 1 if it's the Right Boo Brother\nLI T1 1 ; Turn flag ON\nSB T1 0(T0) ; Store value of Boo Repellant Flag\n\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(RepellantMessage)\nJAL CallMessage\nADDIU A0 A0 lo(RepellantMessage) ; Display RepellantMessage\n\nJ exit\nNOP\n\n;===Star Curse===\nPickStarCurse:\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nJAL StarCurse\nMOVE A0 S3 ; Pass Hitlist address on A0\n\nJ Exiting\nNOP\n\n;===Bank Curse===\nPickBankCurse:\nJAL DisplayCurseMessage\nMOVE A0 S2 ; Pass item index on A0\n\nJAL BankCurse\nMOVE A0 S3 ; Pass Hitlist address on A0\n\n;===Cursed Message===\nExiting:\nLI T0 0xFF ; No item index\nSB T0 0x18(S1) ; Store no item into chosen slot offset of player struct\n\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL RefreshHUD\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nLUI A0 hi(CursedMessage)\nJAL CallMessage\nADDIU A0 A0 lo(CursedMessage) ; Display CursedMessage\n\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nJ exit\nNOP\n\n;===No Items Message===\nNoItems:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(NoItemsMessage)\nJAL CallMessage\nADDIU A0 A0 lo(NoItemsMessage) ; Display NoItemsMessage\n\nJ exit\nNOP\n\n;===Boo Brother Cursed by Boo Repellant===\nBooRepellantCursed:\nSB R0 0(T0) ; Reset Boo Repellant Flag\n\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(RepellantResetMessage)\nJAL CallMessage\nADDIU A0 A0 lo(RepellantResetMessage) ; Display RepellantResetMessage\n\nexit:\nLW RA 116(SP)\nLW S0 112(SP)\nLW S1 108(SP)\nLW S2 104(SP)\nLW S3 100(SP)\nJR RA\nADDIU SP SP 120\n\n;===Hitlist===\n.align 16\nHitlist:\n.fill 4,4 ; Fill 4 bytes of 4\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Prepare Item Strings===\n.align 4\nPrepareItemStrings:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n; A1 = Current Player Struct\n\nLUI A3 hi(BlueColor_ptr)\nADDIU A3 A3 lo(BlueColor_ptr) ; Default to blue font (item #2)\nMOVE T5 A3 ; Copy A2 to T4 (item #3 font colour)\n\nLUI T0 hi(ItemStrings)\nADDIU T0 T0 lo(ItemStrings)\nLBU T1 0x18(A1) ; Load item #1 from offset of player struct\nLBU T2 0x19(A1) ; Load item #2 from offset of player struct\nLBU T3 0x1A(A1) ; Load item #3 from offset of player struct\nLI T7 0xFF ; No item index\n\nSLL A2 T1 5 ; Multiply by 32 (distance between item strings)\nADDU A2 T0 A2 ; A2 now contains item string #1 pointer\n\nBEQ T2 T7 GetNullStringTwice ; If slot #2 empty, get null string twice\nNOP\n\nSLL T4 T2 5 ; Multiply by 32 (distance between item strings)\nADDU T4 T0 T4 ; T4 now contains item string #2 pointer\n\nBEQ T3 T7 GetNullString ; If slot #3 empty, get null string\nNOP\n\nSLL T6 T3 5 ; Multiply by 32 (distance between item srings)\nJ FinalString\nADDU T6 T0 T6 ; T6 now contains item string #3 pointer\n\nGetNullStringTwice:\nLUI T4 hi(NullString)\nADDIU T4 T4 lo(NullString) ; Item #2 = null string\nLUI A3 hi(BlackColor_ptr)\nADDIU A3 A3 lo(BlackColor_ptr) ; Use black font\n\nGetNullString:\nLUI T6 hi(NullString)\nADDIU T6 T6 lo(NullString) ; Item #3 = null string\nLUI T5 hi(BlackColor_ptr)\nADDIU T5 T5 lo(BlackColor_ptr) ; Use black font\n\nFinalString:\nMOVE A1 A0 ; String formatter (%s) from message address\nLUI A0 hi(ItemPromptHolder)\nADDIU A0 A0 lo(ItemPromptHolder) ; Parse destination\n; A2 has item string #1\n; A3 has item #2 font colour\nSW T4 16(SP) ; Pass T4 to A4 of sprintf (item string #2)\nSW T5 20(SP) ; Pass T5 to A5 of sprintf (item #3 font colour)\nSW T6 24(SP) ; Pass T6 to A6 of sprintf (item string #3)\nJAL sprintf ; Converts to text string\nSW R0 28(SP) ; Terminator byte\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n.align 16\nBlueColor_ptr:\n.byte 0x06,0\n\n.align 16\nBlackColor_ptr:\n.byte 0x01,0\n\n;===Mini Func to Disable Prompt Options===\n.align 4\nDisablePrompt:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Window ID\n; A1 / S1 = Empty Item Slot (0,1,2,-1)\n\nBLTZ A1 DisablePromptExit ; If no empty slots, no need to disable\nNOP\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\n\nBNEZ S1 SkipZero\nNOP\n; Pass window ID on A0, 0th option on A1\nJAL DisablePromptOption\nNOP\nADDIU S1 S1 1\n\nSkipZero:\nLI T1 2\nBEQ S1 T1 SkipOne\nNOP\n\nMOVE A0 S0 ; Copy S0 to A0\nJAL DisablePromptOption\nMOVE A1 S1 ; Disable 1st option\nADDIU S1 S1 1\n\nSkipOne:\nMOVE A0 S0 ; Copy S0 to A0\nJAL DisablePromptOption\nMOVE A1 S1 ; Disable 2nd option\n\nDisablePromptExit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Determine AI Logic===\n.align 4\nAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Empty Item Slot\n\nBLTZ A0 PickThree ; If A0 = -1, go to PickThree\nNOP\nADDIU V0 A0 -1 ; Subtract 1 from A0 (1,2) -> (0,1)\nBEQZ V0 AILogicExit ; If 0, only have 1 item\nNOP\nJAL RNGPercentChance\nLI A0 50 ; 50% chance to pick 1 of 2 items\n\nJ AILogicExit\nNOP\n\nPickThree:\nJAL GetRand\nORI A0 R0 0x02 ; Get random byte from 0-2 at V0\n\nAILogicExit:\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Mini Func to Display Curse Message===\n.align 4\nDisplayCurseMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Item Index\n\nLUI T0 hi(ItemStrings)\nADDIU T0 T0 lo(ItemStrings)\nSLL T1 A0 5 ; Multiply item index by 32 (distance between item strings)\nADDU A2 T0 T1 ; Add to get item string to convert\n\nLUI A0 hi(CurseMessageHolder)\nADDIU A0 A0 lo(CurseMessageHolder) ; Parse destination\nLUI A1 hi(CurseMessage)\nADDIU A1 A1 lo(CurseMessage) ; String formatter (%s)\n; Pass item string to convert on A2\nJAL sprintf ; Prints converted string\nLI A3 0 ; Terminator byte\n\nLUI A0 hi(CurseMessageHolder)\nJAL CallMessage\nADDIU A0 A0 lo(CurseMessageHolder) ; Display CurseMessage with strings\n\nLI A0 4 ; Happening fade-out\nJAL InitFadeOut ; Fade to black\nLI A1 16 ; Assigns 16 frames of fade-out\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-out\n\nJAL PlaySound\nLI A0 0x0D ; Cursed Mushroom block sound\n\nJAL SleepProcess\nLI A0 20 ; Wait 20 frames for sound\n\nLUI A0 hi(Hitlist)\nJAL PlaySadVoices\nADDIU A0 A0 lo(Hitlist) ; Pass Hitlist address on A0\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Play Sad Voices===\n.align 4\nPlaySadVoices:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Hitlist Address\n\nMOVE S0 A0 ; Copy A0 to S0\n\nSadVoiceLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\n\nLBU T0 3(V0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 T0 0x287 ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nJAL SleepProcess\nLI A0 15 ; Wait 15 frames for sound\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitSadVoices ; If all opponents checked, exit\nNOP\nJ SadVoiceLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nExitSadVoices:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Cast Mushroom Curse===\n.align 4\nMushroomCurse:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Hitlist Address\n\nMushroomCurseLoop:\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD09C ; 0x800CD09C - Mushroom Curse P1 Flag\nLBU T1 0(A0) ; Load opponent index\nADDU T0 T0 T1 ; Add to get opponent's Mushroom Curse Flag\nLI T1 1 ; Turn Mushroom Curse Flag ON\nSB T1 0(T0) ; Store ON flag into address\n\nLBU T1 1(A0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitMushroomCurse ; If all opponents cursed, exit\nNOP\nJ MushroomCurseLoop\nADDIU A0 A0 1 ; Add 1 to get next opponent\n\nExitMushroomCurse:\nJAL CurseFadeIn\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func for Fade-in===\n.align 4\nCurseFadeIn:\nADDIU SP SP -40\nSW RA 36(SP)\n\nLI A0 4 ; Happening fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assigns 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Cast Normal Curse===\n.align 4\nNormalCurse:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Hitlist Address\n; A1 / S1 = Item Index (0x02, 0x03, 0x0A) / Status Flag\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\n\nLI T0 0x02\nBEQ T0 S1 NormalCurseLoop ; If Poison Mushroom, use 0x02\nNOP\nLI T0 0x03\nBEQ T0 S1 GetReverseCurse ; If Reverse Mushroom, get reverse curse\nNOP\n; else, have Golden Mushroom\nJ NormalCurseLoop\nLI S1 0x86 ; Poison + Reverse flag\n\nGetReverseCurse:\nLI S1 0x84 ; Reverse flag\n\nNormalCurseLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\nLBU T0 0x17(V0) ; Load status flags from offset of player struct\nOR T0 T0 S1 ; Keep all existing flags ON and add curse flags\nSB T0 0x17(V0) ; Store status flags into offset of player struct\n\nANDI T0 S1 0x02 ; Poison flag\nLI T1 0x02\nBNE T0 T1 NormalCurseNext ; If not poison curse, continue\nNOP\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD0AF ; 0x800CD0AF - Slow Dice Flags\nLBU T1 0(T0) ; Load slow dice flags value into T1\nLBU T2 0(S0) ; Load opponent index\nLI T3 1 ; ON flag\nSLLV T2 T3 T2 ; Turn ON bit corresponding to opponent index\nOR T1 T1 T2 ; Keep all flags ON\nSB T1 0(T0) ; Store value back into address\n\nNormalCurseNext:\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitNormalCurse ; If all opponents cursed, exit\nNOP\nJ NormalCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nExitNormalCurse:\nJAL CurseFadeIn\nNOP\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Cast Item Curse===\n.align 4\nItemCurse:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Hitlist Address\n; A1 = Item Index (0x04, 0x06, 0x10)\n; S1 = Number of Items to Lose\n\nMOVE S0 A0 ; Copy A0 to S0\nLI S1 0\n\nLI T0 0x04 ; Cellular Shopper index\nBEQ A1 T0 ItemCurse2\nNOP\nLI T0 0x06 ; Plunder Chest index\nBEQ A1 T0 ItemCurse1\nNOP\n; else, have Barter Box\n\nADDIU S1 S1 1 ; Add 1 item to lose\n\nItemCurse2:\nADDIU S1 S1 1 ; Add 1 item to lose\n\nItemCurse1:\nADDIU S1 S1 1 ; Add 1 item to lose\n\nItemCurseLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\n\nLI T0 0xFF ; No item index\nMOVE T1 S1 ; Copy S1 to T1\nItemCurseRemovalLoop:\nSB T0 0x18(V0) ; Remove item from offset of player struct\nADDIU T1 T1 -1 ; Remove 1 item to lose\nBEQZ T1 ItemCurseNext ; When done removing items, get next opponent\nNOP\nJ ItemCurseRemovalLoop\nADDIU V0 V0 1 ; Add 1 to get next item slot\n\nItemCurseNext:\nJAL FixUpPlayerItemSlots\nLBU A0 0(S0)\nJAL FixUpPlayerItemSlots\nLBU A0 0(S0)\nJAL RefreshHUD\nLBU A0 0(S0)\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitItemCurse ; If all opponents cursed, exit\nNOP\nJ ItemCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nExitItemCurse:\nJAL CurseFadeIn\nNOP\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Cast Warp Curse===\n.align 4\nWarpCurse:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\nSW S2 24(SP)\n\n; A0 / S0 = Hitlist Address\n; S1 = Warp Hold\n; S2 = Rewrite Flag (0 for forwards, 1 for backwards)\n\nMOVE S0 A0 ; Copy A0 to S0\nLUI S1 hi(WarpHold1)\nADDIU S1 S1 lo(WarpHold1)\n\nWarpCurseLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\nLBU T1 0xF(V0) ; Load chain index from offset of player struct\nLBU T2 0x10(V0) ; Load space index from offset of player struct\nLBU T3 0x11(V0) ; Load next chain from offset of player struct\nLBU T4 0x12(V0) ; Load next space from offset of player struct\nLBU T5 0x13(V0) ; Load chain data from offset of player struct\nLBU T6 0x14(V0) ; Load space data from offset of player struct\nLBU T7 0x15(V0) ; Load prev chain from offset of player struct\nLBU T8 0x16(V0) ; Load prev space from offset of player struct\nSB T1 0(S1) ; Store chain index into Warp Hold\nSB T2 1(S1) ; Store space index into Warp Hold\nSB T3 2(S1) ; Store next chain into Warp Hold\nSB T4 3(S1) ; Store next space into Warp Hold\nSB T5 4(S1) ; Store chain data into Warp Hold\nSB T6 5(S1) ; Store space data into Warp Hold\nSB T7 6(S1) ; Store prev chain into Warp Hold\nSB T8 7(S1) ; Store prev space into Warp Hold\n\nADDIU S1 S1 16 ; Add distance between Warp Holds\n\nWarpCurseNext:\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 WarpCurseLoopExit ; If all opponents checked, exit loop\nNOP\nJ WarpCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nWarpCurseLoopExit:\nLUI S0 hi(Hitlist)\nADDIU S0 S0 lo(Hitlist) ; Refresh S0 to 0th byte\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\nMOVE S2 V0 ; Copy V0 to S2\n\nJAL GetRand\nORI A0 R0 0x2 ; Get random byte (0-2) at V0\n\nBEQZ V0 StartWarp1 ; Assign WarpHold1 first\nNOP\nLI T0 1\nBEQ V0 T0 StartWarp2 ; Assign WarpHold2 first\nNOP\n; else, assign WarpHold3 first\n\nStartWarp3:\nLUI S1 hi(WarpHold3)\nADDIU S1 S1 lo(WarpHold3)\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\nLBU T1 0(S1) ; Load chain index from WarpHold3\nLBU T2 1(S1) ; Load space index from WarpHold3\nLBU T3 2(S1) ; Load next chain from WarpHold3\nLBU T4 3(S1) ; Load next space from WarpHold3\nLBU T5 4(S1) ; Load chain data from WarpHold3\nLBU T6 5(S1) ; Load space data from WarpHold3\nLBU T7 6(S1) ; Load prev chain from WarpHold3\nLBU T8 7(S1) ; Load prev space from WarpHold3\n\nSB T1 0xF(V0) ; Store chain index into offset of player struct\nSB T2 0x10(V0) ; Store space index into offset of player struct\nSB T3 0x11(V0) ; Store next chain into offset of player struct\nSB T4 0x12(V0) ; Store next space into offset of player struct\nSB T5 0x13(V0) ; Store chain data into offset of player struct\nSB T6 0x14(V0) ; Store space data into offset of player struct\nSB T7 0x15(V0) ; Store prev chain into offset of player struct\nSB T8 0x16(V0) ; Store prev space into offset of player struct\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitWarpCurse ; If all opponents cursed, exit\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nPickWarp3:\nBNEZ S2 StartWarp2\nNOP\n; else, go to StartWarp1\n\nStartWarp1:\nLUI S1 hi(WarpHold1)\nADDIU S1 S1 lo(WarpHold1)\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\nLBU T1 0(S1) ; Load chain index from WarpHold1\nLBU T2 1(S1) ; Load space index from WarpHold1\nLBU T3 2(S1) ; Load next chain from WarpHold1\nLBU T4 3(S1) ; Load next space from WarpHold1\nLBU T5 4(S1) ; Load chain data from WarpHold1\nLBU T6 5(S1) ; Load space data from WarpHold1\nLBU T7 6(S1) ; Load prev chain from WarpHold1\nLBU T8 7(S1) ; Load prev space from WarpHold1\n\nSB T1 0xF(V0) ; Store chain index into offset of player struct\nSB T2 0x10(V0) ; Store space index into offset of player struct\nSB T3 0x11(V0) ; Store next chain into offset of player struct\nSB T4 0x12(V0) ; Store next space into offset of player struct\nSB T5 0x13(V0) ; Store chain data into offset of player struct\nSB T6 0x14(V0) ; Store space data into offset of player struct\nSB T7 0x15(V0) ; Store prev chain into offset of player struct\nSB T8 0x16(V0) ; Store prev space into offset of player struct\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitWarpCurse ; If all opponents cursed, exit\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nPickWarp1:\nBNEZ S2 StartWarp3\nNOP\n; else, go to StartWarp2\n\nStartWarp2:\nLUI S1 hi(WarpHold2)\nADDIU S1 S1 lo(WarpHold2)\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\nLBU T1 0(S1) ; Load chain index from WarpHold2\nLBU T2 1(S1) ; Load space index from WarpHold2\nLBU T3 2(S1) ; Load next chain from WarpHold2\nLBU T4 3(S1) ; Load next space from WarpHold2\nLBU T5 4(S1) ; Load chain data from WarpHold2\nLBU T6 5(S1) ; Load space data from WarpHold2\nLBU T7 6(S1) ; Load prev chain from WarpHold2\nLBU T8 7(S1) ; Load prev space from WarpHold2\n\nSB T1 0xF(V0) ; Store chain index into offset of player struct\nSB T2 0x10(V0) ; Store space index into offset of player struct\nSB T3 0x11(V0) ; Store next chain into offset of player struct\nSB T4 0x12(V0) ; Store next space into offset of player struct\nSB T5 0x13(V0) ; Store chain data into offset of player struct\nSB T6 0x14(V0) ; Store space data into offset of player struct\nSB T7 0x15(V0) ; Store prev chain into offset of player struct\nSB T8 0x16(V0) ; Store prev space into offset of player struct\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitWarpCurse ; If all opponents cursed, exit\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nPickWarp2:\nBNEZ S2 StartWarp1\nNOP\nJ StartWarp3\nNOP\n\nExitWarpCurse:\nJAL CurseFadeIn\nNOP\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nLW S2 24(SP)\nJR RA\nADDIU SP SP 40\n\n.align 16\nWarpHold1:\n.fill 8\n\n.align 16\nWarpHold2:\n.fill 8\n\n.align 16\nWarpHold3:\n.fill 8\n\n;===Mini Func to Cast Duel Curse===\n.align 4\nDuelCurse:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Hitlist Address\n; S1 = Duel Hold\n\nMOVE S0 A0 ; Copy A0 to S0\nLUI S1 hi(DuelHold)\nADDIU S1 S1 lo(DuelHold)\n\nJAL GetRand\nORI A0 R0 0x02 ; Get random byte (0-2) at V0\nADDU V0 S0 V0 ; Get random opponent from hitlist\nJAL GetPlayerStruct\nLBU A0 0(V0) ; Get random opponent's player struct at V0\n\nLBU T1 0xF(V0) ; Load chain index from offset of player struct\nLBU T2 0x10(V0) ; Load space index from offset of player struct\nLBU T3 0x11(V0) ; Load next chain from offset of player struct\nLBU T4 0x12(V0) ; Load next space from offset of player struct\nLBU T5 0x13(V0) ; Load chain data from offset of player struct\nLBU T6 0x14(V0) ; Load space data from offset of player struct\nLBU T7 0x15(V0) ; Load prev chain from offset of player struct\nLBU T8 0x16(V0) ; Load prev space from offset of player struct\nSB T1 0(S1) ; Store chain index into DuelHold\nSB T2 1(S1) ; Store space index into DuelHold\nSB T3 2(S1) ; Store next chain into DuelHold\nSB T4 3(S1) ; Store next space into DuelHold\nSB T5 4(S1) ; Store chain data into DuelHold\nSB T6 5(S1) ; Store space data into DuelHold\nSB T7 6(S1) ; Store prev chain into DuelHold\nSB T8 7(S1) ; Store prev space into DuelHold\n\nDuelCurseLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\nLBU T1 0(S1) ; Load chain index from DuelHold\nLBU T2 1(S1) ; Load space index from DuelHold\nLBU T3 2(S1) ; Load next chain from DuelHold\nLBU T4 3(S1) ; Load next space from DuelHold\nLBU T5 4(S1) ; Load chain data from DuelHold\nLBU T6 5(S1) ; Load space data from DuelHold\nLBU T7 6(S1) ; Load prev chain from DuelHold\nLBU T8 7(S1) ; Load prev space from DuelHold\n\nSB T1 0xF(V0) ; Store chain index into offset of player struct\nSB T2 0x10(V0) ; Store space index into offset of player struct\nSB T3 0x11(V0) ; Store next chain into offset of player struct\nSB T4 0x12(V0) ; Store next space into offset of player struct\nSB T5 0x13(V0) ; Store chain data into offset of player struct\nSB T6 0x14(V0) ; Store space data into offset of player struct\nSB T7 0x15(V0) ; Store prev chain into offset of player struct\nSB T8 0x16(V0) ; Store prev space into offset of player struct\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitDuelCurse ; If all opponents cursed, exit\nNOP\nJ DuelCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nExitDuelCurse:\nJAL CurseFadeIn\nNOP\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n.align 16\nDuelHold:\n.fill 8\n\n;===Mini Func to Cast Bell Curse===\n.align 4\nBellCurse:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Hitlist Address\n\nBellCurseLoop:\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD096 ; 0x800CD096 - Bell Curse P1 Flag\nLBU T1 0(A0) ; Load opponent index\nADDU T0 T0 T1 ; Add to get opponent's Bell Curse Flag\nLI T1 1 ; Turn Bell Curse Flag ON\nSB T1 0(T0) ; Store ON flag into address\n\nLBU T1 1(A0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitBellCurse ; If all opponents cursed, exit\nNOP\nJ BellCurseLoop\nADDIU A0 A0 1 ; Add 1 to get next opponent\n\nExitBellCurse:\nJAL CurseFadeIn\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Cast Star Curse===\n.align 4\nStarCurse:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Hitlist Address\n\nMOVE S0 A0 ; Copy A0 to S0\n\nStarCurseLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\nLBU T0 0xE(V0) ; Load opponent's stars from offset of player struct\nBEQZ T0 SkipStarCurse ; If opponent has no stars, skip them\nNOP\nADDIU T0 T0 -1 ; Subtract 1 star\nSB T0 0xE(V0) ; Store new star count into offset of player struct\n\nSkipStarCurse:\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitStarCurse ; If all opponents cursed, exit\nNOP\nJ StarCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nExitStarCurse:\nJAL CurseFadeIn\nNOP\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Cast Bank Curse===\n.align 4\nBankCurse:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\nSW S2 24(SP)\n\n; A0 / S0 = Hitlist Address\n; S1 = Bank Coin Total\n; S2 = Coins to Lose\n\nMOVE S0 A0 ; Copy A0 to S0\nLUI S1 hi(bank_coin_total)\nADDIU S1 S1 lo(bank_coin_total) ; Load Bank Coin Total\n\nJAL CurseFadeIn ; Fade-in before coin change\nNOP\n\nBankCurseLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\n\nLBU A0 0(S0) ; Take coins from opponent\nLHU A1 0xA(V0) ; Load opponent's coins into A1\nSRL A1 A1 1 ; Shift 1 bit to right - divide coins by 2 (round down)\nJAL CoinChange\nMOVE S2 A1 ; Copy A1 to S2\n\nLHU T0 0(S1) ; Load bank coins\nADDU T0 S2 T0 ; Add opponent's lost coins\nSH T0 0(S1) ; Store bank coins\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitBankCurse ; If all opponents cursed, exit\nNOP\nJ BankCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nExitBankCurse:\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nLW S2 24(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Show Coin Change===\n.align 4\nCoinChange:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Opponent Index\n; A1 / S1 / V0 = Coins to Lose\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\n\n; Pass opponent index to A0\nJAL AdjustPlayerCoinsGradual\nSUBU A1 R0 S1 ; Subtract coins\n\nMOVE A0 S0 ; Take coins from opponent\nJAL 0x800E1F28 ; ShowPlayerCoinChangeHUD\nSUBU A1 R0 S1 ; Subtract coins\n\nMOVE V0 S1 ; Return negative coins on V0\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Cast Coin Curse===\n.align 16\nCoinCurse:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\n\n; A0 / S0 = Hitlist Address\n; A1 / S1 = Item Index\n; S2 = Coins to Lose\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\nLI S2 0 ; Start coins at 0\n\nJAL CurseFadeIn ; Fade-in before coin change\nNOP\n\nLI T1 0x01 ; Skeleton Key index\nBEQ S1 T1 FiveCoinCurse\nNOP\nLI T1 0x09 ; Lucky Lamp index\nBEQ S1 T1 TenCoinCurse\nNOP\nLI T1 0x0D ; Bowser Suit index\nBEQ S1 T1 FifteenCoinCurse\nNOP\nLI T1 0x07 ; Bowser Phone index\nBEQ S1 T1 TwentyCoinCurse\nNOP\nLI T1 0x12 ; Wacky Watch index\nBEQ S1 T1 FiftyCoinCurse\nNOP\n; else, cast Lucky Charm curse\n\nLuckyCoinCurseLoop:\nJAL GetPlayerStruct\nLBU A0 0(S0) ; Get opponent's player struct at V0\n\nLBU A0 0(S0) ; Take coins from opponent\nJAL CoinChange\nLHU A1 0xA(V0) ; Subtract all opponent's coins\n\nLBU T1 1(S0) ; Load next opponent index\nBEQ T1 T0 ExitCoinCurse ; If all opponents cursed, exit\nNOP\nJ LuckyCoinCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nFiftyCoinCurse:\nADDIU S2 S2 30 ; Lose 30+5+5+5+5 = 50 coins\n\nTwentyCoinCurse:\nADDIU S2 S2 5 ; Lose 5+5+5+5 = 20 coins\n\nFifteenCoinCurse:\nADDIU S2 S2 5 ; Lose 5+5+5 = 15 coins\n\nTenCoinCurse:\nADDIU S2 S2 5 ; Lose 5+5 = 10 coins\n\nFiveCoinCurse:\nADDIU S2 S2 5 ; Lose 5 coins\n\nCoinCurseLoop:\nLBU A0 0(S0) ; Take coins from opponent\nJAL CoinChange\nMOVE A1 S2 ; Subtract coins\n\nLBU T1 1(S0) ; Load next opponent index\nLI T0 4\nBEQ T1 T0 ExitCoinCurse ; If all opponents cursed, exit\nNOP\nJ CoinCurseLoop\nADDIU S0 S0 1 ; Add 1 to get next opponent\n\nExitCoinCurse:\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nJR RA\nADDIU SP SP 48\n\n;===Message Text===\n.align 16\nGreetingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"I am one of the\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x04 ; Purple font\n.ascii \"Boo Brothers Grim\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.ascii \" Pass me\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"an\"\n.byte 0x06 ; Blue font\n.ascii \" item\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" and I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll cast a\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"curse on all your opponents\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nItemPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Pass me an\"\n.byte 0x06 ; Blue font\n.ascii \" item\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" any\"\n.byte 0x06 ; Blue font\n.ascii \" item\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"and I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll gleefully cast\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"a\"\n.byte 0x04 ; Purple font\n.ascii \" curse\"\n.byte 0x08 ; White font\n.ascii \" posthaste\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x06 ; Blue font\n.ascii \"%s\" ; Item string #1\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Font colour placeholder\n.ascii \"%s\" ; Item string #2\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Font colour placeholder\n.ascii \"%s\" ; Item string #3\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x08 ; White font\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nCurseMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"All right\"\n.byte 0x82 ; Comma (,)\n.ascii \" here goes nothing\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Take this\"\n.byte 0x82 ; Comma (,)\n.ascii \" the \"\n.byte 0x04 ; Purple font\n.ascii \"%s\" ; Item string placeholder\n.ascii \" Curse\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nRepellantMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Cough\"\n.byte 0x82 ; Comma (,)\n.ascii \" cough\"\n.byte 0x82 ; Comma (,)\n.ascii \" HACK\"\n.byte 0x82 ; Comma (,)\n.ascii \" HACK\"\n.byte 0x82 ; Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"WHEEEEEEEZE\"\n.byte 0xC2,0xC2,0xC2 ; Three exclamation marks (!!!)\n.ascii \" You idiot\"\n.byte 0xC2,0xC2 ; Two exclamation marks (!!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"m allergic to that\"\n.byte 0x06 ; Blue font\n.ascii \" Boo Repellant\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Couldn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t you tell by the name\"\n.byte 0xC3,0xC2 ; Question mark (?), Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Now SCRAM before I sue\"\n.byte 0xC2,0xC2 ; Two exclamation marks (!!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nCursedMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Eee hee hee\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" The\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"deed has been done\"\n.byte 0x85 ; Period (.)\n.ascii \" Feel\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"free to visit me again\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoItemsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"If you had an\"\n.byte 0x06 ; Blue font\n.ascii \" item\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" I could\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"cast a\"\n.byte 0x04 ; Purple font\n.ascii \" curse\"\n.byte 0x08 ; White font\n.ascii \" on your opponents\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Too bad for you\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nRepellantResetMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Cough\"\n.byte 0x82 ; Comma (,)\n.ascii \" cough\"\n.byte 0x82 ; Comma (,)\n.ascii \" some idiot used\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"Boo Repellant\"\n.byte 0x08 ; White font\n.ascii \" on me\"\n.byte 0x85 ; Period (.)\n.ascii \" A Boo\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"m in no state to cast\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"a curse right now\"\n.byte 0x85 ; Period (.)\n.ascii \" Come back later\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n\n;===Print Message Placeholders===\n.align 16\nItemPromptHolder:\n.fill 0x1024,0\n\n.align 16\nCurseMessageHolder:\n.fill 0x1024,0\n\n;===Item Strings===\n.align 32\nNullString:\n.asciiz \"No item available\" ; 0xFF\n.align 32\nItemStrings:\n.asciiz \"Mushroom\" ; 0x00\n.align 32\n.asciiz \"Skeleton Key\" ; 0x01\n.align 32\n.asciiz \"Poison Mushroom\" ; 0x02\n.align 32\n.asciiz \"Reverse Mushroom\" ; 0x03\n.align 32\n.asciiz \"Cellular Shopper\" ; 0x04\n.align 32\n.asciiz \"Warp Block\" ; 0x05\n.align 32\n.asciiz \"Plunder Chest\" ; 0x06\n.align 32\n.asciiz \"Bowser Phone\" ; 0x07\n.align 32\n.asciiz \"Dueling Glove\" ; 0x08\n.align 32\n.asciiz \"Lucky Lamp\" ; 0x09\n.align 32\n.asciiz \"Golden Mushroom\" ; 0x0A\n.align 32\n.asciiz \"Boo Bell\" ; 0x0B\n.align 32\n.asciiz \"Boo Repellant\" ; 0x0C\n.align 32\n.asciiz \"Bowser Suit\" ; 0x0D\n.align 32\n.asciiz \"Magic Lamp\" ; 0x0E\n.align 32\n.asciiz \"Koopa Kard\" ; 0x0F\n.align 32\n.asciiz \"Barter Box\" ; 0x10\n.align 32\n.asciiz \"Lucky Charm\" ; 0x11\n.align 32\n.asciiz \"Wacky Watch\" ; 0x12"},"Concession v3.1":{"language":0,"code":"; NAME: Concession v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|Concession\n\nADDIU SP SP -64\nSW RA 60(SP)\nSW S0 56(SP)\nSW S1 52(SP)\nSW S2 48(SP)\nSW S3 44(SP)\nSW S4 40(SP)\n\n; S0 = Current Player Struct\n; S1 = Prompt Choice\n; S2 = Mushroom Chances Table / Mushroom Index\n; S3 = Empty Item Slot (Offset)\n; S4 = Prompt Address\n\n;===Hide Dice Roll===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n;===Set Player Idle Animation===\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Rotate Toward Concession===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 Concession ; Face Concession\n\n;===Check Turns===\nLUI T0 hi(total_turns)\nADDIU T0 T0 lo(total_turns)\nLBU T0 0(T0) ; Load total turns into T0\n\nLUI T1 hi(current_turn)\nADDIU T1 T1 lo(current_turn)\nLBU T1 0(T1) ; Load current turn into T1\n\nBEQ T0 T1 LastTurn ; If it's the last turn, go to LastTurn\nNOP\n\n;===Check Player Coins===\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins ; Returns 1 if player has enough coins\nLI A1 5 ; Check for 5 coins\n\nBEQZ V0 NoCoins ; If V0 = 0, go to NoCoins\nNOP\n\n;===Check for Empty Item Slots===\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBLTZ V0 TooManyItems ; If V0 < 0 (no empty slots), go to TooManyItems\nNOP\n; else, player has empty item slot\nMOVE S3 V0 ; Copy V0 to S3\n\n;===Randomize Mushroom===\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0-3) at V0\n\nLUI S2 hi(MushroomChancesTable)\nADDIU S2 S2 lo(MushroomChancesTable)\nLI T2 16 ; Distance between chances tables\nMULT V0 T2 ; Multiply V0 by T2\nMFLO T0 ; Move result into T0\nADDU S2 S2 T0 ; Add the distance between chances tables\n\nJAL GetRandomByte ; Get random byte (0-255) at V0\nNOP\n\nLBU T0 0(S2) ; Load Mushroom chance value into T0\nSLT T1 V0 T0 ; If V0 < T0, T1 = 1\nBNEZ T1 PickMushroom ; If T1 = 1, pick Mushroom\nNOP\nLBU T0 1(S2) ; Load Poison Mushroom chance value into T0\nSLT T1 V0 T0 ; If V0 < T0, T1 = 1\nBNEZ T1 PickPoisonMushroom ; If T1 = 1, pick Poison Mushroom\nNOP\nLBU T0 2(S2) ; Load Reverse Mushroom chance value into T0\nSLT T1 V0 T0 ; If V0 < T0, T1 = 1\nBNEZ T1 PickReverseMushroom ; If T1 = 1, pick Reverse Mushroom\nNOP\n; else, pick Golden Mushroom\n\n;===Pick Golden Mushroom===\nLI S2 0x0A ; Golden Mushroom index\nLUI S4 hi(GoldenMushroomPrompt)\nJ MainPrompt\nADDIU S4 S4 lo(GoldenMushroomPrompt) ; Display GoldenMushroomPrompt\n\n;===Pick Mushroom===\nPickMushroom:\nLI S2 0x00 ; Mushroom index\nLUI S4 hi(MushroomPrompt)\nJ MainPrompt\nADDIU S4 S4 lo(MushroomPrompt) ; Display MushroomPrompt\n\n;===Pick Poison Mushroom===\nPickPoisonMushroom:\nLI S2 0x02 ; Poison Mushroom index\nLUI S4 hi(PoisonMushroomPrompt)\nJ MainPrompt\nADDIU S4 S4 lo(PoisonMushroomPrompt) ; Display PoisonMushroomPrompt\n\n;===Pick Reverse Mushroom===\nPickReverseMushroom:\nLI S2 0x03 ; Reverse Mushroom index\nLUI S4 hi(ReverseMushroomPrompt)\nADDIU S4 S4 lo(ReverseMushroomPrompt) ; Display ReverseMushroomPrompt\n\n;===Main Prompt===\nMainPrompt:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nStartMainPrompt:\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nMOVE A1 S4 ; Copy S4 to A1\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nJAL AILogic\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nBEQZ S1 Pay\nNOP\nLI T0 1\nBEQ S1 T0 No\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartMainPrompt\nNOP\n\n;===Pay Coins===\nPay:\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL AdjustPlayerCoinsGradual\nLI A1 -5 ; Subtract 5 coins\n\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL ShowPlayerCoinChange\nLI A1 -5 ; Subtract 5 coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Receive Item===\nADDU S3 S0 S3 ; Add empty item slot offset to player struct\nSB S2 0x18(S3) ; Store item into offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\n;===Play Happy Voice and Animation===\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nLUI A0 hi(SoldMessage)\nJAL CallMessage\nADDIU A0 A0 lo(SoldMessage) ; Display SoldMessage\n\nJ exit\nNOP\n\n;===No Message===\nNo:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(NoMessage)\nJAL CallMessage\nADDIU A0 A0 lo(NoMessage) ; Display NoMessage\n\nJ exit\nNOP\n\n;===Too Many Items Message===\nTooManyItems:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(TooManyItemsMessage)\nJAL CallMessage\nADDIU A0 A0 lo(TooManyItemsMessage) ; Display TooManyItemsMessage\n\nJ exit\nNOP\n\n;===No Coins Message===\nNoCoins:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(NoCoinsMessage)\nJAL CallMessage\nADDIU A0 A0 lo(NoCoinsMessage) ; Display NoCoinsMessage\n\nJ exit\nNOP\n\n;===Last Turn Message===\nLastTurn:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(LastTurnMessage)\nJAL CallMessage\nADDIU A0 A0 lo(LastTurnMessage) ; Display LastTurnMessage\n\nexit:\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 60(SP)\nLW S0 56(SP)\nLW S1 52(SP)\nLW S2 48(SP)\nLW S3 44(SP)\nLW S4 40(SP)\nJR RA\nADDIU SP SP 64\n\n;===Mini Func to Determine AI Logic===\n.align 4\nAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Current Player Index\n\nMOVE S0 A0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 17 ; Check if CPU has 17 coins\n\nBEQZ V0 SelectYes ; If CPU has 5-16 coins, select yes\nNOP\n\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 25 ; Check if CPU has 25 coins\n\nBNEZ V0 SelectYes ; If CPU has 25 coins, select yes\nNOP\n\nSelectNo:\nJ AILogicExit\nLI V0 1\n\nSelectYes:\nLI V0 0\n\nAILogicExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mushroom 1st Chances Table===\n.align 16\nMushroomChancesTable:\n.byte 0x60 ; Mushroom (00-5F) 37.5%\n.byte 0xD8 ; Poison Mushroom (60-D7) 46.875%\n.byte 0xEC ; Reverse Mushroom (D8-EB) 7.8125%\n; Golden Mushroom (EC-FF) 7.8125%\n\n;===Mushroom 2nd Chances Table===\n.align 16\n.byte 0x60 ; Mushroom (00-5F) 37.5%\n.byte 0xC0 ; Poison Mushroom (60-BF) 37.5%\n.byte 0xE0 ; Reverse Mushroom (C0-DF) 12.5%\n; Golden Mushroom (E0-FF) 12.5%\n\n;===Mushroom 3rd Chances Table===\n.align 16\n.byte 0x50 ; Mushroom (00-49) 31.25%\n.byte 0xA0 ; Poison Mushroom (50-99) 31.25%\n.byte 0xD0 ; Reverse Mushroom (A0-CF) 18.75%\n; Golden Mushroom (D0-FF) 18.75%\n\n;===Mushroom 4th Chances Table===\n.align 16\n.byte 0x40 ; Mushroom (00-29) 25%\n.byte 0x80 ; Poison Mushroom (30-59) 25%\n.byte 0xC0 ; Reverse Mushroom (60-AF) 25%\n; Golden Mushroom (B0-FF) 25%\n\n;===Message Text===\n.align 16\nGoldenMushroomPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"re quite in luck\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve got rare\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"Golden Mushrooms\"\n.byte 0x08 ; White font\n.ascii \" for sale right now\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Buy a\"\n.byte 0x06 ; Blue font\n.ascii \" Golden Mushroom\"\n.byte 0x1A,0x1A ; Two tabs\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t buy anything\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nMushroomPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Feeling hungry\"\n.byte 0xC3 ; Question mark (?)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve got\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"Mushrooms\"\n.byte 0x08 ; White font\n.ascii \" for sale right now\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Buy a\"\n.byte 0x06 ; Blue font\n.ascii \" Mushroom\"\n.byte 0x1A,0x1A ; Two tabs\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t buy anything\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPoisonMushroomPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Feeling hungry\"\n.byte 0xC3 ; Question mark (?)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve got\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"Poison Mushrooms\"\n.byte 0x08 ; White font\n.ascii \" for sale right now\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Feel free to share with your friends\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Buy a\"\n.byte 0x06 ; Blue font\n.ascii \" Poison Mushroom\"\n.byte 0x1A,0x1A ; Two tabs\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t buy anything\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nReverseMushroomPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"re quite in luck\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve got rare\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"Reverse Mushrooms\"\n.byte 0x08 ; White font\n.ascii \" for sale right now\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Feel free to share with your friends\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Buy a\"\n.byte 0x06 ; Blue font\n.ascii \" Reverse Mushroom\"\n.byte 0x1A,0x1A ; Two tabs\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t buy anything\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nSoldMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Thank you for your patronage\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Hope you enjoy the carnival\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"If you\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"re ever hungry for\"\n.byte 0x06 ; Blue font\n.ascii \" mushrooms\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"feel free to come back\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nTooManyItemsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Oh dear\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I cannot feed you if you are too full\"\n.byte 0x85 ; White font, Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoCoinsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Oh dear\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I cannot feed you if you have no\"\n.byte 0x07 ; Yellow font\n.ascii \" coins\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nLastTurnMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"I hope you had a wonderful\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"time at the carnival\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Enter Teacups v3.1":{"language":0,"code":"; NAME: Enter Teacups v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|BooSpace\n; PARAM: Space|TeacupsSpace\n; PARAM: Space|TeacupsSpacePrev\n\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; S0 = Current Player Index\n; S1 = Prompt Choice\n\n;===Hide Dice Roll===\nJAL GetCurrentPlayerIndex ; Get current player index at V0\nNOP\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL 0x800DBEC0 ; HideDiceRoll\nMOVE A0 S0 ; Pass current player index on A0\n\n;===Set Player Idle Animation===\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Rotate Toward Boo===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 BooSpace ; Rotate toward BooSpace\n\n;===Display Prompt===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nMainPrompt:\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(Prompt)\nADDIU A1 A1 lo(Prompt) ; Display Prompt\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nJAL RNGPercentChance\nLI A0 80 ; 80% chance of V0 = 1\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nBEQZ S1 EnterTeacups\nNOP\nLI T0 1\nBEQ S1 T0 exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ MainPrompt\nNOP\n\n;===Check Player Coins===\nEnterTeacups:\nMOVE A0 S0 ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 5 ; Check if player has 5 coins\n\nBEQZ V0 CannotPay ; If V0 = 0, player does not have 5 coins\nNOP\n\n;===Take Coins===\nMOVE A0 S0 ; Take coins from current player\nJAL AdjustPlayerCoinsGradual\nLI A1 -5 ; Subtract 5 coins\n\nMOVE A0 S0 ; Take coins from current player\nJAL ShowPlayerCoinChange\nLI A1 -5 ; Subtract 5 coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Set Player Onto Teacups Path===\nLI A0 -1 ; Set current player\nLI A1 TeacupsSpace_chain_index\nJAL SetNextChainAndSpace\nLI A2 TeacupsSpace_chain_space_index\n\nLI A0 -1 ; Set current player\nLI A1 TeacupsSpacePrev_chain_index\nJAL SetPrevChainAndSpace\nLI A2 TeacupsSpacePrev_chain_space_index\n\nJ exit\nNOP\n\n;===No Coins Message===\nCannotPay:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(NoCoinsMessage)\nADDIU A1 A1 lo(NoCoinsMessage) ; Display NoCoinsMessage\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nexit:\nJAL 0x800DB884 ; ShowDiceRoll\nMOVE A0 S0 ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Message Text===\n.align 16\nPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Welcome to the\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Swirling Boo Buddies ride\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You could win a\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" or\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"maybe even something else\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Would you like to try\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Sign me up\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x1A,0x1A ; Tabs\n.byte 0x29,0x3E ; Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Maybe next time\"\n.byte 0x85 ; Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nNoCoinsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Hey\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You need\"\n.byte 0x07 ; Yellow font\n.ascii \" coins\"\n.byte 0x08 ; White font\n.ascii \" for this ride\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Fear House v3.1":{"language":0,"code":"; NAME: Fear House v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|FearHouse\n\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\n\n; S0 = Current Player Struct\n; S1 = Coins to Gain / Lose\n\n;===Hide Dice Roll===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL 0x800F915C ; SetCameraType\nLI A0 0 ; Stay where it is?\n\n;===Set Player Idle Animation===\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Rotate Toward Fear House===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 FearHouse ; Face FearHouse\n\n;===Check Player Coins===\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 5 ; Check for 5 coins\n\nBEQZ V0 NoCoinsToPlay ; If V0 = 0, player does not have 5 coins\nNOP\n\n;===Entry Prompt===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nFirstPrompt:\nLUI A0 hi(EntryPrompt)\nADDIU A0 A0 lo(EntryPrompt) ; Display EntryPrompt\nLI A1 0\nJAL CallPrompt\nLI A2 0 ; Prompt flag\n\n; Change the player's destination based on the choice.\nBEQZ V0 FirstRound\nNOP\nLI T0 1\nBEQ V0 T0 exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ FirstPrompt\nNOP\n\n;===First Round===\nFirstRound:\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL CoinChange\nLI A1 -5 ; Subtract 5 coins\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(IntroMessage)\nADDIU A0 A0 lo(IntroMessage) ; Display IntroMessage\nJAL CallMessage\nLI A1 0\n\n;===Randomize 1st Question===\nJAL GetRand\nORI A0 R0 0x5 ; Get random byte from 0-5\n\nBEQZ V0 Round1Prompt1\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round1Prompt2\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round1Prompt3\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round1Prompt4\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round1Prompt5\nNOP\n; else, get Prompt 6\n\n;===Round 1 Prompt 6===\nLUI A0 hi(Prompt6Round1)\nADDIU A0 A0 lo(Prompt6Round1)\nLI A1 2 ; Correct option is 2\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound1\nNOP\n\n;===Round 1 Prompt 1===\nRound1Prompt1:\nLUI A0 hi(Prompt1Round1)\nADDIU A0 A0 lo(Prompt1Round1)\nLI A1 0 ; Correct option is 0\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound1\nNOP\n\n;===Round 1 Prompt 2===\nRound1Prompt2:\nLUI A0 hi(Prompt2Round1)\nADDIU A0 A0 lo(Prompt2Round1)\nLI A1 1 ; Correct option is 1\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound1\nNOP\n\n;===Round 1 Prompt 3===\nRound1Prompt3:\nLUI A0 hi(Prompt3Round1)\nADDIU A0 A0 lo(Prompt3Round1)\nLI A1 2 ; Correct option is 2\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound1\nNOP\n\n;===Round 1 Prompt 4===\nRound1Prompt4:\nLUI A0 hi(Prompt4Round1)\nADDIU A0 A0 lo(Prompt4Round1)\nLI A1 0 ; Correct option is 0\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound1\nNOP\n\n;===Round 1 Prompt 5===\nRound1Prompt5:\nLUI A0 hi(Prompt5Round1)\nADDIU A0 A0 lo(Prompt5Round1)\nLI A1 1 ; Correct option is 1\nJAL CallPrompt\nLI A2 1 ; Question flag\n\n;===Check Round 1 Answer===\nCheckRound1:\nBNE V0 V1 Fail\nLI S1 5 ; Lose 5 coins\n; else, player passed Round 1\n\n;===Pass Round 1===\nJAL HappySounds\nMOVE A0 S0 ; Pass current player struct on A0\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(GetKeyMessage)\nADDIU A0 A0 lo(GetKeyMessage) ; Display GetKeyMessage\nJAL CallMessage\nLI A1 0\n\n;===Check for Empty Slots===\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBLTZ V0 GetCoinsInstead ; If V0 < 0 (no empty slots), get coins\nNOP\n\n;===Get Key===\nADDU V0 V0 S0 ; Add empty slot offset of player struct\nLI T0 0x01 ; Skeleton Key index\nSB T0 0x18(V0) ; Store item into empty slot offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\nJ SecondPromptCheck\nNOP\n\n;===Get 5 Coins Instead of Key===\nGetCoinsInstead:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI S1 5 ; Gain 5 coins\n\nJAL PrepareString\nMOVE A0 S1 ; Pass coins to gain on A0\n\nLUI A0 hi(GetCoinsInsteadMessage)\nADDIU A0 A0 lo(GetCoinsInsteadMessage) ; Display GetCoinsInsteadMessage\nLUI A1 hi(CoinString)\nJAL CallMessage\nADDIU A1 A1 lo(CoinString) ; Load CoinString into String #1\n\nLBU A0 0x1D(S0) ; Give coins to current player\nJAL CoinChange\nMOVE A1 S1 ; Gain coins\n\n;===Round 2 Check===\nSecondPromptCheck:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 5 ; Check for 5 coins\n\nBEQZ V0 exit ; If V0 = 0, player does not have 5 coins, exit\nNOP\n; else, player can still lose 5 coins\n\n;===Round 2 Prompt===\nSecondPrompt:\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(ExtraPrompt)\nADDIU A0 A0 lo(ExtraPrompt) ; Display ExtraPrompt\nLI A1 0\nJAL CallPrompt\nLI A2 0 ; Prompt flag\n\n; Change the player's destination based on the choice.\nBEQZ V0 SecondRound\nNOP\nLI T0 1\nBEQ V0 T0 exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ SecondPrompt\nNOP\n\n;===Randomize 2nd Question===\nSecondRound:\nJAL GetRand\nORI A0 R0 0x5 ; Get random byte from 0-5\n\nBEQZ V0 Round2Prompt1\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round2Prompt2\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round2Prompt3\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round2Prompt4\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round2Prompt5\nNOP\n; else, get Prompt 6\n\n;===Round 2 Prompt 6===\nLUI A0 hi(Prompt6Round2)\nADDIU A0 A0 lo(Prompt6Round2)\nLI A1 2 ; Correct option is 2\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound2\nNOP\n\n;===Round 2 Prompt 1===\nRound2Prompt1:\nLUI A0 hi(Prompt1Round2)\nADDIU A0 A0 lo(Prompt1Round2)\nLI A1 0 ; Correct option is 0\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound2\nNOP\n\n;===Round 2 Prompt 2===\nRound2Prompt2:\nLUI A0 hi(Prompt2Round2)\nADDIU A0 A0 lo(Prompt2Round2)\nLI A1 1 ; Correct option is 1\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound2\nNOP\n\n;===Round 2 Prompt 3===\nRound2Prompt3:\nLUI A0 hi(Prompt3Round2)\nADDIU A0 A0 lo(Prompt3Round2)\nLI A1 2 ; Correct option is 2\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound2\nNOP\n\n;===Round 2 Prompt 4===\nRound2Prompt4:\nLUI A0 hi(Prompt4Round2)\nADDIU A0 A0 lo(Prompt4Round2)\nLI A1 0 ; Correct option is 0\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound2\nNOP\n\n;===Round 2 Prompt 5===\nRound2Prompt5:\nLUI A0 hi(Prompt5Round2)\nADDIU A0 A0 lo(Prompt5Round2)\nLI A1 1 ; Correct option is 1\nJAL CallPrompt\nLI A2 1 ; Question flag\n\n;===Check Round 2 Answer===\nCheckRound2:\nBNE V0 V1 Fail\nLI S1 5 ; Lose 5 coins\n; else, player passed Round 2\n\n;===Pass Round 2===\nJAL HappySounds\nMOVE A0 S0 ; Pass current player struct on A0\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI S1 10 ; Gain 10 coins\n\nJAL PrepareString\nMOVE A0 S1 ; Pass coins to gain on A0\n\nLUI A0 hi(CoinPrizeMessage)\nADDIU A0 A0 lo(CoinPrizeMessage) ; Display CoinPrizeMessage\nLUI A1 hi(CoinString)\nJAL CallMessage\nADDIU A1 A1 lo(CoinString) ; Load CoinString into String #1\n\nLBU A0 0x1D(S0) ; Give coins to current player\nJAL CoinChange\nMOVE A1 S1 ; Gain coins\n\n;===Round 3 Check===\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 20 ; Check for 20 coins\n\nBEQZ V0 exit ; If V0 = 0, player does not have 20 coins, exit\nNOP\n; else, player can still lose 20 coins\n\n;===Round 3 Prompt===\nThirdPrompt:\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(ExtraPrompt)\nADDIU A0 A0 lo(ExtraPrompt) ; Display ExtraPrompt\nLI A1 0\nJAL CallPrompt\nLI A2 0 ; Prompt flag\n\n; Change the player's destination based on the choice.\nBEQZ V0 ThirdRound\nNOP\nLI T0 1\nBEQ V0 T0 exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ ThirdPrompt\nNOP\n\n;===Randomize 3rd Question===\nThirdRound:\nJAL GetRand\nORI A0 R0 0x5 ; Get random byte from 0-5\n\nBEQZ V0 Round3Prompt1\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round3Prompt2\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round3Prompt3\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round3Prompt4\nNOP\nADDIU V0 V0 -1\nBEQZ V0 Round3Prompt5\nNOP\n; else, get Prompt 6\n\n;===Round 3 Prompt 6===\nLUI A0 hi(Prompt6Round3)\nADDIU A0 A0 lo(Prompt6Round3)\nLI A1 2 ; Correct option is 2\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound3\nNOP\n\n;===Round 3 Prompt 1===\nRound3Prompt1:\nLUI A0 hi(Prompt1Round3)\nADDIU A0 A0 lo(Prompt1Round3)\nLI A1 0 ; Correct option is 0\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound3\nNOP\n\n;===Round 3 Prompt 2===\nRound3Prompt2:\nLUI A0 hi(Prompt2Round3)\nADDIU A0 A0 lo(Prompt2Round3)\nLI A1 1 ; Correct option is 1\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound3\nNOP\n\n;===Round 3 Prompt 3===\nRound3Prompt3:\nLUI A0 hi(Prompt3Round3)\nADDIU A0 A0 lo(Prompt3Round3)\nLI A1 2 ; Correct option is 2\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound3\nNOP\n\n;===Round 3 Prompt 4===\nRound3Prompt4:\nLUI A0 hi(Prompt4Round3)\nADDIU A0 A0 lo(Prompt4Round3)\nLI A1 0 ; Correct option is 0\nJAL CallPrompt\nLI A2 1 ; Question flag\n\nJ CheckRound3\nNOP\n\n;===Round 3 Prompt 5===\nRound3Prompt5:\nLUI A0 hi(Prompt5Round3)\nADDIU A0 A0 lo(Prompt5Round3)\nLI A1 1 ; Correct option is 1\nJAL CallPrompt\nLI A2 1 ; Question flag\n\n;===Check Round 3 Answer===\nCheckRound3:\nBNE V0 V1 Fail\nLI S1 20 ; Lose 20 coins\n; else, player passed Round 3\n\n;===Pass Round 3===\nJAL HappySounds\nMOVE A0 S0 ; Pass current player struct on A0\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI S1 15 ; Gain 15 coins\n\nJAL PrepareString\nMOVE A0 S1 ; Pass coins to gain on A0\n\nLUI A0 hi(CoinPrizeMessage)\nADDIU A0 A0 lo(CoinPrizeMessage) ; Display CoinPrizeMessage\nLUI A1 hi(CoinString)\nJAL CallMessage\nADDIU A1 A1 lo(CoinString) ; Load CoinString into String #1\n\nLBU A0 0x1D(S0) ; Give coins to current player\nJAL CoinChange\nMOVE A1 S1 ; Gain coins\n\n;===Farewell Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(FarewellMessage)\nADDIU A0 A0 lo(FarewellMessage) ; Display FarewellMessage\nJAL CallMessage\nLI A1 0\n\nJ exit\nNOP\n\n;===Fail===\nFail:\nJAL SadSounds\nMOVE A0 S0 ; Pass current player struct on A0\n\nJAL PrepareString\nMOVE A0 S1 ; Pass coins to lose on A0\n\nLUI A0 hi(FailMessage)\nADDIU A0 A0 lo(FailMessage) ; Display FailMessage\nLUI A1 hi(CoinString)\nJAL CallMessage\nADDIU A1 A1 lo(CoinString) ; Load CoinString into String #1\n\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL CoinChange\nSUBU A1 R0 S1 ; Subtract coins\n\nJ exit\nNOP\n\n;===No Coins to Play Message===\nNoCoinsToPlay:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(NoCoinsMessage)\nADDIU A0 A0 lo(NoCoinsMessage) ; Display NoCoinsMessage\nJAL CallMessage\nLI A1 0\n\nexit:\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nJAL 0x800F915C ; SetCameraType\nLI A0 1 ; Follow the current player?\n\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nJR RA\nADDIU SP SP 80\n\n;===Prep for Displaying Coin String===\n.align 16\npercent_d:\n.asciiz \"%d\" ; 0x25640000\n\n.align 16\nCoinString:\n.fill 8\n\n;===Mini Func to Call Prompt===\n.align 4\nCallPrompt:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\n\n; A0 = Message Prompt\n; A1 / S0 / V1 = Correct Option\n; A2 / S1 = Prompt or Question Flag\n; S2 / V0 = Chosen Option\n\nMOVE S1 A2 ; Copy A2 to S1\nMOVE S0 A1 ; Copy A1 to S0\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nJAL RNGPercentChance\nLI A0 25 ; 25% chance of V0 = 1\n\nBEQZ S1 SkipLogic\nNOP\n\nJAL AILogic\nMOVE A0 S0 ; Pass correct option on A0\n\nSkipLogic:\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S2 V0 ; S2 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nMOVE V0 S2 ; Copy S2 to V0\nMOVE V1 S0 ; Copy S0 to V1\n\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nJR RA\nADDIU SP SP 48\n\n;===Mini Func to Determine AI Logic===\n.align 4\nAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Correct Option\n\nMOVE S0 A0 ; Copy A0 to S0\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at at V0\n\nLBU T0 0x1(V0) ; Load CPU difficulty into T0\nLI T1 25\nMULT T0 T1 ; Multiply T0 by T1\nMFLO A0 ; Move result into A0\nJAL RNGPercentChance\nNOP\nBNEZL V0 AIExit ; If V0 = 1, select correct option\nMOVE V0 S0 ; CPU will pick correct option (on likely)\n; else, CPU will pick wrong option\nBEQL S0 R0 AIExit ; If 0th option is correct, pick above\nADDIU V0 S0 2 ; Add 2 to S0 (pick 2 options above) (on likely)\nJ AIExit\nADDIU V0 S0 -1 ; Subtract 1 from S0 (pick option below)\n\nAIExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Mini Func to Play Happy Effects===\n.align 4\nHappySounds:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Current Player Struct\n\nMOVE S0 A0 ; Copy A0 to S0\nJAL PlaySound\nLI A0 0x3EC ; Drumroll sound\n\nJAL SleepProcess\nLI A0 25 ; Wait 25 frames for sound\n\nJAL PlaySound\nLI A0 0x3ED ; Drumroll end sound\n\nJAL SleepProcess\nLI A0 25 ; Wait 25 frames for sound\n\nJAL PlaySound\nLI A0 0x419 ; Fanfare (Curtain Call)\n\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Play Sad Effects===\n.align 4\nSadSounds:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Current Player Struct\n\nMOVE S0 A0 ; Copy A0 to S0\nJAL PlaySound\nLI A0 0x3EC ; Drumroll sound\n\nJAL SleepProcess\nLI A0 25 ; Wait 25 frames for sound\n\nJAL PlaySound\nLI A0 0x3ED ; Drumroll end sound\n\nJAL SleepProcess\nLI A0 25 ; Wait 25 frames for sound\n\nJAL PlaySound\nLI A0 0x40F ; Buzzer sound\n\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x287 ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 3 ; Set lose animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 80 ; Wait 80 frames for animation\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Display Coin String in Message===\n.align 4\nPrepareString:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Coins to Lose / Gain\n\nMOVE A2 A0 ; Pass coins to lose/gain on A2\nLUI A0 hi(CoinString)\nADDIU A0 A0 lo(CoinString) ; Saves # of coins to CoinString\nLUI A1 hi(percent_d)\nJAL sprintf ; Converts a number to a text string\nADDIU A1 A1 lo(percent_d) ; String formatter\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n; A1 = String #1\n\nMOVE A2 A1 ; Copy A1 to A2\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Give or Take Coins===\n.align 4\nCoinChange:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Current Player Index\n; A1 / S1 = Coins to Gain or Lose\n\nMOVE S0 A0 ; Set current player\nJAL AdjustPlayerCoinsGradual\nMOVE S1 A1 ; Set coins\n\nMOVE A0 S0 ; Set current player\nJAL ShowPlayerCoinChange\nMOVE A1 S1 ; Set coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Message Text===\n.align 16\nEntryPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Welcome to\"\n.byte 0x03 ; Red font\n.ascii \" King Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Fear House\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"If you answer right\"\n.byte 0x82 ; Comma (,)\n.ascii \" you could get a\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"or even more prizes\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" But answer\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"wrong\"\n.byte 0x82 ; Comma (,)\n.ascii \" and you will forfeit\"\n.byte 0x03 ; Red font\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"What shall you do\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Let\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s play\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x1A,0x1A ; Two tabs\n.byte 0x29,0x3E ; Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Maybe next time\"\n.byte 0x85 ; Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nIntroMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Very well\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" Your question is\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nPrompt6Round1:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.byte 0x03 ; Red font\n.ascii \"Boo\"\n.byte 0x08 ; White font\n.ascii \" and\"\n.byte 0x03 ; Red font\n.ascii \" King Boo\"\n.byte 0x08 ; White font\n.ascii \" are\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"playable together in which game\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Golf\"\n.byte 0x7B ; Colon (:)\n.ascii \" World Tour\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Kart 8 Deluxe\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Super Sluggers\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt1Round1:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"What is the name of\"\n.byte 0x03 ; Red font\n.ascii \" Boos\"\n.byte 0x08 ; White font\n.ascii \" that\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"move in a circular formation\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Circling Boo Buddies\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Orbiting Boo Buddies\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Swirling Boo Buddies\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt2Round1:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"The great\"\n.byte 0x03 ; Red font\n.ascii \" King Boo\"\n.byte 0x08 ; White font\n.ascii \" first\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"appeared in which game\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Super Mario 64\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Luigi\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Mansion\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Super Mario Sunshine\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt3Round1:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"In the Mario Tennis series\"\n.byte 0x82,0x03 ; Comma (,), Red font\n.ascii \" Boos\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x08 ; White font\n.ascii \"are classified as which type\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Speedy\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Technical\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Tricky\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt4Round1:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.byte 0x03 ; Red font\n.ascii \"King Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Fear House\"\n.byte 0x08 ; White font\n.ascii \" is\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"designed after which locale\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Big Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Haunt\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Mansion\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Ghostly Galaxy\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt5Round1:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"In which game is\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.ascii \" not playable\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Golf\"\n.byte 0x7B ; Colon (:)\n.ascii \" Toadstool Tour\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Sports Mix\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Strikers Charged\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nGetKeyMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Congratulations\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You got the right answer\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You win this shiny\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nGetCoinsInsteadMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Looks like you\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve played yourself\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t have room for this shiny\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Take this\"\n.byte 0x07 ; Yellow font\n.ascii \" consolation prize\"\n.byte 0x08 ; White font\n.ascii \" instead\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nExtraPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You seem like a brave one\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Want to try your hand at the next round\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You could\"\n.byte 0x07 ; Yellow font\n.ascii \" earn\"\n.byte 0x08 ; White font\n.ascii \" even more coins\"\n.byte 0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.ascii \"Or you could\"\n.byte 0x03 ; Red font\n.ascii \" lose\"\n.byte 0x08 ; White font\n.ascii \" more\"\n.byte 0x82 ; Comma (,)\n.ascii \" too\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"What shall you do\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Let\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s play some more\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Maybe next time\"\n.byte 0x85 ; Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt6Round2:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"In Super Mario Party\"\n.byte 0x82 ; Comma (,)\n.ascii \" what\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"can\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s\"\n.byte 0x08 ; White font\n.ascii \" Dice Block do\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Roll a 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Roll a 7\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Lose 3 coins\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt1Round2:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Which of these is\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"not a real\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.ascii \" board\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Eerie Hideaway\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Haunted Bash\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Horror Castle\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt2Round2:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"In Mario Party 7\"\n.byte 0x82 ; Comma (,)\n.ascii \" what\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"is\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s\"\n.byte 0x08 ; White font\n.ascii \" special orb\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Crystal Ball Orb\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Magic Orb\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Pink Boo Orb\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt3Round2:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Which board doesn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t have\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x08,0xC3 ; White font, Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Eternal Star\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Luigi\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Engine Room\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Peach\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Birthday Cake\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt4Round2:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"How many coins does it\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"cost for\"\n.byte 0x03 ; Red font\n.ascii \" Pink Boo\"\n.byte 0x08 ; White font\n.ascii \" to steal\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"a Star in Mario Party 6\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"40\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"45\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"50\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt5Round2:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Which is the first game\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"where\"\n.byte 0x03 ; Red font\n.ascii \" Pink Boos\"\n.byte 0x08 ; White font\n.ascii \" appear in minigames\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Party 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Party 6\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Mario Party 7\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nCoinPrizeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Congratulations\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You got the right answer\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You win these shiny \"\n.byte 0x07 ; Yellow font\n.byte 0x11 ; String #1 stored in A2 (CoinString)\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nPrompt6Round3:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"How many\"\n.byte 0x03 ; Red font\n.ascii \" Boos\"\n.byte 0x08 ; White font\n.ascii \" inhabit\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Luigi\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Mansion\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"13\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"25\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"50\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt1Round3:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"In You VS Boo\"\n.byte 0x82 ; Comma (,)\n.ascii \" which\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"is the last\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.ascii \" you race against\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Black Boo\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Green Boo\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Red Boo\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt2Round3:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"What is the name of the\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"who you race in Super Mario Galaxy\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Spooky Spaceter\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Spooky Speedster\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Spooky Sprinter\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt3Round3:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.byte 0x03 ; Red font\n.ascii \"Boos\"\n.byte 0x08 ; White font\n.ascii \" were originally named what\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boogie Ghosts\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Booleans\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boo Diddleys\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt4Round3:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Which\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.ascii \" doesn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t get\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"eaten by Tubba Blubba\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Franky\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Herbert\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Stanley\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nPrompt5Round3:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"A statue of which\"\n.byte 0x03 ; Red font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"appears on Twisted Mansion\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Atomic Boo\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boohemoth\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Boolossus\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nFarewellMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Great work\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You got\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"all the questions right\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You aren\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t cheating\"\n.byte 0x82 ; Comma (,)\n.ascii \" right\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Eeheehee\"\n.byte 0x82 ; Comma (,)\n.ascii \" hope to see you again\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nFailMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"How dreadful\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You got the wrong answer\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You lose \"\n.byte 0x03 ; Red font\n.byte 0x11 ; String #1 stored in A2 (CoinString)\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.ascii \" No need to worry\"\n.byte 0x82 ; Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"all proceeds go to Boo charity\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoCoinsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You need\"\n.byte 0x07 ; Yellow font\n.ascii \" coins\"\n.byte 0x08 ; White font\n.ascii \" to play this trivia\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Go study up on your\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"useless facts or something\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Gachapon v3.1":{"language":0,"code":"; NAME: Gachapon v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|Gachapon\n\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\nSW S2 64(SP)\nSW S3 60(SP)\nSW S4 56(SP)\nSW S5 52(SP)\nSW S6 48(SP)\n\n; S0 = Current Player Struct\n; S1 = PromptChoice\n; S2 = Current Player Placement / Coin Bonus to Add\n; S3 = Chances Table\n; S4 = Empty Item Slot (0-2) + Offset of Player Struct\n; S5 = Player's Stars / Item Received / Coin Value\n; S6 = Item String Pointer\n\n;===Hide Dice Roll===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n;===Set Player Idle Animation===\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Rotate Toward Gachapon===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 Gachapon ; Face Gachapon\n\n;===Check for Player Coins===\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins ; Returns 1 if player has enough coins\nLI A1 5 ; Check if player has 5 coins\n\nBEQZ V0 NotEnoughCoins ; If V0 = 0, player does not have 5 coins\nNOP\n\n;===Main Prompt===\nMainPrompt:\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 -1 ; Character image (-1 for none)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(Prompt)\nADDIU A1 A1 lo(Prompt) ; Display Prompt\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nJAL AILogic\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nBEQZ S1 Pay\nNOP\nLI T0 1\nBEQ S1 T0 exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ MainPrompt\nNOP\n\n;===Pay Coins===\nPay:\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL AdjustPlayerCoinsGradual\nLI A1 -5 ; Subtract 5 coins\n\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL ShowPlayerCoinChange\nLI A1 -5 ; Subtract 5 coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Get Player Placement===\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0-3) at V0\nMOVE S2 V0 ; Copy V0 to S2\n\nLI T0 16 ; Distance between chances tables\nMULT V0 T0 ; Multiply V0 by T0\nMFLO T3 ; Move the result to T3\n\n;===Check Turn Count===\nLUI T0 hi(total_turns)\nADDIU T0 T0 lo(total_turns)\nLBU T0 0(T0) ; Load total turns into T0\n\nLUI T1 hi(current_turn)\nADDIU T1 T1 lo(current_turn)\nLBU T1 0(T1) ; Load current turn into T1\n\nSUBU T2 T0 T1 ; Subtract current turn from total turns into T2\nLI T1 5\nSLT T0 T2 T1 ; If T2 < T1, T0 = 1 (last 5 turns)\n\nBEQZ T0 GetBasicTable ; If T0 = 0, go to GetBasicTable\nNOP\n; else, T0 = 1, it's last 5 turns\n\n;===Get Last 5 Turns Table===\nJAL GetPlayerPlacementAtEndOfGame\nLBU A0 0x1D(S0) ; Get current player placement (0-3) with bonus stars\nMOVE S2 V0 ; Copy V0 to S2\n\nLI T0 16 ; Distance between chances tables\nMULT V0 T0 ; Multiply V0 by T0\nMFLO T3 ; Move the result to T3\n\nLUI S3 hi(LastFirstTable)\nADDIU S3 S3 lo(LastFirstTable)\nJ Randomizer\nADDU S3 S3 T3 ; Add distance between chances tables\n\n;===GetBasicTable===\nGetBasicTable:\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0-3) at V0\nMOVE S2 V0 ; Copy V0 to S2\n\nLI T0 16 ; Distance between chances tables\nMULT V0 T0 ; Multiply V0 by T0\nMFLO T3 ; Move the result to T3\n\nLUI S3 hi(BasicFirstTable)\nADDIU S3 S3 lo(BasicFirstTable)\nADDU S3 S3 T3 ; Add distance between chances tables\n\n;===Outcome Randomizer===\nRandomizer:\nJAL GetRand\nORI A0 R0 99 ; Get random byte (0-99) at V0\nLI T1 0 ; Set outcome value to 0\n\nRandomLoop:\nLBU T3 0(S3) ; Load chance value into T3\nSLT T0 V0 T3 ; If V0 < T3, T0 = 1\nBNEZ T0 SelectOutcome ; If T0 = 1, go to SelectOutcome\nNOP\nADDIU S3 S3 1 ; Add 1 to chances table to check next chance value\nJ RandomLoop\nADDIU T1 T1 1 ; Add 1 to select next outcome\n\n;===Select Outcome===\nSelectOutcome:\nBEQZ T1 GetNothing ; If T1 = 0, get nothing\nNOP\nLI T2 1\nBEQ T1 T2 GetSmallItem ; If T1 = 1, get small item\nNOP\nLI T2 2\nBEQ T1 T2 GetSmallCoins ; If T1 = 2, get small coins\nNOP\nLI T2 3\nBEQ T1 T2 GetBigItem ; If T1 = 3, get big item\nNOP\nLI T2 4\nBEQ T1 T2 GetBigCoins ; If T1 = 4, get big coins\nNOP\nLI T2 5\nBEQ T1 T2 GetHugeItem ; If T1 = 5, get huge item\nNOP\nLI T2 6\nBEQ T1 T2 GetHugeCoins ; If T1 = 6, get huge coins\nNOP\n; else, T1 = 7, get star\n\n;===Get Star===\nLB S5 0xE(S0) ; Load player stars from offset of player struct\nLI T0 99\nBEQ S5 T0 GetHugeCoins ; If S6 = T0, go to GetHugeCoins\nNOP\n; else, player gets a star\n\n;===Show Star Message and Receive Star===\nLUI A0 hi(StarMessage)\nADDIU A0 A0 lo(StarMessage)\nJAL CallMessage\nLI A1 0 ; No string\n\n;===Prepare Star Coords===\nJAL GetSpaceData\nLI A0 Gachapon ; Get Gachapon data at V0\n\nLUI A0 hi(StarCoords)\nADDIU A0 A0 lo(StarCoords) ; Pass pointer to star coords\nADDIU A0 A0 12 ; Pass pointer to star coords on A0\nJAL 0x80089A20 ; StoreCoords\nADDIU A1 V0 8 ; Pass space coords on A1\n\n;===Get Star===\nLUI A0 hi(StarCoords)\nJAL 0x80106A9C ; GetStar\nADDIU A0 A0 lo(StarCoords) ; Pass star coords on A0\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for fanfare and animation\n\nJAL GetBoardAudioIndex\nNOP\nJAL PlayMusic\nMOVE A0 V0 ; Play board's music\n\nJ exit\nNOP\n\n;===Get Nothing===\nGetNothing:\nJAL GetRandomByte ; Get random byte (0-255) at V0\nNOP\nLI T0 5\nDIVU V0 T0 ; Divide V0 by T0\nMFHI T1 ; Move remainder into T1\n\nBEQZ T1 ReceiveNothing ; If T1 = 0, receive nothing\nNOP\nLI T0 1\nBEQ T0 T1 ReceiveDango ; If T0 = T1, receive dango\nNOP\nLI T0 2\nBEQ T0 T1 ReceiveBalloon ; If T0 = T1, receive balloon\nNOP\nLI T0 3\nBEQ T0 T1 ReceiveMiracle ; If T0 = T1, receive Miracle Capsule\nNOP\n; else, receive Koopa Kid Orb\nLUI A0 hi(KoopaKidMessage)\nJ ReceivedNothing\nADDIU A0 A0 lo(KoopaKidMessage) ; Display KoopaKidMessage\n\nReceiveNothing:\nLUI A0 hi(NothingMessage)\nJ ReceivedNothing\nADDIU A0 A0 lo(NothingMessage) ; Display NothingMessage\n\nReceiveDango:\nLUI A0 hi(DangoMessage)\nJ ReceivedNothing\nADDIU A0 A0 lo(DangoMessage) ; Display DangoMessage\n\nReceiveBalloon:\nLUI A0 hi(BalloonMessage)\nJ ReceivedNothing\nADDIU A0 A0 lo(BalloonMessage) ; Display BalloonMessage\n\nReceiveMiracle:\nLUI A0 hi(MiracleMessage)\nADDIU A0 A0 lo(MiracleMessage) ; Display MiracleMessage\n\nReceivedNothing:\nJAL CallMessage\nLI A1 0\n\nJ exit\nNOP\n\n;===Get Small Item===\nGetSmallItem:\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Check if current player has empty item slot\n\nBLTZ V0 GetSmallCoins ; If no empty item slot, get coins instead\nNOP\nMOVE S4 V0 ; else, V0 = 0-2\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\n\nBNEZL V0 ReceiveItem ; If V0 = 1, receive Skeleton Key\nLI S5 0x01 ; Skeleton Key index at S5 (on likely)\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\n\nBNEZL V0 ReceiveItem ; If V0 = 1, receive Mushroom\nLI S5 0x00 ; Mushroom index at S5 (on likely)\n; else, get Poison Mushroom\nJ ReceiveItem\nLI S5 0x02 ; Poison Mushroom index at S5\n\n;===Get Small Coins===\nGetSmallCoins:\nJ ReceiveCoins\nLI S5 5 ; Get base 5 coins\n\n;===Get Big Item===\nGetBigItem:\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Check if current player has empty item slot\n\nBLTZ V0 GetBigCoins ; If no empty item slot, get coins instead\nNOP\nMOVE S4 V0 ; else, V0 = 0-2\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\n\nBNEZ V0 PickMushrooms ; If V0 = 1, go to PickMushrooms\nNOP\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\n\nBNEZL V0 ReceiveItem ; If V0 = 1, receive Dueling Glove\nLI S5 0x08 ; Dueling Glove index at S5 (on likely)\n; else, get Bowser Suit\nJ ReceiveItem\nLI S5 0x0D ; Bowser Suit index at S5\n\nPickMushrooms:\nJAL RNGPercentChance\nLI A0 65 ; 65% chance of V0 = 1\n\nBNEZL V0 ReceiveItem ; If V0 = 1, receive Golden Mushroom\nLI S5 0x0A ; Golden Mushroom index at S5 (on likely)\n; else, get Reverse Mushroom\nJ ReceiveItem\nLI S5 0x03 ; Reverse Mushroom index at S5\n\n;===Get Big Coins===\nGetBigCoins:\nJ ReceiveCoins\nLI S5 10 ; Get base 10 coins\n\n;===Get Huge Item===\nGetHugeItem:\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Check if current player has empty item slot\n\nBLTZ V0 GetHugeCoins ; If no empty item slot, get coins instead\nNOP\nMOVE S4 V0 ; else, V0 = 0-2\n\nJAL RNGPercentChance\nLI A0 75 ; 75% chance of V0 = 1\n\nBEQZ V0 PickRareItem ; If V0 = 0, pick rare item\nNOP\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\n\nBNEZL V0 ReceiveItem ; If V0 = 1, receive Boo Bell\nLI S5 0x0B ; Boo Bell index at S5 (on likely)\n; else, get Magic Lamp\nJ ReceiveItem\nLI S5 0x0E ; Magic Lamp index at S5\n\nPickRareItem:\nJAL RNGPercentChance\nLI A0 65 ; 65% chance of V0 = 1\n\nBNEZL V0 ReceiveItem ; If V0 = 1, receive Koopa Kard\nLI S5 0x0F ; Koopa Kard index at S5 (on likely)\n; else, get Lucky Charm\nJ ReceiveItem\nLI S5 0x11 ; Lucky Charm index at S5\n\n;===Get Huge Coins===\nGetHugeCoins:\nLI S5 25 ; Get base 25 coins\n\n;===Receive Coins===\nReceiveCoins:\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\nADDU S2 S2 V0 ; Add S2 and V0, store in S2\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\nADDU S2 S2 V0 ; Add S2 and V0, store in S2\n\nADDU S5 S2 S5 ; Add S2 and S5, store in S5 (total coins to gain)\n\n;===Prepare Coin String to Display in Message===\nLUI A0 hi(CoinString)\nADDIU A0 A0 lo(CoinString) ; Saves # of coins to CoinString\nLUI A1 hi(percent_d)\nADDIU A1 A1 lo(percent_d) ; String formatter\nJAL sprintf ; Converts to a text string\nMOVE A2 S5 ; Converts the number of coins to a string\n\n;===Show Coins Message and Get Coins===\nLUI A0 hi(CoinsMessage)\nADDIU A0 A0 lo(CoinsMessage) ; Display CoinsMessage\nLUI A1 hi(CoinString)\nJAL CallMessage\nADDIU A1 A1 lo(CoinString) ; Load CoinString into A1 (String #1)\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL AdjustPlayerCoinsGradual\nMOVE A1 S5 ; Pass coins to gain on A1\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL ShowPlayerCoinChange\nMOVE A1 S5 ; Pass coins to gain on A1\n\nJ HappyVoice\nNOP\n\n;===Format Item Message===\nReceiveItem:\nLUI T0 hi(ItemStrings)\nADDIU T0 T0 lo(ItemStrings)\nSLL T1 S5 5 ; Multiply item index by 32 (distance between item strings)\nADDU S6 T0 T1 ; S6 now contains item string pointer\n\nLUI A0 hi(ItemMessageHolder)\nADDIU A0 A0 lo(ItemMessageHolder) ; Print destination\nLUI A1 hi(ItemMessage)\nADDIU A1 A1 lo(ItemMessage) ; String formatter (%s)\nMOVE A2 S6 ; Convert item string to text\nJAL sprintf ; Converts to text string\nLI A3 0 ; Terminator byte\n\n;===Show Item Message and Receive Item===\nLUI A0 hi(ItemMessageHolder)\nADDIU A0 A0 lo(ItemMessageHolder) ; Display ItemMessage with strings\nJAL CallMessage\nLI A1 0\n\nADDU S4 S0 S4 ; Add empty slot offset to player struct\nSB S5 0x18(S4) ; Store item into empty slot offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\n;===Play Happy Voice and Animation===\nHappyVoice:\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nJ exit\nNOP\n\n;===Not Enough Coins Message===\nNotEnoughCoins:\nLUI A0 hi(NotEnoughCoinsMessage)\nADDIU A0 A0 lo(NotEnoughCoinsMessage) ; Display NotEnoughCoinsMessage\nJAL CallMessage\nLI A1 0\n\nexit:\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nLW S2 64(SP)\nLW S3 60(SP)\nLW S4 56(SP)\nLW S5 52(SP)\nJR RA\nADDIU SP SP 80\n\n;===Mini Func to Determine AI Logic===\n.align 4\nAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Current Player Index\n\nMOVE S0 A0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 17 ; Check if CPU has 17 coins\n\nBEQZ V0 AILogicExit ; If CPU has 5-16 coins, select yes\nNOP\n\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 25 ; Check if CPU has 25 coins\n\nBNEZL V0 AILogicExit ; If CPU has 25 coins, select yes\nLI V0 0 ; Select yes (on likely)\n; else, CPU selects no\nLI V0 1\n\nAILogicExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n; A1 = String #1\n\nMOVE A2 A1 ; Copy A1 to A2\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 -1 ; Character image (-1 for none)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Prep for Displaying Coin String===\n.align 16\npercent_d:\n.asciiz \"%d\" ; 0x25640000\n\n.align 16\nCoinString:\n.fill 8\n\n;===Star Coords===\n.align 32\nStarCoords:\n.word 0x8012EA10 ; Star model\n.word 0x80134E20 ; Star model\n.word 0x0A020008 ; Star model\n.word 0x00000000 ; X coords\n.word 0x00000000 ; Y coords\n.word 0x00000000 ; Z coords\n\n;===Basic 1st Place Chances Table===\n.align 16\nBasicFirstTable:\n.byte 30 ; Nothing (0-29) 30%\n.byte 60 ; Small Item (30-59) 30%\n.byte 80 ; Small Coins (60-79) 20%\n.byte 88 ; Big Item (80-87) 8%\n.byte 93 ; Big Coins (88-92) 5%\n.byte 98 ; Huge Item (93-97) 5%\n.byte 100 ; Huge Coins (98-99) 2%\n.byte 101 ; Star (100) 0%\n\n;===Basic 2nd Place Chances Table===\n.align 16\n.byte 25 ; Nothing (0-24) 25%\n.byte 55 ; Small Item (25-54) 30%\n.byte 75 ; Small Coins (55-74) 20%\n.byte 85 ; Big Item (75-84) 10%\n.byte 91 ; Big Coins (85-90) 6%\n.byte 97 ; Huge Item (91-96) 6%\n.byte 100 ; Huge Coins (97-99) 3%\n.byte 101 ; Star (100) 0%\n\n;===Basic 3rd Place Chances Table===\n.align 16\n.byte 20 ; Nothing (0-19) 20%\n.byte 50 ; Small Item (20-49) 30%\n.byte 70 ; Small Coins (50-69) 20%\n.byte 82 ; Big Item (70-81) 12%\n.byte 90 ; Big Coins (82-89) 8%\n.byte 97 ; Huge Item (90-96) 7%\n.byte 100 ; Huge Coins (97-99) 3%\n.byte 101 ; Star (100) 0%\n\n;===Basic 4th Place Chances Table===\n.align 16\n.byte 15 ; Nothing (0-14) 15%\n.byte 45 ; Small Item (15-44) 30%\n.byte 60 ; Small Coins (45-59) 15%\n.byte 75 ; Big Item (60-74) 15%\n.byte 85 ; Big Coins (75-84) 10%\n.byte 95 ; Huge Item (85-94) 10%\n.byte 100 ; Huge Coins (95-99) 5%\n.byte 101 ; Star (100) 0%\n\n;===Last 5 Turns 1st Place Chances Table===\n.align 16\nLastFirstTable:\n.byte 35 ; Nothing (0-34) 35%\n.byte 60 ; Small Item (35-59) 25%\n.byte 80 ; Small Coins (60-79) 20%\n.byte 89 ; Big Item (80-88) 9%\n.byte 94 ; Big Coins (89-93) 5%\n.byte 97 ; Huge Item (94-96) 3%\n.byte 99 ; Huge Coins (97-98) 2%\n.byte 100 ; Star (99) 1%\n\n;===Last 5 Turns 2nd Place Chances Table===\n.align 16\n.byte 25 ; Nothing (0-24) 25%\n.byte 50 ; Small Item (25-49) 25%\n.byte 65 ; Small Coins (50-64) 15%\n.byte 77 ; Big Item (65-76) 12%\n.byte 85 ; Big Coins (77-84) 8%\n.byte 92 ; Huge Item (85-91) 7%\n.byte 97 ; Huge Coins (92-96) 5%\n.byte 100 ; Star (97-99) 3%\n\n;===Last 5 Turns 3rd Place Chances Table===\n.align 16\n.byte 20 ; Nothing (0-19) 20%\n.byte 45 ; Small Item (20-44) 25%\n.byte 55 ; Small Coins (45-54) 10%\n.byte 70 ; Big Item (55-69) 15%\n.byte 80 ; Big Coins (70-79) 10%\n.byte 88 ; Huge Item (80-87) 8%\n.byte 95 ; Huge Coins (88-94) 7%\n.byte 100 ; Star (95-99) 5%\n\n;===Last 5 Turns 4th Place Chances Table===\n.align 16\n.byte 10 ; Nothing (0-9) 10%\n.byte 35 ; Small Item (10-34) 25%\n.byte 40 ; Small Coins (35-39) 5%\n.byte 55 ; Big Item (40-54) 15%\n.byte 70 ; Big Coins (55-69) 15%\n.byte 85 ; Huge Item (70-84) 15%\n.byte 93 ; Huge Coins (85-92) 8%\n.byte 100 ; Star (93-99) 7%\n\n;===Message Text===\n.align 16\nPrompt:\n.ascii \"Would you like to use the capsule machine\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A,0x1A,0x1A ; Two new lines + option indent\n.byte 0x0C ; Start option\n.ascii \"Yes\"\n.byte 0x82 ; Comma (,)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"m feeling lucky\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x1A,0x1A ; Tabs\n.byte 0x29,0x3E ; Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A,0x1A,0x1A ; New line + option indent\n.byte 0x0C ; Start option\n.ascii \"No\"\n.byte 0x82 ; Comma (,)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"d rather not\"\n.byte 0x85 ; Period (.)\n.byte 0x0D ; End option\n.byte 0x0A,0x1A,0x1A ; New line + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nStarMessage:\n.ascii \"Inside the capsule\"\n.byte 0x82 ; Comma (,)\n.ascii \" you found a\"\n.byte 0x07 ; Yellow font\n.ascii \" Star\"\n.byte 0x08,0xC2,0xC2 ; White font, Two exclamation marks (!!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nKoopaKidMessage:\n.ascii \"A\"\n.byte 0x04 ; Purple font\n.ascii \" Koopa Kid Orb\"\n.byte 0x08 ; White font\n.ascii \" came out of the capsule machine\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A ; New line (writes below)\n.ascii \"Let\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s chuck it away before anyone notices\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNothingMessage:\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0x0A ; New line (writes below)\n.ascii \"Nothing came out of the capsule machine\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nDangoMessage:\n.ascii \"Inside the capsule\"\n.byte 0x82 ; Comma (,)\n.ascii \" you found a dango\"\n.byte 0x85 ; Period (.)\n.byte 0x0A ; New line (writes below)\n.ascii \"It was so delicious\"\n.byte 0x82 ; Comma (,)\n.ascii \" you swallowed it whole\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBalloonMessage:\n.ascii \"Inside the capsule\"\n.byte 0x82 ; Comma (,)\n.ascii \" you found a deflated balloon\"\n.byte 0x85 ; Period (.)\n.byte 0x0A ; New line (writes below)\n.ascii \"Too bad\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nMiracleMessage:\n.ascii \"A\"\n.byte 0x05 ; Green font\n.ascii \" Miracle Capsule\"\n.byte 0x08 ; White font\n.ascii \" came out of the capsule machine\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A ; New line (writes below)\n.ascii \"But it\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s useless in this game\"\n.byte 0x82 ; Comma (,)\n.ascii \" so you tossed it\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nItemMessage:\n.ascii \"Inside the capsule\"\n.byte 0x82 ; Comma (,)\n.ascii \" you found a \"\n.byte 0x06 ; Blue font\n.ascii \"%s\" ; Item string\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nCoinsMessage:\n.ascii \"Inside the capsule\"\n.byte 0x82 ; Comma (,)\n.ascii \" you found \"\n.byte 0x07 ; Yellow font\n.byte 0x11 ; String #1 stored in A2 of ShowMessage (CoinString)\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNotEnoughCoinsMessage:\n.ascii \"It costs\"\n.byte 0x07 ; Yellow font\n.ascii \" 5 coins\"\n.byte 0x08 ; White font\n.ascii \" to use the capsule machine\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n\n;===Item Message Holder===\n.align 16\nItemMessageHolder:\n.fill 0x1024,0\n\n;===Item Strings===\n.align 32\nItemStrings:\n.asciiz \"Mushroom\" ; 0x00\n.align 32\n.asciiz \"Skeleton Key\" ; 0x01\n.align 32\n.asciiz \"Poison Mushroom\" ; 0x02\n.align 32\n.asciiz \"Reverse Mushroom\" ; 0x03\n.align 32\n.asciiz \"Cellular Shopper\" ; 0x04\n.align 32\n.asciiz \"Warp Block\" ; 0x05\n.align 32\n.asciiz \"Plunder Chest\" ; 0x06\n.align 32\n.asciiz \"Bowser Phone\" ; 0x07\n.align 32\n.asciiz \"Dueling Glove\" ; 0x08\n.align 32\n.asciiz \"Lucky Lamp\" ; 0x09\n.align 32\n.asciiz \"Golden Mushroom\" ; 0x0A\n.align 32\n.asciiz \"Boo Bell\" ; 0x0B\n.align 32\n.asciiz \"Boo Repellant\" ; 0x0C\n.align 32\n.asciiz \"Bowser Suit\" ; 0x0D\n.align 32\n.asciiz \"Magic Lamp\" ; 0x0E\n.align 32\n.asciiz \"Koopa Kard\" ; 0x0F\n.align 32\n.asciiz \"Barter Box\" ; 0x10\n.align 32\n.asciiz \"Lucky Charm\" ; 0x11\n.align 32\n.asciiz \"Wacky Watch\" ; 0x12"},"Magic Show v3.1":{"language":0,"code":"; NAME: Magic Show v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|MagicShow\n\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\nSW S2 64(SP)\nSW S3 60(SP)\nSW S4 56(SP)\nSW S5 52(SP)\n\n; S0 = Current Player Struct\n; S1 = Chosen Option / Item Slot to Remove/Replace\n; S2 = Empty Item Slot / Chosen Item\n; S3 = Initial Chances/Item Value Table (KamekPricesTable/BooItemsTable) / Prize (Coins)\n; S4 = Happy Voice Flag\n; S5 = Good/Bad Message Address / Boo Item Value Table (0-4)\n\n;===Rotate Toward MagicShow===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 MagicShow ; Face MagicShow\n\n;===Get Current Player Struct===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\n;===Check Player Inventory===\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBEQZ V0 NoItems ; If slot #1 is empty, go to NoItems\nNOP\nMOVE S2 V0 ; Copy V0 to S2\n\n;===Main Prompt===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nStartMainPrompt:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 20 ; Check for 20 coins\n; If CPU has 20 coins, pick Boo, else pick Kamek\n\nMOVE A0 V0 ; Copy V0 to A0\nLUI A1 hi(MainPrompt)\nADDIU A1 A1 lo(MainPrompt) ; Display MainPrompt\nLI A2 0 ; Do not disable options\nJAL CallPrompt\nLI A3 -1 ; Empty slot\n\n; Change the player's destination based on the choice.\nBEQZ V0 StartKamek\nNOP\nLI T0 1\nBEQ V0 T0 StartBoo\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartMainPrompt\nNOP\n\n;===Start Kamek's Show===\nStartKamek:\nLUI A0 hi(KamekPrompt)\nADDIU A0 A0 lo(KamekPrompt) ; Pass KamekPrompt on A0\nJAL PrepareItemStrings\nMOVE A1 S0 ; Pass current player struct on A1\n\n;===Kamek Prompt===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nBLTZ S2 Choose3KamekItems\nNOP\n; else, player has 1 or 2 items\nJAL GetRand\nADDIU A0 S2 -1 ; Choose randomly from items for CPU\nJ StartKamekPrompt\nNOP\nChoose3KamekItems:\nJAL GetRand\nORI A0 R0 2 ; Choose between item 0-2\n\nStartKamekPrompt:\nMOVE A0 V0 ; Pass item slot on A0\nLUI A1 hi(PromptHolder)\nADDIU A1 A1 lo(PromptHolder) ; Display Prompt with strings\nLI A2 1 ; Check to disable options\nJAL CallPrompt\nMOVE A3 S2 ; Pass empty slot on A3\n\nMOVE S1 V0 ; Prompt choice\n\n; Change the player's destination based on the choice.\nSLTI T0 S1 3 ; If S1 < 3, T0 = 1\nBNEZ T0 KamekItem\nNOP\nLI T0 3\nBEQ S1 T0 StartMainPrompt\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartKamekPrompt\nNOP\n\n;===Kamek Item===\nKamekItem:\nLI A0 4 ; Assigns Happening fade-out\nJAL InitFadeOut ; Fade to black\nLI A1 16 ; Assigns 16 frames of fade-out\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-out\n\nADDU S1 S1 S0 ; Add item offset of player struct\nLBU S2 0x18(S1) ; Load item from offset of player struct\nLI T0 0xFF ; No item value\nSB T0 0x18(S1) ; Store no item into item slot\n\n;===Randomize Prices Table===\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0,1,2,3) at V0\nSUBU V0 R0 V0 ; Invert (0,-1,-2,-3)\nADDIU V0 V0 3 ; Add 3 (3,2,1,0)\nLI T0 5\nMULT V0 T0 ; Multiply V0 by T0\nMFLO V0 ; Move result into V0\nADDIU V0 V0 5 ; Base chances (10,15,20,25)\n\nLUI S3 hi(KamekPricesTable)\nADDIU S3 S3 lo(KamekPricesTable)\nADDU S3 S2 S3 ; Add item offset to KamekPricesTable\nLBU S3 0(S3) ; Load item price into S3\n\nJAL RNGPercentChance\nADDU A0 V0 S3 ; Add item chance and base chance\n\nBNEZ V0 GetBadPrices ; If V0 = 1, go to GetBadPrices\nNOP\n; else, get good prices\n\nJAL PlaySound\nLI A0 0x143 ; Successful magic sound\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for sound\n\n;===Convert Item to Coins===\nSLL S3 S3 1 ; Multiply price by 2\nJ KamekFadeIn\nLI S4 0 ; Play happy voice and animation\n\nGetBadPrices:\nJAL PlaySound\nLI A0 0x153 ; Failed magic sound\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for sound\n\nLUI S3 hi(KamekBadPricesTable)\nADDIU S3 S3 lo(KamekBadPricesTable)\nADDU S3 S2 S3 ; Add item offset to KamekBadPricesTable\nLBU S3 0(S3) ; Load bad item price into S3\nLI S4 1 ; Skip happy voice and animation\n\n;===Converted Item to Coins===\nKamekFadeIn:\nLI A0 4 ; Assigns Happening fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assigns 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL RefreshHUD\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL AdjustPlayerCoinsGradual\nMOVE A1 S3 ; Give coins\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL ShowPlayerCoinChange\nMOVE A1 S3 ; Give coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\nLUI S5 hi(BadAfterKamekMessage)\nBNEZ S4 AfterKamek\nADDIU S5 S5 lo(BadAfterKamekMessage) ; Display BadAfterKamekMessage\n; else, got good results\n\nJAL HappyVoice\nMOVE A0 S0 ; Copy S0 to A0\nLUI S5 hi(AfterKamekMessage)\nADDIU S5 S5 lo(AfterKamekMessage) ; Display AfterKamekMessage\n\n;===After Kamek Message===\nAfterKamek:\nLUI A0 hi(CoinString)\nADDIU A0 A0 lo(CoinString) ; Saves # of coins to CoinString\nLUI A1 hi(percent_d)\nADDIU A1 A1 lo(percent_d) ; String formatter\nJAL sprintf ; Converts a number to a text string\nMOVE A2 S3 ; Converts the number of coins to a string\n\nLI T0 7 ; Distance between 0x257 and 0x25E\nMULT S4 T0 ; Multiply S4 by T0\nMFLO A0 ; Store result in A0\nJAL PlaySound\nADDIU A0 A0 0x257 ; Get Boo laugh or Boo cry\n\nMOVE A0 S5\nLUI A1 hi(CoinString)\nJAL CallMessage\nADDIU A1 A1 lo(CoinString) ; Load CoinString into string #1\n\nJ exit\nNOP\n\n;===Start Boo's Show===\nStartBoo:\nLUI A0 hi(BooPrompt)\nADDIU A0 A0 lo(BooPrompt) ; Pass BooPrompt on A0\nJAL PrepareItemStrings\nMOVE A1 S0 ; Pass current player struct on A1\n\n;===Boo Prompt===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nBLTZ S2 Choose3BooItems\nNOP\n; else, player has 1 or 2 items\nJAL GetRand\nADDIU A0 S2 -1 ; Choose randomly from items for CPU\nJ StartBooPrompt\nNOP\nChoose3BooItems:\nJAL GetRand\nORI A0 R0 2 ; Choose between item 0-2\n\nStartBooPrompt:\nMOVE A0 V0 ; Pass item slot on A0\nLUI A1 hi(PromptHolder)\nADDIU A1 A1 lo(PromptHolder) ; Display Prompt with strings\nLI A2 1 ; Check to disable options\nJAL CallPrompt\nMOVE A3 S2 ; Pass empty slot on A3\n\nMOVE S1 V0 ; Prompt choice\n\n; Change the player's destination based on the choice.\nSLTI T0 S1 3 ; If S1 < 3, T0 = 1\nBNEZ T0 BooItem\nNOP\nLI T0 3\nBEQ S1 T0 StartMainPrompt\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartBooPrompt\nNOP\n\n;===Boo Item===\nBooItem:\nLI A0 4 ; Assigns Happening fade-out\nJAL InitFadeOut ; Fade to black\nLI A1 16 ; Assigns 16 frames of fade-out\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-out\n\nADDU S1 S1 S0 ; Add item offset of player struct\nLBU S2 0x18(S1) ; Load item from offset of player struct\n\n;===Get Base Success Chance===\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0,1,2,3) at V0\nLI T0 10\nMULT V0 T0 ; Multiply V0 by T0\nMFLO V0 ; Store result in V0\nADDIU V0 V0 25 ; Base chances (25,35,45,55)\n\n;===Find Item Chance===\nLUI S3 hi(BooItemsTable)\nADDIU S3 S3 lo(BooItemsTable)\nLI S5 0 ; Checking Boo 5-Coin Items Table\nPreBooTablesLoop:\nMOVE T3 S3 ; Copy S3 to T3\nLI T0 0 ; Set item check counter to 0\n\nBooTablesLoop:\nLBU T2 0(T3) ; Load item from value table\nBEQ S2 T2 FoundBooItem ; If player's item is found, continue\nNOP\nLI T4 4 ; Check 5 items per table\nBEQ T0 T4 CheckNextBooTable ; If all items in table checked, move on\nNOP\nADDIU T3 T3 1 ; Add 1 to check next item\nJ BooTablesLoop\nADDIU T0 T0 1 ; Add 1 to counter\n\nCheckNextBooTable:\nADDIU S5 S5 1 ; Add 1 to check next table\nJ PreBooTablesLoop\nADDIU S3 S3 16 ; Add distance between item value tables\n\n;===Randomize Outcome===\nFoundBooItem:\nLBU T0 6(S3) ; Load chance value from current table into T0\nJAL RNGPercentChance\nADDU A0 V0 T0 ; Add base chance and item chance\n\nBEQZ V0 BooFail\nNOP\n; else, trade item for higher-value item\n\n;===Boo Success===\nJAL PlaySound\nLI A0 0x143 ; Successful magic sound\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for sound\n\nLI T3 4 ; Check if item is from rare item table\nBEQ S5 T3 GetBooItem ; If item is rare item, skip upgrade\nLI S4 0 ; Play happy voice and animation\n\nJ GetBooItem\nADDIU S3 S3 16 ; Add distance between item value tables\n\n;===Boo Fail===\nBooFail:\nJAL PlaySound\nLI A0 0x153 ; Failed magic sound\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for sound\n\nBEQZ S5 GetBooItem ; If item is worth 5 coins, skip downgrade\nLI S4 1 ; Skip happy voice and animation\n\nADDIU S3 S3 -16 ; Subtract distance between item value tables\n\n;===Get Boo Item===\nGetBooItem:\nJAL GetRand\nLBU A0 5(S3) ; Choose randomly between items in table\n\nADDU S3 S3 V0 ; Add random byte to item value table\nLBU S2 0(S3) ; Load new item index from item value table\n\n;===Boo Fade In===\nLI A0 4 ; Assigns Happening fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assigns 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\nSB S2 0x18(S1) ; Store new item into chosen item slot to replace\n\nJAL RefreshHUD\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nLUI S5 hi(BooFailMessage)\nBNEZ S4 AfterBoo\nADDIU S5 S5 lo(BooFailMessage) ; Display BooFailMessage\n; else, got good results\n\nJAL HappyVoice\nMOVE A0 S0 ; Copy S0 to A0\nLUI S5 hi(BooSuccessMessage)\nADDIU S5 S5 lo(BooSuccessMessage) ; Display BooSuccessMessage\n\n;===Prepare Item String===\nLUI A0 hi(BooMessageHolder)\nADDIU A0 A0 lo(BooMessageHolder) ; Parse destination\nMOVE A1 S5 ; String formatter (%s)\nLUI A2 hi(ItemStrings)\nADDIU A2 A2 lo(ItemStrings)\nSLL T0 S2 5 ; Multiply item index by 32 (distance between item strings)\nADDU A2 A2 T0 ; Add to get item string text to convert\nJAL sprintf\nLI A3 0 ; Terminator byte\n\nLUI S5 hi(BooMessageHolder)\nADDIU S5 S5 lo(BooMessageHolder) ; Display BooMessage with strings\n\n;===After Boo Message===\nAfterBoo:\nLI T0 7 ; Distance between 0x257 and 0x25E\nMULT S4 T0 ; Multiply S4 by T0\nMFLO A0 ; Store result in A0\nJAL PlaySound\nADDIU A0 A0 0x257 ; Get Boo laugh or Boo cry\n\nMOVE A0 S5 ; Display message\nJAL CallMessage\nLI A1 0\n\nJ exit\nNOP\n\n;===No Items Message===\nNoItems:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(NoItemsMessage)\nADDIU A0 A0 lo(NoItemsMessage) ; Display NoItemsMessage\nJAL CallMessage\nLI A1 0\n\nexit:\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nLW S2 64(SP)\nLW S3 60(SP)\nLW S4 56(SP)\nLW S5 52(SP)\nJR RA\nADDIU SP SP 80\n\n;===Prep for Displaying Coin String===\n.align 16\npercent_d:\n.asciiz \"%d\" ; 0x25640000\n\n.align 16\nCoinString:\n.fill 8\n\n;===Mini Func to Call Prompt===\n.align 4\nCallPrompt:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\n\n; A0 / S0 / V0 = AI's Decision / Prompt Choice\n; A1 = Prompt Address\n; A2 / S1 = Target Flag (0 or 1)\n; A3 / S2 = Empty Slot\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A2 ; Copy A2 to S1\nMOVE S2 A3 ; Copy A3 to S2\n\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nBEQZ S1 SkipDisablePrompt ; If S1 = 0, skip DisablePrompt\nNOP\n\n; Pass window ID on A0\nJAL DisablePrompt\nMOVE A1 S2 ; Pass empty slot on A1\n\nSkipDisablePrompt:\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 S0 ; A1 now has the AI's decision\nMOVE S0 V0 ; S0 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nMOVE V0 S0 ; Copy S0 to V0\n\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nJR RA\nADDIU SP SP 48\n\n;===Mini Func to Prepare Item Strings===\n.align 4\nPrepareItemStrings:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n; A1 = Current Player Struct\n\nLUI A3 hi(BlueColor_ptr)\nADDIU A3 A3 lo(BlueColor_ptr) ; Default to blue font (item #2)\nMOVE T5 A3 ; Copy A2 to T4 (item #3 font colour)\n\nLUI T0 hi(ItemStrings)\nADDIU T0 T0 lo(ItemStrings)\nLBU T1 0x18(A1) ; Load item #1 from offset of player struct\nLBU T2 0x19(A1) ; Load item #2 from offset of player struct\nLBU T3 0x1A(A1) ; Load item #3 from offset of player struct\nLI T7 0xFF ; No item index\n\nSLL A2 T1 5 ; Multiply by 32 (distance between item strings)\nADDU A2 T0 A2 ; A2 now contains item string #1 pointer\n\nBEQ T2 T7 GetNullStringTwice ; If slot #2 empty, get null string twice\nNOP\n\nSLL T4 T2 5 ; Multiply by 32 (distance between item strings)\nADDU T4 T0 T4 ; T4 now contains item string #2 pointer\n\nBEQ T3 T7 GetNullString ; If slot #3 empty, get null string\nNOP\n\nSLL T6 T3 5 ; Multiply by 32 (distance between item srings)\nJ FinalString\nADDU T6 T0 T6 ; T6 now contains item string #3 pointer\n\nGetNullStringTwice:\nLUI T4 hi(NullString)\nADDIU T4 T4 lo(NullString) ; Item #2 = null string\nLUI A3 hi(BlackColor_ptr)\nADDIU A3 A3 lo(BlackColor_ptr) ; Use black font\n\nGetNullString:\nLUI T6 hi(NullString)\nADDIU T6 T6 lo(NullString) ; Item #3 = null string\nLUI T5 hi(BlackColor_ptr)\nADDIU T5 T5 lo(BlackColor_ptr) ; Use black font\n\nFinalString:\nMOVE A1 A0 ; String formatter (%s) from message address\nLUI A0 hi(PromptHolder)\nADDIU A0 A0 lo(PromptHolder) ; Parse destination\n; A2 has item string #1\n; A3 has item #2 font colour\nSW T4 16(SP) ; Pass T4 to A4 of sprintf (item string #2)\nSW T5 20(SP) ; Pass T5 to A5 of sprintf (item #3 font colour)\nSW T6 24(SP) ; Pass T6 to A6 of sprintf (item string #3)\nJAL sprintf ; Converts to text string\nSW R0 28(SP) ; Terminator byte\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n.align 16\nBlueColor_ptr:\n.byte 0x06,0\n\n.align 16\nBlackColor_ptr:\n.byte 0x01,0\n\n;===Mini Func to Disable Prompt Options===\n.align 4\nDisablePrompt:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Window ID\n; A1 / S1 = Empty Item Slot (0,1,2,-1)\n\nBLTZ A1 DisablePromptExit ; If no empty slots, no need to disable\nNOP\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\n\nBNEZ S1 SkipZero\nNOP\n; Pass window ID on A0, 0th option on A1\nJAL DisablePromptOption\nNOP\nADDIU S1 S1 1\n\nSkipZero:\nLI T1 2\nBEQ S1 T1 SkipOne\nNOP\n\nMOVE A0 S0 ; Copy S0 to A0\nJAL DisablePromptOption\nMOVE A1 S1 ; Disable 1st option\nADDIU S1 S1 1\n\nSkipOne:\nMOVE A0 S0 ; Copy S0 to A0\nJAL DisablePromptOption\nMOVE A1 S1 ; Disable 2nd option\n\nDisablePromptExit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Mini Func to Play Happy Voice and Animation===\n.align 4\nHappyVoice:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Current Player Struct\n\nLBU A0 3(A0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n; A1 = String #1\n\nMOVE A2 A1 ; Copy A1 to A2\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Kamek Prices Table===\n.align 16\nKamekPricesTable:\n.byte 5 ; Mushroom price\n.byte 5 ; Skeleton Key price\n.byte 5 ; Poison Mushroom price\n.byte 5 ; Reverse Mushroom pric\n.byte 5 ; Cellular Shopper price\n.byte 5 ; Warp Block price\n.byte 10 ; Plunder Chest price\n.byte 10 ; Bowser Phone price\n.byte 10 ; Dueling Glove price\n.byte 10 ; Lucky Lamp price\n.byte 10 ; Golden Mushroom price\n.byte 15 ; Boo Bell price\n.byte 10 ; Boo Repellant price\n.byte 10 ; Bowser Suit price\n.byte 20 ; Magic Lamp price\n.byte 20 ; Koopa Kard price\n.byte 25 ; Barter Box price\n.byte 20 ; Lucky Charm price\n.byte 25 ; Wacky Watch price\n\n;===Kamek Bad Prices Table===\n.align 16\nKamekBadPricesTable:\n.byte 3 ; Mushroom price x0.5\n.byte 3 ; Skeleton Key price x0.5\n.byte 3 ; Poison Mushroom price x2\n.byte 3 ; Reverse Mushroom price x2\n.byte 3 ; Cellular Shopper price x2\n.byte 3 ; Warp Block price x2\n.byte 5 ; Plunder Chest price x2\n.byte 5 ; Bowser Phone price x2\n.byte 5 ; Dueling Glove price x2\n.byte 5 ; Lucky Lamp price x2\n.byte 5 ; Golden Mushroom price x2\n.byte 8 ; Boo Bell price x2\n.byte 5 ; Boo Repellant price x2\n.byte 5 ; Bowser Suit price x2\n.byte 10 ; Magic Lamp price x2\n.byte 10 ; Koopa Kard price x2\n.byte 13 ; Barter Box price x2\n.byte 10 ; Lucky Charm price x2\n.byte 13 ; Wacky Watch price x2\n\n;===Boo 5-Coin Item Table===\n.align 16\nBooItemsTable:\n.byte 0x00 ; Mushroom (5 coins)\n.byte 0x01 ; Skeleton Key (5 coins)\n.byte 0x04 ; Cellular Shopper (5 coins)\n.byte 0x05 ; Warp Block (5 coins)\n.byte 0xFF ; Placeholder\n.byte 3 ; 4 items\n.byte 40 ; Add 40% to base chance\n\n;===Boo 10-Coin Item Table===\n.align 16\n.byte 0x02 ; Poison Mushroom (10 coins)\n.byte 0x03 ; Reverse Mushroom (10 coins)\n.byte 0x08 ; Dueling Glove (10 coins)\n.byte 0x0A ; Golden Mushroom (10 coins)\n.byte 0x0C ; Boo Repellant (10 coins)\n.byte 4 ; 5 items\n.byte 30 ; Add 30% to base chance\n\n;===Boo 15-Coin Item Table===\n.align 16\n.byte 0x06 ; Plunder Chest (15 coins)\n.byte 0x07 ; Bowser Phone (15 coins)\n.byte 0x09 ; Lucky Lamp (15 coins)\n.byte 0x0D ; Bowser Suit (15 coins)\n.byte 0xFF ; Placeholder\n.byte 4 ; 5 items\n.byte 20 ; Add 20% to base chance\n\n;===Boo 20-Coin Item Table===\n.align 16\n.byte 0x0B ; Boo Bell (20 coins)\n.byte 0x0E ; Magic Lamp (20 coins)\n.byte 0xFF ; Placeholder\n.byte 0xFF ; Placeholder\n.byte 0xFF ; Placeholder\n.byte 1 ; 2 items\n.byte 10 ; Add 10% to base chance\n\n;===Boo Rare Item Table===\n.align 16\n.byte 0x0F ; Koopa Kard\n.byte 0x10 ; Barter Box\n.byte 0x11 ; Lucky Charm\n.byte 0x12 ; Wacky Watch\n.byte 0xFF ; Placeholder\n.byte 3 ; 4 items\n.byte 0 ; Add 0% to base chance\n\n;===Message Text===\n.align 16\nMainPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"The magic show is starting\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Whose show do you want to see\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x07 ; Yellow font\n.ascii \"Kamek\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Coinage Conjuring\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x06 ; Blue font\n.ascii \"Boo\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s Whimsical Wizardry\"\n.byte 0x08,0x0D ; White font, End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nKamekPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Kamek can turn an item into\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"coins worth\"\n.byte 0x07 ; Yellow font\n.ascii \" double\"\n.byte 0x08 ; White font\n.ascii \" its value\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Which item will you conjure\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x06 ; Blue font\n.ascii \"%s\" ; Item string #1\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Font colour placeholder\n.ascii \"%s\" ; Item string #2\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Font colour placeholder\n.ascii \"%s\" ; Item string #3\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x08 ; White font\n.ascii \"Let me reconsider\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nBadAfterKamekMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Oh\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.ascii \" The spell backfired\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Sorry\"\n.byte 0x82 ; Comma (,)\n.ascii \" but this is all you\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll get\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nAfterKamekMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Inconceivable\"\n.byte 0xC2,0xC2 ; Two exclamation marks (!!)\n.ascii \" Kamek turned\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"your item into so many\"\n.byte 0x07 ; Yellow font\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBooPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Boo can transform an\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"item into one of \"\n.byte 0x06 ; Blue font\n.ascii \" higher value\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Which item will you offer\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x06 ; Blue font\n.ascii \"%s\" ; Item string #1\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Font colour placeholder\n.ascii \"%s\" ; Item string #2\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Font colour placeholder\n.ascii \"%s\" ; Item string #3\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x08 ; White font\n.ascii \"Let me reconsider\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nBooFailMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Oh\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.ascii \" It seems your\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"item\"\n.byte 0x08 ; White font\n.ascii \" withered down\"\n.byte 0x85 ; Period (.)\n.ascii \" Sorry\"\n.byte 0x82 ; Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"but this is what it has become\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBooSuccessMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Extraordinary\"\n.byte 0xC2,0xC2 ; Two exclamation marks (!!)\n.ascii \" Boo\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"transmutated your item into\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"a \"\n.byte 0x06 ; Blue font\n.ascii \"%s\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoItemsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"The magic show already started\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"No sneaking in allowed\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n\n;===Message String Holders===\n.align 16\nPromptHolder:\n.fill 0x1024,0\n\n.align 16\nBooMessageHolder:\n.fill 0x1024,0\n\n;===Item Strings===\n.align 32\nNullString:\n.asciiz \"No item available\" ; 0xFF\n.align 32\nItemStrings:\n.asciiz \"Mushroom\" ; 0x00\n.align 32\n.asciiz \"Skeleton Key\" ; 0x01\n.align 32\n.asciiz \"Poison Mushroom\" ; 0x02\n.align 32\n.asciiz \"Reverse Mushroom\" ; 0x03\n.align 32\n.asciiz \"Cellular Shopper\" ; 0x04\n.align 32\n.asciiz \"Warp Block\" ; 0x05\n.align 32\n.asciiz \"Plunder Chest\" ; 0x06\n.align 32\n.asciiz \"Bowser Phone\" ; 0x07\n.align 32\n.asciiz \"Dueling Glove\" ; 0x08\n.align 32\n.asciiz \"Lucky Lamp\" ; 0x09\n.align 32\n.asciiz \"Golden Mushroom\" ; 0x0A\n.align 32\n.asciiz \"Boo Bell\" ; 0x0B\n.align 32\n.asciiz \"Boo Repellant\" ; 0x0C\n.align 32\n.asciiz \"Bowser Suit\" ; 0x0D\n.align 32\n.asciiz \"Magic Lamp\" ; 0x0E\n.align 32\n.asciiz \"Koopa Kard\" ; 0x0F\n.align 32\n.asciiz \"Barter Box\" ; 0x10\n.align 32\n.asciiz \"Lucky Charm\" ; 0x11\n.align 32\n.asciiz \"Wacky Watch\" ; 0x12"},"Peek-a-Boo v1.1":{"language":0,"code":"; NAME: Peek-a-Boo v1.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|BoolockHolmes\n\nADDIU SP SP -40\nSW RA 36(SP)\n\n;===Rotate Toward Boolock Holmes===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 BoolockHolmes ; Face BoolockHolmes\n\n;===Greeting Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(GreetingMessage)\nJAL CallMessage\nADDIU A0 A0 lo(GreetingMessage) ; Display GreetingMessage\n\n;===Randomize Prompt===\nJAL GetRand\nORI A0 R0 0x5 ; Get random byte from 0-5\n\nBEQZ V0 FirstPrompt\nNOP\nADDIU V0 V0 -1 ; Subtract 1 from V0\nBEQZ V0 SecondPrompt\nNOP\nADDIU V0 V0 -1 ; Subtract 1 from V0\nBEQZ V0 ThirdPrompt\nNOP\nADDIU V0 V0 -1 ; Subtract 1 from V0\nBEQZ V0 FourthPrompt\nNOP\nADDIU V0 V0 -1 ; Subtract 1 from V0\nBEQZ V0 FifthPrompt\nNOP\n; else, select SixthPrompt\n\n;===Sixth Prompt===\nLUI A0 hi(CoffinPrompt)\nADDIU A0 A0 lo(CoffinPrompt) ; Display CoffinPrompt\nJAL CallPrompt\nLI A1 2 ; Correct option is 2\n\nJ CheckAnswer\nNOP\n\n;===First Prompt===\nFirstPrompt:\nLUI A0 hi(ChompPrompt)\nADDIU A0 A0 lo(ChompPrompt) ; Display ChompPrompt\nJAL CallPrompt\nLI A1 0 ; Correct option is 0\n\nJ CheckAnswer\nNOP\n\n;===Second Prompt===\nSecondPrompt:\nLUI A0 hi(DarkPrompt)\nADDIU A0 A0 lo(DarkPrompt) ; Display DarkPrompt\nJAL CallPrompt\nLI A1 1 ; Correct option is 1\n\nJ CheckAnswer\nNOP\n\n;===Third Prompt===\nThirdPrompt:\nLUI A0 hi(KingPrompt)\nADDIU A0 A0 lo(KingPrompt) ; Display KingPrompt\nJAL CallPrompt\nLI A1 2 ; Correct option is 2\n\nJ CheckAnswer\nNOP\n\n;===Fourth Prompt===\nFourthPrompt:\nLUI A0 hi(MintPrompt)\nADDIU A0 A0 lo(MintPrompt) ; Display MintPrompt\nJAL CallPrompt\nLI A1 0 ; Correct option is 0\n\nJ CheckAnswer\nNOP\n\n;===Fifth Prompt===\nFifthPrompt:\nLUI A0 hi(ButlerPrompt)\nADDIU A0 A0 lo(ButlerPrompt) ; Display ButlerPrompt\nJAL CallPrompt\nLI A1 1 ; Correct option is 1\n\nCheckAnswer:\nBEQ V0 V1 CorrectAnswer\nNOP\n; else, go to WrongAnswer\n\n;===Wrong Answer Message===\nWrongAnswer:\nJAL FadeScreen\nNOP\n\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(WrongMessage)\nJAL CallMessage\nADDIU A0 A0 lo(WrongMessage) ; Display WrongMessage\n\nJ exit\nNOP\n\n;===Correct Answer Message===\nCorrectAnswer:\nJAL FadeScreen\nNOP\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(CorrectMessage)\nJAL CallMessage\nADDIU A0 A0 lo(CorrectMessage) ; Display CorrectMessage\n\n;===Receive Coins===\nJAL GetCurrentPlayerIndex ; Get current player index at V0\nNOP\n\nMOVE A0 V0 ; Give coins to current player\nJAL AdjustPlayerCoinsGradual\nLI A1 15 ; Gain 15 coins\n\nJAL GetCurrentPlayerIndex ; Get current player index at V0\nNOP\n\nMOVE A0 V0 ; Give coins to current player\nJAL ShowPlayerCoinChange\nLI A1 15 ; Gain 15 coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Play Happy Voice and Animation===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\n\nLBU A0 3(V0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nexit:\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Mini Func to Call Prompt===\n.align 4\nCallPrompt:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 = Message Prompt\n; A1 / S0 / V1 = Correct Option\n; S1 / V0 = Chosen Option\n\nMOVE S0 A1 ; Copy A1 to S0\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nJAL AILogic\nMOVE A0 S0 ; Pass correct option on A0\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S0 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nMOVE V0 S1 ; Copy S1 to V0\nMOVE V1 S0 ; Copy S0 to V1\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Determine AI Logic===\n.align 4\nAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Correct Option\n\nMOVE S0 A0 ; Copy A0 to S0\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\n\nLBU T0 0x1(V0) ; Load CPU difficulty into T0\nLI T1 25\nMULT T0 T1 ; Multiply T0 by T1\nMFLO A0 ; Move result into A0\nJAL RNGPercentChance\nNOP\nBNEZL V0 AIExit ; If V0 = 1, select correct option\nMOVE V0 S0 ; Pick correct option (on likely)\n; else, pick wrong option\n\nBEQL S0 R0 AIExit ; If V0 = 1, pick above\nADDIU V0 S0 2 ; Pick 2 options above (on likely)\nJ AIExit\nADDIU V0 S0 -1 ; Pick option below\n\nAIExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Fade Screen Out and In===\n.align 4\nFadeScreen:\nADDIU SP SP -40\nSW RA 36(SP)\n\nLI A0 12 ; Assigns Boo fade-out\nJAL InitFadeOut ; Fade to black\nLI A1 16 ; Assigns 16 frames of fade-out\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-out\n\nLI A0 12 ; Assigns Boo fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assigns 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Message Text===\n.align 16\nGreetingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You there\"\n.byte 0x85 ; Period (.)\n.ascii \" You look like\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"you have a sharp eye\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I could use your help\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nCoffinPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Have you seen a\"\n.byte 0x06 ; Blue font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"who sleeps in a coffin\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Next to the Fear House\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Near the Peepa Bellhouse\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"By the rear gate\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nChompPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Have you seen a\"\n.byte 0x06 ; Blue font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"out walking his dog\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Across from the teacups ride\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Across from the concession stand\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Near the capsule machine\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nDarkPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Have you seen a\"\n.byte 0x06 ; Blue font\n.ascii \" dark Boo\"\n.byte 0x08,0xC3 ; White font, Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Across from the bank\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Next to the item shop\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Behind the ticket booth\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nKingPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Have you seen a\"\n.byte 0x06 ; Blue font\n.ascii \" royal Boo\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"who wears a crown\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"In the Boo Bellhouse\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"By the Magic Show\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"At the Fear House\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nMintPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Have you seen a\"\n.byte 0x06 ; Blue font\n.ascii \" clumsy Boo\"\n.byte 0x08,0xC3 ; White font, Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Behind the concession stand\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Across from the strength test\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Behind the prize exchange\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nButlerPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Have you seen a\"\n.byte 0x06 ; Blue font\n.ascii \" refined Boo\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"with a formidable mustache\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Behind the ice cream vendor\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Near the bank\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"By the rear gate\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nWrongMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"So\"\n.byte 0x82 ; Comma (,)\n.ascii \" that doesn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t line up\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Seems your intel was off somehow\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Sorry\"\n.byte 0x82 ; Comma (,)\n.ascii \" I shouldn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t have imposed\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Never mind\"\n.byte 0x82 ; Comma (,)\n.ascii \" then\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nCorrectMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Thank you very much\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You were right\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" This will be\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"instrumental to my investigation\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Please take this handsome\"\n.byte 0x07 ; Yellow font\n.ascii \" reward\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Peepa Bellhouse v3.1":{"language":0,"code":"; NAME: Peepa Bellhouse v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|PeepaBellhouse\n\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; S0 = Current Player Struct\n; S1 = Empty Item Slot Offset\n\n;===Rotate Toward Boo Bellhouse===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 PeepaBellhouse ; Face PeepaBellhouse\n\n;===Check Player Item Slots===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBLTZ V0 NoSpace ; If V0 < 0 (no empty slots), go to NoSpace\nNOP\nMOVE S1 V0 ; Copy V0 to S1\n\n;===Boo Bellhouse Message===\nJAL PlaySound\nLI A0 0x13A ; Peepa squeak\n\nLUI A0 hi(BellhouseMessage)\nJAL CallMessage\nADDIU A0 A0 lo(BellhouseMessage) ; Display BellhouseMessage\n\n;===Receive Boo Repellant===\nLI T0 0x0C ; Boo Repellant index\nADDU S1 S0 S1 ; Add empty slot offset to player struct\nSB T0 0x18(S1) ; Store item into empty slot offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\n;===Play Happy Voice and Animation===\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nJ exit\nNOP\n\n;===No Space Message===\nNoSpace:\nJAL PlaySound\nLI A0 0x13A ; Peepa squeak\n\nLUI A0 hi(NoSpaceMessage)\nJAL CallMessage\nADDIU A0 A0 lo(NoSpaceMessage) ; Display NoSpaceMessage\n\nexit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 -1 ; Character image (-1 for none)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Message Text===\n.align 16\nBellhouseMessage:\n.ascii \"Psst\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" Wanna help us take down these\"\n.byte 0x0A ; New line (writes below)\n.byte 0x03 ; Red font\n.ascii \"oppressive Boos\"\n.byte 0x08,0xC3 ; White font, Question mark (?)\n.ascii \" Take this\"\n.byte 0x82 ; Comma (,)\n.ascii \" it\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s\"\n.byte 0x0A ; New line (writes below)\n.ascii \"our\"\n.byte 0x06 ; Blue font\n.ascii \" secret weapon\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoSpaceMessage:\n.ascii \"Go away\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll be of no help to our\"\n.byte 0x0A ; New line (writes below)\n.byte 0x03 ; Red font\n.ascii \"ethereal revolution\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.ascii \" Shoo\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Strength Test v1.1":{"language":0,"code":"; NAME: Strength Test v1.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|StrengthTest\n; PARAM: Space|StrengthTestBoo\n\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\nSW S2 64(SP)\nSW S3 60(SP)\nSW S4 56(SP)\nSW S5 52(SP)\n\n; S0 = Current Player Struct\n; S1 = Window ID\n; S2 = Points Haul / Coin Prize\n; S3 = A or B to Press (0 or 1) / Key String Flag\n; S4 = Button Deactivator Flag\n; S5 = Timer / CPU Sound Loop Counter\n\n;===Rotate Toward StrengthTestBoo===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 StrengthTestBoo ; Face StrengthTestBoo\n\n;===Greeting Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; No string\nLUI A1 hi(GreetingMessage)\nJAL CallMessage\nADDIU A1 A1 lo(GreetingMessage) ; Display GreetingMessage\n\n;===Rotate Toward StrengthTest===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 StrengthTest ; Face StrengthTest\n\n;===Starting Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; No string\nLUI A1 hi(StartingMessage)\nJAL CallMessage\nADDIU A1 A1 lo(StartingMessage) ; Display StartingMessage\n\n;===Fade Out===\nLI A0 4 ; Happening fade-out\nJAL InitFadeOut ; Fade to black\nLI A1 16 ; Assigns 16 frames of fade-out\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-out\n\n;===Randomize Starting Time===\nJAL GetRandomByte ; Get random byte (0-255) at V0\nNOP\n\nJAL SleepProcess\nSRL A0 V0 1 ; Divide V0 by 2 (wait that many frames)\n\n;===Decide Button to Press and Format String===\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\nMOVE S3 V0 ; Copy V0 to S3\n\nLUI A2 hi(ButtonPointer)\nADDIU A2 A2 lo(ButtonPointer)\nSLL V0 V0 4 ; Multiply V0 by 16 (distance between Button Pointers)\nADDU A2 A2 V0 ; Add distance between Button Pointers\nLUI A0 hi(ActionMessageHolder)\nADDIU A0 A0 lo(ActionMessageHolder) ; Parse destination\nLUI A1 hi(ActionMessage)\nADDIU A1 A1 lo(ActionMessage) ; String formatter (%s)\nJAL sprintf ; Converts string to text\nLI A3 0 ; Terminator byte\n\n;===Fade In===\nLI A0 4 ; Happening fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assigns 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\n;===Display Action Message===\nJAL PlaySound\nLI A0 0x317 ; Whistle\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(ActionMessageHolder)\nADDIU A1 A1 lo(ActionMessageHolder) ; Display ActionMessage with strings\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nMOVE S1 A0 ; Copy A0 to S1\n\n;===Get Current Player Struct===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\n;===Convert Button Presses to Points===\nLI S2 0 ; Start at 0 points\nLI S4 0 ; Start flag at 0\nLI S5 0 ; Start timer at 0\n\nJAL PlayerIsCPU\nLBU A0 0x1D(S0) ; Check if current player is CPU (V0 = 1)\n\nBNEZ V0 CalculateHaul ; If player is CPU, calculate haul\nNOP\n\nButtonLoop:\nMOVE A0 S0 ; Pass current player struct on A0\nJAL DetectABInput\nMOVE A1 S3 ; Pass button flag on A1\n\nBEQZ V0 NoPress ; If V0 = 0, no press registered\nNOP\n\nJAL PlaySound\nLI A0 0x3B ; Whoosh sound\n\nBNEZ S4 CountPress ; If S4 = 1, count the button press\nNOP\n\nJ NoPress\nLI S4 1 ; Count the next press\n\nCountPress:\nADDIU S2 S2 1 ; Add 1 point\nLI S4 0 ; Don't count the next press\n\nNoPress:\nJAL SleepVProcess\nNOP\n\nADDIU S5 S5 1 ; Add 1 to the timer\nSLTI T0 S5 150 ; ON if timer hasn't run out\nBEQZ T0 exitloop\nNOP\n\nJ ButtonLoop\nNOP\n\n;===Calculate CPU's Points Haul===\nCalculateHaul:\nJAL GetRandomByte ; Get random byte (0-255) at V0\nNOP\n\nLBU T0 1(S0) ; Load CPU difficulty from offset of player struct\n\nBEQZ T0 GetCPUPoints ; Easy CPU\nLI T1 8 ; Easy CPU base points\nLI T2 1\nBEQ T0 T2 GetCPUPoints ; Normal CPU\nLI T1 15 ; Normal CPU base points\nLI T2 2\nBEQ T0 T2 GetCPUPoints ; Hard CPU\nLI T1 21 ; Hard CPU base points\n; else Super Hard\nLI T1 28 ; Super Hard CPU base points\n\nGetCPUPoints:\nLI T0 5\nDIVU V0 T0 ; Divide V0 by T0\nMFHI S2 ; HI contains the remainder, pull that into S2\nADDU S2 S2 T1 ; Add to base points\n\nSRL S5 S2 1 ; Divide points by 2\n\nCPUSoundLoop:\nJAL PlaySound\nLI A0 0x3B ; Whoosh sound\n\nJAL SleepProcess\nLI A0 2 ; Wait 2 frames per sound\n\nBEQZ S5 exitloop\nNOP\nJ CPUSoundLoop\nADDIU S5 S5 -1\n\n;===Exit Loop, Close Message, Fade-in===\nexitloop:\nMOVE A0 S1 ; Copy S1 to A0 (window ID)\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n;===Calculate Points===\nSLTI T0 S2 10 ; If points < 10, T0 = 1\nBNEZ T0 NoPrize\nNOP\nSLTI T0 S2 20 ; If points < 20, T0 = 1\nBNEZ T0 SmallPrize\nNOP\nSLTI T0 S2 30 ; If points < 30, T0 = 1\nBNEZ T0 BigPrize\nNOP\n; else, get grand prize\n\n;===Grand Prize===\nJAL PlaySound\nLI A0 0x0C ; Game Guy bell sound\n\nJAL HappyVoice\nMOVE A0 S0 ; Pass current player struct on A0\n\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nLI S3 0\nBLTZ V0 GrandPrizeCoins ; If V0 < 0 (no empty slots), get coins only\nLI S2 40 ; Get 40 coins\n; else, player can get a key\n\n;===Get Key(s)===\nLI S2 30 ; Start with 30 coins\nADDU T0 S0 V0 ; Add empty slot offset of player struct\nGrandPrizeKeyLoop:\nLI T1 0x01 ; Skeleton Key index\nSB T1 0x18(T0) ; Store item in empty slot offset of player struct\nADDIU S3 S3 1 ; Add 1 to A3 (Key String)\n\nLI T2 2\nBEQ V0 T2 GrandPrizeKeySound ; Once V0 = 2, stop giving keys\nNOP\n\nADDIU V0 V0 1 ; Add 1 to V0 (loop counter)\nADDIU T0 T0 1 ; Add 1 to get next empty slot\nJ GrandPrizeKeyLoop\nADDIU S2 S2 -5 ; Subtract 5 coins from prize\n\nGrandPrizeKeySound:\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\nJAL SleepProcess\nLI A0 20 ; Wait 20 frames for sound\n\n;===Get Grand Prize===\nGrandPrizeCoins:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nLUI A1 hi(GrandPrizeMessage)\nADDIU A1 A1 lo(GrandPrizeMessage) ; Display GrandPrizeMessage\nMOVE A2 S2 ; Pass coin prize on A2\nJAL GetPrize\nMOVE A3 S3 ; Pass key string on A3\n\nJAL HappyVoice\nMOVE A0 S0 ; Pass current player struct on A0\n\nJ exit\nNOP\n\n;===No Prize===\nNoPrize:\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 StrengthTestBoo ; Face StrengthTestBoo\n\nLI A0 0 ; No string\nLUI A1 hi(NoPrizeMessage)\nJAL CallMessage\nADDIU A1 A1 lo(NoPrizeMessage) ; Display NoPrizeMessage\n\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x287 ; Add character value to Mario's sad voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's sad voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 3 ; Set lose animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 80 ; Wait 80 frames for animation\n\nJ exit\nNOP\n\n;===Small Prize===\nSmallPrize:\nJAL PlaySound\nLI A0 0x09 ; Coin sound\n\nJAL HappyVoice\nMOVE A0 S0 ; Pass current player struct on A0\n\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nLI S3 0\nBLTZ V0 SmallPrizeCoins ; If V0 < 0 (no empty slots), get coins only\nLI S2 10 ; Get 10 coins\n; else, player gets 1 key and 5 coins\n\n;===Get Key===\nADDU V0 S0 V0 ; Add empty slot offset of player struct\nLI T0 0x01 ; Skeleton Key index\nSB T0 0x18(V0) ; Store item in empty slot offset of player struct\n\nLI S2 5 ; Get 5 coins\nLI S3 1 ; Retrieve OneKeyString\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\nJAL SleepProcess\nLI A0 20 ; Wait 20 frames for sound\n\n;===Get Small Prize===\nSmallPrizeCoins:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nLUI A1 hi(SmallPrizeMessage)\nADDIU A1 A1 lo(SmallPrizeMessage) ; Display SmallPrizeMessage\nMOVE A2 S2 ; Pass coin prize on A2\nJAL GetPrize\nMOVE A3 S3 ; Pass key string on A3\n\nJAL HappyVoice\nMOVE A0 S0 ; Pass current player struct on A0\n\nJ exit\nNOP\n\n;===Big Prize===\nBigPrize:\nJAL PlaySound\nLI A0 0x15 ; Coin Bag sound\n\nJAL HappyVoice\nMOVE A0 S0 ; Pass current player struct on A0\n\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nLI S3 0\nBLTZ V0 BigPrizeCoins ; If V0 < 0 (no empty slots), get coins only\nLI S2 20 ; Get 20 coins\n; else, player can get a key\n\n;===Get Key(s)===\nLI T0 2\nBEQ T0 V0 OneKeyBigPrize\nNOP\nADDU V0 S0 V0 ; Add empty slot offset of player struct\nLI T0 0x01 ; Skeleton Key index\nSB T0 0x18(V0) ; Store item in empty slot offset of player struct\nSB T0 0x19(V0) ; Store item in empty slot offset of player struct\n\nLI S2 10 ; Get 10 coins\nJ BigPrizeKeySound\nLI S3 2 ; Retrieve TwoKeysString\n\nOneKeyBigPrize:\nADDU V0 S0 V0 ; Add empty slot offset of player struct\nLI T0 0x01 ; Skeleton Key index\nSB T0 0x18(V0) ; Store item in empty slot offset of player struct\n\nLI S2 15 ; Get 15 coins\nLI S3 1 ; Retrieve OneKeyString\n\nBigPrizeKeySound:\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\nJAL SleepProcess\nLI A0 20 ; Wait 20 frames for sound\n\n;===Get Big Prize===\nBigPrizeCoins:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nLUI A1 hi(BigPrizeMessage)\nADDIU A1 A1 lo(BigPrizeMessage) ; Display BigPrizeMessage\nMOVE A2 S2 ; Pass coin prize on A2\nJAL GetPrize\nMOVE A3 S3 ; Pass key string on A3\n\nJAL HappyVoice\nMOVE A0 S0 ; Pass current player struct on A0\n\nexit:\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nLW S2 64(SP)\nLW S3 60(SP)\nLW S4 56(SP)\nLW S5 52(SP)\nJR RA\nADDIU SP SP 80\n\n;===Prep for Displaying Coin String===\n.align 16\npercent_d:\n.asciiz \"%d\" ; 0x25640000\n\n.align 16\nCoinString:\n.fill 8\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = String #1\n; A1 = Message Address\n\nMOVE A2 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Detect A/B Input===\n.align 4\nDetectABInput:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Current Player Struct\n; A1 = A or B to Press (0 or 1)\n; V0 = Press Detected (0 or 1)\n\nLBU T0 2(A0) ; Load controller value from offset of player struct\n\nLUI T1 hi(0x800C9520)\nADDIU T1 T1 lo(0x800C9520) ; Load port 1's Button Press Address\nLI T2 0x2 ; Distance between each port's Button Press Address\nMULT T2 T0 ;  Multiply controller value by 2\nMFLO T0 ; Move the result into T0\n\nADDU T1 T1 T0 ; Add result to get current player's button press address\nLBU T0 0(T1) ; Load button press value into T0\n\nLI T1 0x80\nSRLV T1 T1 A1 ; Shift right by 0 or 1 (0x80 for A, 0x40 for B)\nBEQ T0 T1 DetectABInputexit\nLI V0 1 ; Button press detected\n; else, no button press detected\nJ DetectABInputexit\nLI V0 0 ; No button press detected\n\nDetectABInputexit:\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Play Happy Effects===\n.align 4\nHappyVoice:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Current Player Struct\n\nLBU A0 3(A0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Prize===\n.align 4\nGetPrize:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\nSW S3 28(SP)\n\n; A0 / S0 = Current Player Index\n; A1 / S1 = Prize Message Address\n; A2 / S2 = Coin Prize\n; A3 / S3 = Key String Flag (1-3)\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\nMOVE S2 A2 ; Copy A2 to S2\nMOVE S3 A3 ; Copy A3 to S3\n\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 StrengthTestBoo ; Face StrengthTestBoo\n\nLUI A0 hi(CoinString)\nADDIU A0 A0 lo(CoinString) ; Parse destination\nLUI A1 hi(percent_d)\nADDIU A1 A1 lo(percent_d) ; String formatter\nMOVE A2 S2 ; Coins to convert to string (Coin Prize)\nJAL sprintf ; Converts a number to a text string\nLI A3 0 ; Terminator byte\n\nBEQZ S3 SkipKeys\nNOP\nADDIU S3 S3 -1 ; Subtract 1 (0-2)\nBNEZ S3 SkipOneKey\nNOP\nLUI A2 hi(OneKeyString)\nJ PrintPrize\nADDIU A2 A2 lo(OneKeyString)\n\nSkipKeys:\nLUI A2 hi(NoKeyString)\nJ PrintPrize\nADDIU A2 A2 lo(NoKeyString)\n\nSkipOneKey:\nADDIU S3 S3 -1 ; Subtract 1 (0-1)\nBNEZ S3 PrintThreeKeys\nNOP\nLUI A2 hi(TwoKeysString)\nJ PrintPrize\nADDIU A2 A2 lo(TwoKeysString)\n\nPrintThreeKeys:\nLUI A2 hi(ThreeKeysString)\nADDIU A2 A2 lo(ThreeKeysString)\n\nPrintPrize:\nLUI A0 hi(PrizeMessageHolder)\nADDIU A0 A0 lo(PrizeMessageHolder) ; Parse destination\nMOVE A1 S1 ; String formatter (%s)\n; Pass key string to convert on A2\nJAL sprintf ; Converts string to text\nLI A3 0 ; Terminator byte\n\nLUI A0 hi(CoinString)\nADDIU A0 A0 lo(CoinString) ; String #1 stored in A2 (CoinString)\nLUI A1 hi(PrizeMessageHolder)\nJAL CallMessage\nADDIU A1 A1 lo(PrizeMessageHolder) ; Dislay PrizeMessage with strings\n\nMOVE A0 S0 ; Give coins to current player\nJAL AdjustPlayerCoinsGradual\nMOVE A1 S2 ; Give coins\n\nMOVE A0 S0 ; Give coins to current player\nJAL ShowPlayerCoinChange\nMOVE A1 S2 ; Give coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nLW S3 28(SP)\nJR RA\nADDIU SP SP 48\n\n;===Message Text===\n.align 16\nGreetingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve come to the right place\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Welcome to the Strength Test\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Step right up and test your skills\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You can win one of three\"\n.byte 0x07 ; Yellow font\n.ascii \" prizes\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nStartingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Now\"\n.byte 0x82 ; Comma (,)\n.ascii \" when I say GO\"\n.byte 0x82 ; Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x03 ; Red font\n.ascii \"keep pressing\"\n.byte 0x08 ; White font\n.ascii \" the button that I tell you\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"to press\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" Now get ready\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.ascii \"and\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nActionMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"GO\"\n.byte 0xC2,0xC2 ; Two exclamation marks (!!)\n.ascii \" Keep pressing \"\n.ascii \"%s\" ; A or B button\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"to charge power\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0 ; End message\n\n.align 16\nGrandPrizeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Incredible\"\n.byte 0xC2,0xC2 ; Two exclamation marks (!!)\n.ascii \" You won the\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"grand prize\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve really earned this\"\n.byte 0x7B ; Colon (:)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"%s\"\n.byte 0x07 ; Yellow font\n.byte 0x11 ; String #1 stored in A2 (Coin Prize)\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Hope you had fun\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoPrizeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Regrettable\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.ascii \" You didn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t hit\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"hard enough for a\"\n.byte 0x06 ; Blue font\n.ascii \" prize\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Come back and try again next time\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nSmallPrizeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Nice job\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" You\"\n.byte 0x5C ; Aposrophe (')\n.ascii \"ve earned\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"yourself a small prize\"\n.byte 0x7B ; Colon (:)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"%s\"\n.byte 0x07 ; Yellow font\n.byte 0x11 ; String #1 stored in A2 (Coin Prize)\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Hope you enjoyed yourself\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBigPrizeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Congratulations\"\n.byte 0x82 ; Comma (,)\n.ascii \" you won a\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"big prize\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" Please take this\"\n.byte 0x7B ; Colon (:)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"%s\"\n.byte 0x07 ; Yellow font\n.byte 0x11 ; String #1 stored in A2 (Coin Prize)\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Hope you had a blast\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n\n;===Action Message Placeholder===\n.align 16\nActionMessageHolder:\n.fill 0x1024,0\n\n;===Prize Message Placeholder===\n.align 16\nPrizeMessageHolder:\n.fill 0x1024,0\n\n;===Button Pointers===\n.align 16\nButtonPointer:\n.byte 0x21,0 ; A button\n\n.align 16\n.byte 0x22,0 ; B button\n\n;===Prize Strings===\n.align 32\nNoKeyString:\n.ascii \"have \"\n\n.align 32\nOneKeyString:\n.byte 0x06 ; Blue font\n.ascii \"1 carnival ticket\"\n.byte 0x08 ; White font\n.asciiz \" and \"\n\n.align 32\nTwoKeysString:\n.byte 0x06 ; Blue font\n.ascii \"2 carnival tickets\"\n.byte 0x08 ; White font\n.asciiz \" and \"\n\n.align 32\nThreeKeysString:\n.byte 0x06 ; Blue font\n.ascii \"3 carnival tickets\"\n.byte 0x08 ; White font\n.asciiz \" and \""},"Teacups v3.1":{"language":0,"code":"; NAME: Teacups v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\nSW S2 64(SP)\nSW S3 60(SP)\nSW S4 56(SP)\nSW S5 52(SP)\n\n; S0 = Current Player Struct\n; S1 = Prompt Choice\n; S2 = Item Chances Table\n; S3 = Player Placement and Distance Between Tables / Item Table\n; S4 = Empty Item Slot + Offset of Player Struct\n; S5 = Item Received / Item String Pointer\n\n;===Hide Dice Roll===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n;===Set Player Idle Animation===\nLi A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Greeting Message===\nLI A0 0x7 ; Boo image\nLUI A1 hi(GreetingMessage)\nJAL CallMessage\nADDIU A1 A1 lo(GreetingMessage) ; Display GreetingMessage\n\n;===Select Teacup Prompt===\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(TeacupPrompt)\nADDIU A1 A1 lo(TeacupPrompt) ; Display TeacupPrompt\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 0\nJAL GetBasicPromptSelection\nLI A1 0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nBEQZ S1 PickCup\nNOP\n; else go to PickCup\n\n;===Fade-Out and Set Player Animation===\nPickCup:\nLI A0 12 ; Assigns Boo fade-out\nJAL InitFadeOut ; Fade to black\nLI A1 16 ; Assigns 16 frames of fade-out\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-out\n\nLI A0 -1 ; Set current player\nLI A1 4 ; Set dizzy animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\nJAL GetCurrentSpaceIndex ; Get current space index at V0\nNOP\n\nLI A0 -1 ; Set current player\nLI A1 1 ; Rotate in 1 frame\nJAL RotatePlayerModel\nMOVE A2 V0 ; Face current space (south)\n\nJAL PlaySound\nLI A0 0x128 ; Swoosh sound\n\nJAL SleepProcess\nLI A0 50 ; Wait 50 frames for sound\n\n;===Check for Empty Item Slot===\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Check if current player has empty item slot\n\nBLTZ V0 GetNothing ; If V0 < 0 (no empty slsots), get nothing\nNOP\nMOVE S4 V0 ; Copy V0 to S4\n\n;===Get Current Player Placement===\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0-3) at V0\nLI T0 16 ; Distance between chances tables\nMULT V0 T0 ; Multiply V0 by T0\nMFLO S3 ; Store the result in S3\n\n;===Randomize Teacup Outcome===\nJAL GetRandomByte ; Get random byte (0-255) at V0\nNOP\n\nSLTI T0 V0 85 ; T0 = 1 if V0 < 85\nBNEZ T0 GetNothing ; If T0 = 1, get nothing\nNOP\nSLTI T0 V0 170 ; T0 = 1 if V0 < 170\nBNEZ T0 GetBigItem ; If T0 = 1, get big item\nNOP\n; else, get small item\n\n;===Get Small Item Tables===\nLUI S2 hi(SmallItemChancesTables)\nADDIU S2 S2 lo(SmallItemChancesTables)\nADDU S2 S2 S3 ; Add distance between chances tables\n\nLUI S3 hi(SmallItemTable)\nJ Randomizer\nADDIU S3 S3 lo(SmallItemTable)\n\n;===Get Big Item Tables===\nGetBigItem:\nLUI S2 hi(BigItemChancesTables)\nADDIU S2 S2 lo(BigItemChancesTables)\nADDU S2 S2 S3 ; Add distance between chances tables\n\nLUI S3 hi(BigItemTable)\nADDIU S3 S3 lo(BigItemTable)\n\n;===Randomize Item===\nRandomizer:\nJAL GetRand\nORI A0 R0 99 ; Get random byte (0-99) at V0\n\nRandomLoop:\nLBU S5 0(S3) ; Load item value into S5\nLBU T2 0(S2) ; Load chance value into T2\nSLT T0 V0 T2 ; If V0 < T2, T0 = 1\nBNEZ T0 GetOutcome ; If T0 = 1, select outcome\nNOP\nADDIU S2 S2 1 ; Add 1 to chances table to check next chance value\nJ RandomLoop\nADDIU S3 S3 1 ; Add 1 to item table to select next item\n\n;===Fade-In and Receive Item===\nGetOutcome:\nLI A0 12 ; Assigns Boo fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assigns 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\nADDU S4 S0 S4 ; Add empty item slot offset to player struct\nSB S5 0x18(S4) ; Store item into empty slot offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\n;===Format Item Message===\nLUI T0 hi(ItemStrings)\nADDIU T0 T0 lo(ItemStrings)\nSLL T1 S5 5 ; Multiply item index by 32 (distance between item strings)\nADDU S5 T0 T1 ; S4 now contains item string pointer\n\nLUI A0 hi(ItemMessageHolder)\nADDIU A0 A0 lo(ItemMessageHolder) ; Parse destination\nLUI A1 hi(GetItemMessage)\nADDIU A1 A1 lo(GetItemMessage) ; String formatter (%s)\nMOVE A2 S5 ; Convert item string to text\nJAL sprintf ; Converts to text string\nLI A3 0 ; Terminator byte\n\n;===Item Message===\nLI A0 -1 ; No image\nLUI A1 hi(ItemMessageHolder)\nJAL CallMessage\nADDIU A1 A1 lo(ItemMessageHolder) ; Display ItemMessage with strings\n\n;===Play Happy Voice and Animation===\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nJ exit\nNOP\n\n;===Get Nothing===\nGetNothing:\nLI A0 12 ; Assigns Boo fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assigns 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nexit:\nLI A0 0x7 ; Boo image\nLUI A1 hi(EndingMessage)\nJAL CallMessage\nADDIU A1 A1 lo(EndingMessage) ; Display EndingMessage\n\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nLW S2 64(SP)\nLW S3 60(SP)\nLW S4 56(SP)\nLW S5 52(SP)\nJR RA\nADDIU SP SP 80\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Character Image\n; A1 = Message Address\n; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\n\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Small Item 1st Chances Table===\n.align 16\nSmallItemChancesTables:\n.byte 45 ; Skeleton Key (0-44) 45%\n.byte 60 ; Cellular Shopper (45-59) 15%\n.byte 100 ; Warp Block (60-99) 40%\n\n;===Small Item 2nd Chances Table===\n.align 16\n.byte 50 ; Skeleton Key (0-49) 50%\n.byte 70 ; Cellular Shopper (50-69) 20%\n.byte 100 ; Warp Block (70-99) 30%\n\n;===Small Item 3rd Chances Table===\n.align 16\n.byte 50 ; Skeleton Key (0-49) 50%\n.byte 80 ; Cellular Shopper (50-79) 30%\n.byte 100 ; Warp Block (80-99) 20%\n\n;===Small Item 4th Chances Table===\n.align 16\n.byte 45 ; Skeleton Key (0-44) 45%\n.byte 85 ; Cellular Shopper (45-84) 40%\n.byte 100 ; Warp Block (85-99) 15%\n\n;===Small Item Table===\n.align 16\nSmallItemTable:\n.byte 0x01 ; Skeleton Key index\n.byte 0x04 ; Cellular Shopper index\n.byte 0x05 ; Warp Block index\n\n;===Big Item 1st Chances Table===\n.align 16\nBigItemChancesTables:\n.byte 25 ; Plunder Chest (0-24) 25%\n.byte 85 ; Lucky Lamp (25-59) 60%\n.byte 100 ; Boo Bell (60-99) 15%\n.byte 101 ; Magic Lamp (100) 0%\n\n;===Big Item 2nd Chances Table===\n.align 16\n.byte 40 ; Plunder Chest (0-39) 40%\n.byte 80 ; Lucky Lamp (40-79) 40%\n.byte 100 ; Boo Bell (80-99) 20%\n.byte 101 ; Magic Lamp (100) 0%\n\n;===Big Item 3rd Chances Table===\n.align 16\n.byte 30 ; Plunder Chest (0-29) 30%\n.byte 60 ; Lucky Lamp (30-59) 30%\n.byte 90 ; Boo Bell (60-89) 30%\n.byte 100 ; Magic Lamp (90-99) 10%\n\n;===Big Item 4th Chances Table===\n.align 16\n.byte 30 ; Plunder Chest (0-29) 30%\n.byte 45 ; Lucky Lamp (30-44) 15%\n.byte 85 ; Boo Bell (45-84) 40%\n.byte 100 ; Magic Lamp (85-99) 15%\n\n;===Big Item Table===\n.align 16\nBigItemTable:\n.byte 0x06 ; Plunder Chest index\n.byte 0x09 ; Lucky Lamp index\n.byte 0x0B ; Boo Bell index\n.byte 0x0E ; Magic Lamp index\n\n;===Message Text===\n.align 16\nGreetingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"All aboard the\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Swirling Boo Buddies\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nTeacupPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Which teacup will you ride in\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Left\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Middle\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Right\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nGetItemMessage:\n.ascii \"Someone must\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve left behind their\"\n.byte 0x0A,0x06 ; New line, Blue font\n.ascii \"%s\" ; Item name string\n.byte 0x08,0x85 ; White font, Period (.)\n.ascii \" Lucky\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nEndingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"We hope you had fun on\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"the Swirling Boo Buddies\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n\n;===Item Message Holder===\n.align 16\nItemMessageHolder:\n.fill 0x1024,0\n\n;===Item Strings===\n.align 32\nItemStrings:\n.asciiz \"Mushroom\" ; 0x00\n.align 32\n.asciiz \"Skeleton Key\" ; 0x01\n.align 32\n.asciiz \"Poison Mushroom\" ; 0x02\n.align 32\n.asciiz \"Reverse Mushroom\" ; 0x03\n.align 32\n.asciiz \"Cellular Shopper\" ; 0x04\n.align 32\n.asciiz \"Warp Block\" ; 0x05\n.align 32\n.asciiz \"Plunder Chest\" ; 0x06\n.align 32\n.asciiz \"Bowser Phone\" ; 0x07\n.align 32\n.asciiz \"Dueling Glove\" ; 0x08\n.align 32\n.asciiz \"Lucky Lamp\" ; 0x09\n.align 32\n.asciiz \"Golden Mushroom\" ; 0x0A\n.align 32\n.asciiz \"Boo Bell\" ; 0x0B\n.align 32\n.asciiz \"Boo Repellant\" ; 0x0C\n.align 32\n.asciiz \"Bowser Suit\" ; 0x0D\n.align 32\n.asciiz \"Magic Lamp\" ; 0x0E\n.align 32\n.asciiz \"Koopa Kard\" ; 0x0F\n.align 32\n.asciiz \"Barter Box\" ; 0x10\n.align 32\n.asciiz \"Lucky Charm\" ; 0x11\n.align 32\n.asciiz \"Wacky Watch\" ; 0x12"},"Ticket Booth v3.1":{"language":0,"code":"; NAME: Ticket Booth v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|TicketBooth\n\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; S0 = Current Player Struct\n; S1 = Empty Item Slot Offset of Player Struct / Bad Exit Message\n\n;===Hide Dice Roll===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct\nMOVE S0 V0 ; Copy V0 to S0\nMOVE S1 S0 ; Copy S0 to S1\n\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n;===Set Player Idle Animation===\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Rotate Toward Ticket Booth===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 TicketBooth ; Face TicketBooth\n\n;===Check for Empty Item Slot===\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBLTZ V0 TooManyItems ; If V0 < 0, go to TooManyItems\nNOP\nMOVE S1 V0 ; Copy V0 to S1\n\n;===Check If Player Has Key===\nEmptySlot:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasItem\nLI A1 0x01 ; Check for Skeleton Key\n\nADDIU V0 V0 1 ; Add 1 to correct\nBGTZ V0 HasKey ; If V0 > 0, player already has key\nNOP\n\n; 0x00 = Mushroom\n; 0x01 = Skeleton Key\n; 0x02 = Poison Mushroom\n; 0x03 = Reverse Mushroom\n; 0x04 = Cellular Shopper\n; 0x05 = Warp Block\n; 0x06 = Plunder Chest\n; 0x07 = Bowser Phone\n; 0x08 = Dueling Glove\n; 0x09 = Lucky Lamp\n; 0x0A = Golden Mushroom\n; 0x0B = Boo Bell\n; 0x0C = Boo Repellant\n; 0x0D = Bowser Suit\n; 0x0E = Magic Lamp\n; 0x0F = Koopa Card\n; 0x10 = Barter Box\n; 0x11 = Lucky Coin\n; 0x12 = Wacky Watch\n\n;===Check Player Coins===\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins ; If player has enough coins, V0 = 1\nLI A1 10 ; Check if player has 10 coins\n\nBEQZ V0 NotEnoughCoins ; If V0 = 0, player does not have enough coins\nNOP\n; else, player can pay for key\n\n;===Ticket Booth Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n; Use the Audio Player on PP64 to find other sound indexes to use\n; Then use the following link to know what Sound Index you need\n; https://pastebin.com/H1jxNFqr\n\nLUI A0 hi(TicketBoothMessage)\nJAL CallMessage\nADDIU A0 A0 lo(TicketBoothMessage) ; Display TicketBoothMessage\n\n;===Take Coins===\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL AdjustPlayerCoinsGradual\nLI A1 -10 ; Subtract 10 coins\n\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL ShowPlayerCoinChange\nLI A1 -10 ; Subtract 10 coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Get Key===\nLI T0 0x01 ; T0 has Skeleton Key value\nADDU S1 S0 S1 ; Add empty slot offset to player struct\nSB T0 0x18(S1) ; Store T0 into empty item slot offset from player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for sound\n\nJ exit\nNOP\n\n;===Too Many Items Message===\nTooManyItems:\nLUI S1 hi(TooManyItemsMessage)\nJ BadExit\nADDIU S1 S1 lo(TooManyItemsMessage) ; Display TooManyItemsMessage\n\n;===Player Has Key Message===\nHasKey:\nLUI S1 hi(HasKeyMessage)\nJ BadExit\nADDIU S1 S1 lo(HasKeyMessage) ; Display HasKeyMessage\n\n;===Not Enough Coins Message===\nNotEnoughCoins:\nLUI S1 hi(NoCoinsMessage)\nADDIU S1 S1 lo(NoCoinsMessage) ; Display NoCoinsMessage\n\nBadExit:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nJAL CallMessage\nMOVE A0 S1 ; Pass message address on A0\n\nexit:\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Message Text===\n.align 16\nTicketBoothMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Welcome to King Boo Carnival\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Please take this\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08 ; White font\n.ascii \" as proof of entry\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nTooManyItemsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You have no space for a\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08 ; White font\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Well\"\n.byte 0x82 ; Comma (,)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll let you in anyway\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nHasKeyMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You already have a\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08 ; White font\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t need another one from me\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoCoinsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t have enough\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x07 ; Yellow font\n.ascii \"coins\"\n.byte 0x08 ; White font\n.ascii \" to buy a\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08 ; White font\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Hey\"\n.byte 0x82 ; Comma (,)\n.ascii \" this ain\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t a charity\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Prize Exchange v3.1":{"language":0,"code":"; NAME: Prize Exchange v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|PrizeExchange\n\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\nSW S2 64(SP)\nSW S3 60(SP)\nSW S4 56(SP)\n\n; S0 = Current Player Struct\n; S1 = Prompt Choice\n; S2 = First Key Item Slot\n; S3 = Offset Player Struct for Key Item Slot\n; S4 = Offset Player Struct for 2nd Key Item Slot / Player's Stars\n\n;===Hide Dice Roll===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n;===Set Player Idle Animation===\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Rotate Toward Prize Exchange===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 PrizeExchange ; Face PrizeExchange\n\n;===Welcome Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(WelcomeMessage)\nJAL CallMessage\nADDIU A0 A0 lo(WelcomeMessage) ; Display WelcomeMessage\n\n;===Check for Skeleton Key===\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasItem\nLI A1 0x01 ; Check for Skeleton Key\n\nBLTZ V0 BadExit ; If V0 < 0 (no key), go to BadExit\nNOP\nMOVE S2 V0 ; Copy V0 to S2\n\n;===Main Prompt===\nMainPrompt:\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(Prompt)\nADDIU A1 A1 lo(Prompt) ; Display Prompt\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nJAL AILogic ; Returns AI's choice at V0\nMOVE A0 S0 ; Pass current player struct on A0\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPU's option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nBEQZ S1 GetCoins\nNOP\nLI T0 1\nBEQ S1 T0 GetMushrooms\nNOP\nLI T0 2\nBEQ S1 T0 GetStar\nNOP\nLI T0 3\nBEQ S1 T0 exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ MainPrompt\nNOP\n\n;===Get Coins===\nGetCoins:\nLI T0 0xFF ; No item index\nADDU S3 S0 S2 ; Add key slot offset to player struct\nSB T0 0x18(S3) ; Store no item index into key slot\n\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL RefreshHUD\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL AdjustPlayerCoinsGradual\nLI A1 10 ; Give 10 coins\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL ShowPlayerCoinChange\nLI A1 10 ; Give 10 coins\n\nJ HappyVoice\nNOP\n\n;===Get Mushrooms===\nGetMushrooms:\nMOVE S3 S0 ; Copy S0 to S3\nLI T1 0x01 ; Skeleton Key index\nLBU T0 0x18(S3) ; Load item #1 from offset of player struct\nBEQ T0 T1 GetMushrooms1\nNOP\nADDIU S3 S3 1 ; Add 1 to check next item slot\nLBU T0 0x18(S3) ; Load item #2 from offset of player struct\nBEQ T0 T1 GetMushrooms2\nNOP\n; else, player does not have two keys\nJ FailedCheck\nNOP\n\nGetMushrooms1:\nADDIU S4 S3 1 ; Add 1 to check next item slot (preserve S3)\nLBU T0 0x18(S4) ; Load item #2 from offset of player struct\nBEQ T0 T1 ReceiveMushrooms\nNOP\nADDIU S4 S4 1 ; Add 1 to check next item slot\nLBU T0 0x18(S4) ; Load item #3 from offset of player struct\nBEQ T0 T1 ReceiveMushrooms\nNOP\n; else, player does not have two keys\nJ FailedCheck\nNOP\n\nGetMushrooms2:\nADDIU S4 S3 1 ; Add 1 to check next item slot (preserve S3)\nLBU T0 0x18(S4) ; Load item #3 from offset of player struct\nBEQ T0 T1 ReceiveMushrooms\nNOP\n; else, player does not have two keys\n\n;===Failed Check===\nFailedCheck:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(FailedCheckMessage)\nJAL CallMessage\nADDIU A0 A0 lo(FailedCheckMessage) ; Display FailedCheckMessage\n\nJ MainPrompt\nNOP\n\n;===Receive Mushrooms===\nReceiveMushrooms:\nLI T0 0x0A ; Golden Mushroom index\nSB T0 0x18(S3) ; Store Golden Mushroom into 1st key slot\nSB T0 0x18(S4) ; Store Golden Mushroom into 2nd key slot\n\nJAL PlaySound\nLI A0 0x11 ; Mushroom sound\n\nJAL RefreshHUD\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 20 ; Wait 20 frames for sound\n\n;===Play Happy Voice and Animation===\nHappyVoice:\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nJ GoodExit\nNOP\n\n;===Get Star===\nGetStar:\nLI T1 0x01 ; Skeleton Key index\nLBU T0 0x18(S0) ; Load item #1 from offset of player struct\nBNE T0 T1 FailedCheck\nNOP\nLBU T0 0x19(S0) ; Load item #2 from offset of player struct\nBNE T0 T1 FailedCheck\nNOP\nLBU T0 0x1A(S0) ; Load item #3 from offset of player struct\nBNE T0 T1 FailedCheck\nNOP\n; else, player has three keys\n\n;===Check for Max Stars===\nLI T0 99\nLBU S4 0xE(S0) ; Load player stars into S4\nBEQ S4 T0 MaxStars ; If S4 = T0, go to MaxStars\nNOP\n\n;===Remove Keys and Receive Star===\nLI T0 0xFF ; No item index\nSB T0 0x18(S0) ; Store no item into item slot #1\nSB T0 0x19(S0) ; Store no item into item slot #2\nSB T0 0x1A(S0) ; Store no item into item slot #3\n\nJAL RefreshHUD\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n;===Prepare Star Coords===\nJAL GetSpaceData\nLI A0 PrizeExchange ; Get PrizeExchange data at V0\n\nLUI A0 hi(StarCoords)\nADDIU A0 A0 lo(StarCoords) ; Pass pointer to star coords\nADDIU A0 A0 12 ; Pass pointer to star coords on A0\nJAL 0x80089A20 ; StoreCoords\nADDIU A1 V0 8 ; Pass space coords on A1\n\n;===Get Star===\nLUI A0 hi(StarCoords)\nJAL 0x80106A9C ; GetStar\nADDIU A0 A0 lo(StarCoords) ; Pass star coords on A0\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for fanfare and animation\n\nJAL GetBoardAudioIndex\nNOP\nJAL PlayMusic\nMOVE A0 V0 ; Play board's music\n\n;===Good Exit Message===\nGoodExit:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLUI A0 hi(GoodExitMessage)\nJAL CallMessage\nADDIU A0 A0 lo(GoodExitMessage) ; Display GoodExitMessage\n\nJ exit\nNOP\n\n;===Max Stars Message===\nMaxStars:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(MaxStarsMessage)\nJAL CallMessage\nADDIU A0 A0 lo(MaxStarsMessage) ; Display MaxStarsMessage\n\nJ MainPrompt\nNOP\n\n;===Bad Exit Message===\nBadExit:\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nLUI A0 hi(BadExitMessage)\nJAL CallMessage\nADDIU A0 A0 lo(BadExitMessage) ; Display BadExitMessage\n\nexit:\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nLW S2 64(SP)\nLW S3 60(SP)\nLW S4 56(SP)\nJR RA\nADDIU SP SP 80\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Determine AI Logic===\n.align 4\nAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\n\n; A0 = Current Player Struct\n\nLI T2 0 ; Set tally to 0\nLI T1 0x01 ; Skeleton Key index\n\nLBU T0 0x18(A0) ; Load item #1 from offset of player struct\nBEQL T0 T1 AILogic2 ; If item #1 isn't Skeleton Key, go to AILogic2\nADDIU T2 T2 1 ; If T0 = T1, add 1 to tally (on likely)\n\nAILogic2:\nLBU T0 0x19(A0) ; Load item #2 from offset of player struct\nBEQL T0 T1 AILogic3 ; If item #2 isn't Skeleton Key, go to AILogic3\nADDIU T2 T2 1 ; If T0 = T1, add 1 to tally (on likely)\n\nAILogic3:\nLBU T0 0x1A(A0) ; Load item #3 from offset of player struct\nBEQL T0 T1 CheckTally ; If item #3 isn't Skeleton Key, go to CheckTally\nADDIU T2 T2 1 ; If T0 = T1, add 1 to tally (on likely)\n\nCheckTally:\nBEQL T2 R0 AILogicExit ; If T2 = 0, select exit\nLI V0 3 ; AI will select 3rd option (exit)\nLI T0 3\nBEQ T0 T2 SelectStar ; If T2 = 3, select star\nNOP\nLI T0 2\nBEQ T0 T2 ThreeWays ; If T2 = 2, go to ThreeWays\nNOP\n; else T2 = 1, CPU has 1 Key\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\nBNEZ V0 AILogicExit ; If V0 = 1, select exit\nLI V0 3 ; AI will select 3rd option (exit)\n; else, V0 = 0, AI will select 0th option (coins)\nJ AILogicExit\nLI V0 0 ; AI will select 0th option (coins)\n\nThreeWays:\nJAL RNGPercentChance\nLI A0 33 ; 33% chance of V0 = 1\nBNEZ V0 AILogicExit ; If V0 = 1, select exit\nLI V0 3 ; AI will select 3rd option (exit)\n\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\nJ AILogicExit ; AI will select 0th or 1st option (coins or mushrooms)\nNOP\n\nSelectStar:\nLI T1 99\nLBU T0 0xE(A0) ; Load player stars into T0\nBEQ T0 T1 ThreeWays ; If CPU has max stars, pick another option\nNOP\nLI V0 2 ; AI will select 2nd option (star)\n\nAILogicExit:\nLW RA 36(SP)\nJR RA\nADDIU SP SP 40\n\n;===Star Coords===\n.align 32\nStarCoords:\n.word 0x8012EA10 ; Star model\n.word 0x80134E20 ; Star model\n.word 0x0A020008 ; Star model\n.word 0x00000000 ; X coords\n.word 0x00000000 ; Y coords\n.word 0x00000000 ; Z coords\n\n;===Message Text===\n.align 16\nWelcomeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Welcome to the prize exchange\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"What will you do\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Trade in for\"\n.byte 0x07 ; Yellow font\n.ascii \" 10 coins\"\n.byte 0x08,0x0D ; White font, End option\n.byte 0x0A ; New line\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Trade in for\"\n.byte 0x06 ; Blue font\n.ascii \" Golden Mushrooms\"\n.byte 0x08,0x0D ; White font, End option\n.byte 0x0A ; New line\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Trade in for a\"\n.byte 0x07 ; Yellow font\n.ascii \" Star\"\n.byte 0x08,0x0D ; White font, End option\n.byte 0x0A ; New line\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Nothing for now\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nFailedCheckMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t have enough\"\n.byte 0x06 ; Blue font\n.ascii \" tickets\"\n.byte 0x08 ; White font\n.ascii \" for that option\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Collect more\"\n.byte 0x06 ; Blue font\n.ascii \" Skeleton Keys\"\n.byte 0x08 ; White font\n.ascii \" first\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nGoodExitMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Thank you for your patronage\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Hope you have fun at\"\n.byte 0x04 ; Purple font\n.ascii \" King Boo Carnival\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nMaxStarsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You can\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t carry any more\"\n.byte 0x07 ; Yellow font\n.ascii \" Stars\"\n.byte 0x08,0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Please choose another option\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBadExitMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t have any\"\n.byte 0x06 ; Blue font\n.ascii \" tickets\"\n.byte 0x08,0xC3 ; White font, Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Come back when you\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ve collected\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"a\"\n.byte 0x06 ; Blue font\n.ascii \" Skeleton Key\"\n.byte 0x08,0x85 ; White font, Period (.)\n.ascii \"You can\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"trade them here for\"\n.byte 0x07 ; Yellow font\n.ascii \" prizes\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Load Boo Models (KBC)":{"language":0,"code":"; NAME: Load Boo Models (KBC)\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Boolean|LoadPerFrame\n; PARAM: +Number|ModelID\n; PARAM: Space[]|ModelSpace\n; PARAM: Space[]|FacingSpace\n\n; This event supports loading models before a player's turn or at\n; every frame possible using a Rainhook. Set this event as \"Before\n; player turn\" regardless of which format you want.\n\n; If the parameter LoadPerFrame is set to \"true\", this event will\n; insert a detour into the main game loop that will run code to load\n; models at every frame. This way, models will be loaded whenever the\n; board is reloaded after minigames, item use, etc. Setting this\n; parameter ON will require the additional event \"Revert Rainhook\" and\n; a game on this board must be finished before playing another board\n; on the same ROM to avoid issues.\n\n; If any performance issues are experienced, one can set the parameter\n; LoadPerFrame to \"false\" so that models will only be loaded at the\n; start of each player's turn. Setting this parameter OFF does not\n; require any additional events or criteria, but models may disappear\n; from the board due to minigames, item use, etc.\n\n;===Check Loading Frequency===\nLI T0 LoadPerFrame\nBEQZ T0 LoadModel ; If LoadPerFrame is OFF, just load model\nNOP\n; else, insert rainhook\n\n;===Insert Rainhook===\n.align 16\nADDIU SP SP -32\nSW RA 28(SP)\n\nLUI T0 hi(HookData)\nADDIU T0 T0 lo(HookData)\nLW V0 0(T0) ; Load HookData operation\nLUI V1 0x8000 ; 0x8000000\nORI V1 V1 0xE7F0 ; 0x8000E7F0, address in main game loop\nSW V0 0(V1) ; Insert rainhook to CustomCode in main game loop\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Hook Data===\n.align 16\nHookData: ; Rainhook to jump to CustomCode in main game loop\nJ CustomCode\n\n;===Custom Code===\n.align 16\nCustomCode:\nADDIU SP SP -40\nSW RA 36(SP)\nSW T0 32(SP)\nSW T1 28(SP)\n\nLUI T0 0x800D ; 0x800D0000\nLW T0 0xC3DC(T0) ; Load value from 0x800CC3DC\nBEQZ T0 Skip ; If 0x800CC3DC == NULL (not in board play), skip\nNOP\n; else, run custom code here\n\nJAL LoadModel\nNOP\n\nSkip:\nLW RA 36(SP)\nLW T0 32(SP)\nLW T1 28(SP)\nJ 0x8000E7C0 ; Resume main game loop\nADDIU SP SP 40\n\n; This code loads a board model onto a blank space on the board\n; decided by the parameter \"ModelSpace\". The parameter \"ModelID\" sets\n; which model will be loaded, and takes a value from 0-78 - see the\n; bottom of the event for the entire list. The model can face forward\n; (south) by setting the parameter \"FaceForward\" to \"true\" or\n; towards another space decided by the parameter \"FacingSpace\".\n; Additionally, the model can face the screen by setting the\n; parameter \"FaceScreen\" to \"true\" (and can be set in conjunction with\n; the above parameters).\n\n; Notably, this event loads any models that are present on the other\n; MP3 boards, such as Millennium Star, Tumble, or the cacti from\n; Spiny Desert. To load any model from the game, refer to the \"Load\n; Global Model\" event instead.\n\n; CAUTION: Do not place the model on a space that players can walk on,\n; as this may cause problems.\n\n;===Function to Load Board Model===\n.align 16\nLoadModel:\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\nSW S2 64(SP)\nSW S3 60(SP)\nSW A0 56(SP)\nSW A1 52(SP)\nSW V0 48(SP)\nSW T0 44(SP)\nSW T1 40(SP)\n\n; S0 = Space Array, the pointer to the space arrays\n; S1 = Model Data Pointer, the pointer to the model data\n; S2 = Model Space Data, the pointer to the space data\n; S3 = Null Pointer, tells if the models are already loaded or not\n\n;===Check Koopa Model Null Pointer===\nLUI S3 hi(NullPointer)\nADDIU S3 S3 lo(NullPointer) ; Load the null pointer\nLW T0 0(S3) ; Load value of the null pointer into T0\nBNEZ T0 exit ; If T0 is not equal to 0, the model is already loaded,\n; exit and do not load another model.\nNOP\nLUI S0 hi(SpaceArray)\nADDIU S0 S0 lo(SpaceArray)\n\n;===Get Model Pointer===\nModelLoop:\nLI A0 ModelID ; Model ID value from 0-78\nJAL 0x800D90C8 ; Get model pointer at V0\nLI A1 0\n\nMOVE S1 V0 ; Copy V0 to S1\n\n;===Get Model Space Data===\nJAL GetSpaceData\nLBU A0 0(S0) ; Get ModelSpace data at V0\nMOVE S2 V0 ; Copy V0 to S2\n\n;===Get Facing Space Data===\nJAL GetSpaceData\nLBU A0 2(S0) ; Get FacingSpace data at V0\n\n;===Get Midpoint===\nADDIU A0 SP 32 ; Store midpoint xyz coords in 32(SP)\nADDIU A1 V0 8 ; FacingSpace coords\nJAL midpoint\nADDIU A2 S2 8 ; ModelSpace coords\n\nJAL 0x800D88E8 ; SpaceAngleHelper\nADDIU A0 SP 32 ; Fix-up midpoint coords\n\n;===Rotate Model===\nADDIU A0 S1 0x18 ; Pass model x2 coord on A0\nJAL 0x80089A20 ; StoreCoords (to face)\nADDIU A1 SP 32 ; Pass midpoint coords on A1\n\n;===Put Model onto Space===\nPutModel:\nADDIU A0 S1 12 ; Pass model x coord on A0\nJAL 0x80089A20 ; StoreCoords (to stand)\nADDIU A1 S2 8 ; Pass ModelSpace coords on A1\n\nLW T0 0(S3) ; Load null pointer into T0\nADDIU S0 S0 1 ; Add 1 to space array\nBEQL T0 R0 ModelLoop ; If null pointer is empty, go to ModelLoop\nSW S1 0(S3) ; Store model pointer to null pointer (on likely)\n\nexit:\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nLW S2 64(SP)\nLW S3 60(SP)\nLW A0 56(SP)\nLW A1 52(SP)\nLW V0 48(SP)\nLW T0 44(SP)\nLW T1 40(SP)\nJR RA\nADDIU SP SP 80\n\n.align 4\nNullPointer:\n.fill 4\n\n.align 8\nSpaceArray:\n.byte ModelSpace\n.byte FacingSpace\n\n; Indexes for model ID value\n; 0: Mario (low-res)\n; 1: Luigi (low-res)\n; 2: Peach (low-res)\n; 3: Yoshi (low-res)\n; 4: Wario (low-res)\n; 5: DK (low-res)\n; 6: Waluigi (low-res)\n; 7: Daisy (low-res)\n; 8: Bowser\n; 9: Toad\n; 10: Boo\n; 11: Whomp\n; 12: Goomba\n; 13: Thwomp\n; 14: Mario (high-res)\n; 15: Luigi (high-res)\n; 16: Peach (high-res)\n; 17: Yoshi (high-res)\n; 18: Wario (high-res)\n; 19: DK (high-res)\n; 20: Waluigi (high-res)\n; 21: Daisy (high-res)\n; 22: Red junction arrow\n; 23: Star (lays flat)\n; 24: Toad (2D on board)\n; 25: Coin (upright)\n; 26: Star\n; 27: Toad\n; 28: Warp Block effect (Rainbow effect around player)\n; 29: Baby Bowser (2D on board)\n; 30: Koopa bank coin\n; 31: Parachute (for goomba?)\n; 32: Barter Box opening\n; 33: Plunder Chest opening\n; 34: White shining effect\n; 35: Mario in Bowser Suit\n; 36: Magic Lamp\n; 37: Genie of the lamp\n; 38: Gate (Chilly Waters) opening (overwritten with PP64 gate)\n; 39: Gate (Deep Bloober Sea) opening\n; 40: Gate (Spiny Desert) opening (overwritten with PP64 gate)\n; 41: Gate (Woody Woods?) opening\n; 42: Gate (Creepy Cavern?) opening\n; 43: Gate (Waluigi's Island?) opening\n; 44: Mecha Fly Guy\n; 45: Snowman head sleeping\n; 46: Snowman head awake\n; 47: Snowball rolling\n; 48: Toad's item shop opening\n; 49: Baby Bowser's item shop opening\n; 50: Bank opening\n; 51: Boo coffin opening\n; 52: Koopa Bank coin tray?\n; 53: Koopa Troopa\n; 54: Ripple effect\n; 55: Stars bursting away effect\n; 56: Two white stars pulsing effect\n; 57: Baby Bowser\n; 58: Millenium Star\n; 59: Tumble\n; 60: Jeanie waving her wand\n; 61: Lucky Lamp\n; 62: Game Guy\n; 63: Poison Mushroom\n; 64: Reverse Mushroom\n; 65: Bowser poison curse\n; 66: Bowser reverse curse\n; 67: Lucky Charm\n; 68: Koopa Kard\n; 69: Stars and cloud expanding effect\n; 70: Blue shining effect\n; 71: Quicksand pit\n; 72: Purple pit\n; 73: Red eyeballs from purple pit\n; 74: Green cactus\n; 75: Green cactus (female)\n; 76: Cart to ride on\n; 77: Rock spike\n; 78: Pink Koopa Kid ball\n; 79: (crash)\n; 80+: no model is loaded, at about 85 it crashes"},"Revert Rainhook":{"language":0,"code":"; NAME: Revert Rainhook\n; GAMES: MP3_USA\n; EXECUTION: Direct\n\n; Set this event as \"After turn\".\n\nADDIU SP SP -32\nSW RA 28(SP)\n\n;===Check Turn Count===\nLUI T0 hi(current_turn)\nADDIU T0 T0 lo(current_turn)\nLBU T0 0(T0) ; Load current turn\n\nLUI T1 hi(total_turns)\nADDIU T1 T1 lo(total_turns)\nLBU T1 0(T1) ; Load total turns\n\nBNE T0 T1 exit ; If it's not the last turn, exit\nNOP\n; else, revert Rainhook\n\n;===Revert Rainhook===\n.align 16\nMain:\nLUI T0 hi(OriginalData)\nADDIU T0 T0 lo(OriginalData)\nLW V0 0(T0) ; Load OriginalData operation\nLUI V1 0x8000 ; 0x8000000\nORI V1 V1 0xE7F0 ; 0x8000E7F0, address in main game loop\nSW V0 0(V1) ; Insert original code in main game loop\n\nexit:\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Original Data===\n.align 16\nOriginalData:\nJ 0x8000E7C0 ; Original code"},"Lady Bow v2":{"language":0,"code":"; NAME: Lady Bow v2\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|LadyBowSpace\n\n;===Main Function===\n.align 4\nMain:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; S0 = Current Player Struct\n\n; Get current player struct\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\n; Setup passing prereqs (hide dice roll, idle animation, rotation)\nJAL PassingPrereqs\nMOVE A0 S0 ; Pass current player struct on A0\n\n; Display greeting message\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; Display message\nLUI A1 hi(GreetingMessage)\nADDIU A1 A1 lo(GreetingMessage) ; Display GreetingMessage\nLBU A2 3(S0) ; Load character value into A2\nJAL CallMessage\nADDIU A2 A2 0x1C00 ; Add character value to MARIO string\n\n; Get total logic\nJAL GetTotalLogic\nMOVE A0 S0 ; Pass current player struct on A0\nLW T0 0(V0) ; Load total logic into T0\nBEQZ T0 ExitMessage ; If all skills are disabled, exit\nNOP\n; else, prepare to display main prompt\n\n; Prepare and display main prompt\nStartMainPrompt:\nLUI A0 hi(LogicArray)\nJAL PrepareMainPrompt\nADDIU A0 A0 lo(LogicArray) ; Pass logic array on A0\n\nJAL DisplayMainPrompt\nMOVE A0 S0 ; Pass current player struct on A0\n\n; Change the player's destination based on the choice.\nBEQZ V0 StartSmack ; If V0 = 0, start Smack\nNOP\nLI T0 1\nBEQ V0 T0 StartOuttaSight ; If V0 = 1, start Outta Sight\nNOP\nLI T0 2\nBEQ V0 T0 StartSpook ; If V0 = 2, start Spook\nNOP\nLI T0 3\nBEQ V0 T0 StartFanSmack ; If V0 = 3, start Fan Smack\nNOP\nLI T0 4\nBEQ V0 T0 ExitMessage ; If V0 = 4, exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartMainPrompt\nNOP\n\n; Start Smack\nStartSmack:\nLUI A0 hi(SmackLogic)\nJAL StartTargetPrompt\nADDIU A0 A0 lo(SmackLogic) ; Pass Smack logic on A0\n\n; Change the player's destination based on the choice.\nLI T0 5\nBEQ V0 T0 StartMainPrompt\nNOP\nLI T0 6\nBNE V0 T0 ContinueSmack\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartSmack\nNOP\n\n; Continue Smack\nContinueSmack:\nMOVE A0 S0 ; Pass current player struct on A0\nJAL Smack\nMOVE A1 V0 ; Pass target player index on A1\n\nJ ExitMessage\nNOP\n\n; Start Outta Sight\nStartOuttaSight:\nLUI A0 hi(OuttaSightLogic)\nJAL StartTargetPrompt\nADDIU A0 A0 lo(OuttaSightLogic) ; Pass Outta Sight logic on A0\n\n; Change the player's destination based on the choice.\nLI T0 5\nBEQ V0 T0 StartMainPrompt\nNOP\nLI T0 6\nBNE V0 T0 ContinueOuttaSight\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartOuttaSight\nNOP\n\n; Continue Outta Sight\nContinueOuttaSight:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL OuttaSight\nMOVE A1 V0 ; Pass target player index on A1\n\nJAL HappyVoice\nLBU A0 3(S0) ; Pass current player character value on A0\n\nJ ExitMessage\nNOP\n\n; Start Spook\nStartSpook:\nLUI A0 hi(SpookLogic)\nJAL StartTargetPrompt\nADDIU A0 A0 lo(SpookLogic) ; Pass Spook logic on A0\n\n; Change the player's destination based on the choice.\nLI T0 5\nBEQ V0 T0 StartMainPrompt\nNOP\nLI T0 6\nBNE V0 T0 ContinueSpook\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartSpook\nNOP\n\n; Continue Spook\nContinueSpook:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL Spook\nMOVE A1 V0 ; Pass target player index on A1\n\nJAL HappyVoice\nLBU A0 3(S0) ; Pass current player character value on A0\n\nJ ExitMessage\nNOP\n\n; Start Fan Smack\nStartFanSmack:\nLUI A0 hi(FanSmackLogic)\nJAL StartTargetPrompt\nADDIU A0 A0 lo(FanSmackLogic) ; Pass Fan Smack logic on A0\n\n; Change the player's destination based on the choice.\nLI T0 5\nBEQ V0 T0 StartMainPrompt\nNOP\nLI T0 6\nBNE V0 T0 ContinueFanSmack\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ StartFanSmack\nNOP\n\n;Continue Fan Smack\nContinueFanSmack:\nMOVE A0 S0 ; Pass current player struct on A0\nJAL FanSmack\nMOVE A1 V0 ; Pass target player index on A1\n\nJ ExitMessage\nNOP\n\n; Exit message\nExitMessage:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; Display message\nLUI A1 hi(GoodbyeMessage)\nADDIU A1 A1 lo(GoodbyeMessage) ; Display GoodbyeMessage\nJAL CallMessage\nLI A2 0 ; No string\n\n; Show dice roll\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Passing Event Prereqs===\n.align 4\nPassingPrereqs:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Current Player Struct\n\n; Hide dice roll\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(A0) ; Pass current player index on A0\n\n; Set player idle animation\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n; Rotate toward Lady Bow Space\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 LadyBowSpace ; Face LadyBowSpace\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Message or Prompt (0 or 1)\n; A1 = Message Address\n; A2 = String #1\n\nMOVE S0 A0 ; Copy A0 to S0\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\n; Pass message address on A1\n; Pass string #1 on A2\nJAL ShowMessage\nLI A3 0\n\nBNEZ S0 CallMessageExit ; If displaying prompt, don't close message\nNOP\n\nJAL 0x800EC9DC\nNOP\nJAL MessageCleanup\nNOP\n\nCallMessageExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Message Cleanup===\n.align 4\nMessageCleanup:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Get Total Logic===\n.align 4\nGetTotalLogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Current Player Struct\n; S1 / V0 = Logic Array\n\nLUI S1 hi(LogicArray)\nADDIU S1 S1 lo(LogicArray)\n\n; Pass current player struct on A0\nJAL GetSmackLogic\nMOVE S0 A0 ; Copy A0 to S0\nSB V0 0(S1) ; Store Smack logic into logic array\n\nJAL GetOuttaSightLogic\nLBU A0 0x1D(S0) ; Pass current player index on A0\nSB V0 1(S1) ; Store Outta Sight logic into logic array\n\nJAL GetSpookLogic\nLBU A0 0x1D(S0) ; Pass current player index on A0\nSB V0 2(S1) ; Store Outta Sight logic into logic array\n\nJAL GetFanSmackLogic\nMOVE A0 S0 ; Pass current player struct on A0\nSB V0 3(S1) ; Store Fan Smack logic into logic array\n\nMOVE V0 S1 ; Copy S1 to V0\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n.align 4\nLogicArray:\n.fill 4\n\n;===Get Smack Logic===\n.align 4\nGetSmackLogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Current Player Struct\n; V0 = Disable Flag (0 = Disabled, 1 = Enabled)\n\nMOVE S0 A0 ; Copy A0 to S0\n\n; Check if player can afford Smack\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 4 ; Check for 4 coins\n\nBEQZ V0 GetSmackLogicExit ; If V0 = 0, player doesn't have coins, exit\nNOP\n\n; Check if opponents have coins\nMOVE A0 S0 ; Pass current player struct on A0\nLUI A1 hi(SmackLogic)\nJAL TallyAllCoins\nADDIU A1 A1 lo(SmackLogic) ; Write coins to SmackLogic\n\nBNEZL V0 GetSmackLogicExit ; If opponents have coins, enable Smack\nLI V0 1 ; Enable Smack (on likely)\n\nGetSmackLogicExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n.align 4\nSmackLogic:\n.fill 4\n\n;===Tally All Coins===\n.align 4\nTallyAllCoins:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 = Current Player Struct\n; A1 = Logic Array\n; S0 = Loop Counter\n; V0 = Total Opponents' Coins\n\nLBU T2 0x1D(A0) ; Load current player index from offset of player struct\nLI S0 0 ; Start counter at 0\nLI V0 0 ; Start with 0 total coins\nLUI T0 hi(p1_coins)\nADDIU T0 T0 lo(p1_coins) ; Start with P1\n\nTallyAllCoinsLoop:\nBEQL T2 S0 TallyAllCoinsNext ; If checking current player, skip them\nSB R0 0(A1) ; Store 0 coins into logic array (on likely)\nLBU T1 1(T0) ; Load coins into T1\nSB T1 0(A1) ; Store coins into logic array\nADDU V0 V0 T1 ; Add coins to total\n\nTallyAllCoinsNext:\nLI T3 3\nBEQ S0 T3 TallyAllCoinsExit ; If all players checked, exit\nADDIU T0 T0 0x38 ; Add 0x38 to get next player's coins\nADDIU A1 A1 1 ; Add 1 to logic array\nJ TallyAllCoinsLoop\nADDIU S0 S0 1 ; Add 1 to loop counter\n\nTallyAllCoinsExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Get Outta Sight Logic===\n.align 4\nGetOuttaSightLogic:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\n\n; A0 / S0 = Current Player Index\n; S1 = Outta Sight Logic\n; S2 = Target Index\n; V0 = Disable Flag (0 = Disabled, 1 = Enabled)\n\n; Check if player can afford Outta Sight\nMOVE S0 A0 ; Passing current player index on A0\nJAL PlayerHasCoins\nLI A1 8 ; Check for 8 coins\n\nBEQZ V0 GetOuttaSightLogicExit ; If V0 = 0, player doesn't have coins, exit\nNOP\n\n; Check if opponents have Skeleton Key\nLUI S1 hi(OuttaSightLogic)\nADDIU S1 S1 lo(OuttaSightLogic)\nLI S2 0 ; Start with P1\n\nGetOuttaSightLogicLoop:\nBEQL S0 S2 GetOuttaSightLogicNext ; If current player, skip them\nSB R0 0(S1) ; Store no key into Outta Sight logic (on likely)\nJAL CheckKey\nMOVE A0 S2 ; Pass target index on A0\nSB V0 0(S1) ; Store Outta Sight logic\nGetOuttaSightLogicNext:\nLI T0 3\nBEQ S2 T0 GetOuttaSightLogicFinish ; If all players checked, finish\nNOP\nADDIU S1 S1 1 ; Add 1 to logic array\nJ GetOuttaSightLogicLoop\nADDIU S2 S2 1 ; Add 1 to loop counter\n\nGetOuttaSightLogicFinish:\nLUI S1 hi(OuttaSightLogic)\nADDIU S1 S1 lo(OuttaSightLogic)\nLW V0 0(S1) ; Load Outta Sight logic into V0\nBNEZL V0 GetOuttaSightLogicExit ; If opponents have keys, enable Outta Sight\nLI V0 1 ; Enable Outta Sight (on likely)\n\nGetOuttaSightLogicExit:\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nJR RA\nADDIU SP SP 48\n\n.align 4\nOuttaSightLogic:\n.fill 4\n\n;===Check Key===\n.align 4\nCheckKey:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Player Index\n; V0 = Key Flag (0 = No Keys, 1 = Has Key)\n\n; Pass player index on A0\nJAL PlayerHasItem\nLI A1 0x01 ; Skeleton Key index\n\nADDIU V0 V0 1 ; Add 1 to result (-1,0-2 -> 0,1-3)\nBNEZL V0 CheckKeyExit ; If player has key, enable Outta Sight logic\nLI V0 1 ; Enable Outta Sight logic (on likely)\n\nCheckKeyExit:\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Get Spook Logic===\n.align 4\nGetSpookLogic:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Current Player Index\n; V0 = Disable Flag (0 = Disabled, 1 = Enabled)\n\nLUI T0 hi(SpookLogic)\nADDIU T0 T0 lo(SpookLogic)\nLUI T1 0x0101 ; 0x01010000\nORI T1 T1 0x0101 ; 0x01010101\nSW T1 0(T0) ; Reset SpookLogic\n\nADDU T0 T0 A0 ; Add current player offset to Spook logic\nSB R0 0(T0) ; Disable current player from Spook logic\n\n; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 12 ; Check for 12 coins\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n.align 4\nSpookLogic:\n.fill 4,1\n\n;===Get Fan Smack Logic===\n.align 4\nGetFanSmackLogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Current Player Struct\n; V0 = Disable Flag (0 = Disabled, 1 = Enabled)\n\nMOVE S0 A0 ; Copy A0 to S0\n\n; Check if player can afford Fan Smack\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 12 ; Check for 12 coins\n\nBEQZ V0 GetFanSmackLogicExit ; If V0 = 0, player doesn't have coins, exit\nNOP\n\n; Check if opponents have coins\nMOVE A0 S0 ; Pass current player struct on A0\nLUI A1 hi(FanSmackLogic)\nJAL TallyAllCoins\nADDIU A1 A1 lo(FanSmackLogic) ; Write coins to FanSmackLogic\n\nBNEZL V0 GetFanSmackLogicExit ; If opponents have coins, enable Fan Smack\nLI V0 1 ; Enable Fan Smack (on likely)\n\nGetFanSmackLogicExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n.align 4\nFanSmackLogic:\n.fill 4\n\n;===Prepare Main Prompt===\n.align 4\nPrepareMainPrompt:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Logic Array\n\n; Pass logic array on A0\nJAL GetPromptColours\nNOP\n\n; Print colours to prompt\nLUI A0 hi(MainPromptPlaceholder)\nADDIU A0 A0 lo(MainPromptPlaceholder) ; Parse destination\nLUI A1 hi(MainPrompt)\nADDIU A1 A1 lo(MainPrompt) ; String formatter (%s)\nMOVE A2 V0 ; Pass Smack colour pointer on A2\nMOVE A3 V1 ; Pass Outta Sight colour pointer on A3\nSW T2 16(SP) ; Pass Spook colour pointer on A4\nSW T3 20(SP) ; Pass Fan Smack colour pointer on A5\nJAL sprintf\nSW R0 24(SP) ; Terminator byte\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Get Prompt Colours===\n.align 4\nGetPromptColours:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Logic Array\n\nLUI V0 hi(BlackColour)\nADDIU V0 V0 lo(BlackColour) ; Default to black font\nMOVE V1 V0 ; Copy V0 to V1\nMOVE T2 V0 ; Copy V0 to T2\nMOVE T3 V0 ; Copy V0 to T3\n\nLBU T0 0(A0) ; Load 0th logic into T0\nBEQZ T0 GetPromptColours2 ; If T0 = 0, keep black font\nNOP\n; else get white font\nLUI V0 hi(WhiteColour)\nADDIU V0 V0 lo(WhiteColour)\n\nGetPromptColours2:\nLBU T0 1(A0) ; Load 1st logic into T0\nBEQZ T0 GetPromptColours3 ; If T0 = 0, keep black font\nNOP\n; else get white font\nLUI V1 hi(WhiteColour)\nADDIU V1 V1 lo(WhiteColour)\n\nGetPromptColours3:\nLBU T0 2(A0) ; Load 2nd logic into T0\nBEQZ T0 GetPromptColours4 ; If T0 = 0, keep black font\nNOP\n; else get white font\nLUI T2 hi(WhiteColour)\nADDIU T2 T2 lo(WhiteColour)\n\nGetPromptColours4:\nLBU T0 3(A0) ; Load 3rd logic into T0\nBEQZ T0 GetPromptColoursExit ; If T0 = 0, keep black font\nNOP\n; else get white font\nLUI T3 hi(WhiteColour)\nADDIU T3 T3 lo(WhiteColour)\n\nGetPromptColoursExit:\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n.align 4\nBlackColour:\n.byte 0x01,0\n\n.align 4\nWhiteColour:\n.byte 0x08,0\n\n;===Display Main Prompt===\n.align 4\nDisplayMainPrompt:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Current Player Struct\n; S0 / V0 = Prompt Choice\n\nMOVE S0 A0 ; Copy A0 to S0\nLI A0 1 ; Display prompt\nLUI A1 hi(MainPromptPlaceholder)\nADDIU A1 A1 lo(MainPromptPlaceholder) ; Display Mainprompt with strings\nJAL CallMessage\nLI A2 0 ; No string\n\nLUI A0 hi(LogicArray)\nJAL DisablePromptOptions\nADDIU A0 A0 lo(LogicArray) ; Pass Logic Array on A0\n\nJAL MainAILogic\nNOP\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S0 V0 ; S0 now has the chosen option index\n\nJAL MessageCleanup\nNOP\nMOVE V0 S0 ; Copy S0 to V0\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Disable Prompt Options===\n.align 4\nDisablePromptOptions:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Logic Array\n; S1 = Prompt Option\n\nMOVE S0 A0 ; Copy A0 to S0\nLI S1 0 ; Start with 0th option\nDisablePromptOptionsLoop:\nLBU T0 0(S0) ; Load logic value into T0\nBNEZ T0 DisablePromptOptionsCheck ; If not disabled, check\nLI A0 2 ; Window ID\nJAL DisablePromptOption\nMOVE A1 S1 ; Disable nth option\nDisablePromptOptionsCheck:\nLI T1 3\nBEQ S1 T1 DisablePromptOptionsExit ; If all options checked, exit\nADDIU S0 S0 1 ; Add 1 to get next logic\nJ DisablePromptOptionsLoop\nADDIU S1 S1 1 ; Add 1 to get next prompt option\n\nDisablePromptOptionsExit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Main Prompt AI Logic===\n.align 4\nMainAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; V0 = Prompt Choice\n\n; Get random byte\nJAL GetRand\nLI A0 8 ; Get random byte (0-8) at V0\nSRL V0 V0 1 ; Shift right by 1 (divide by 2, round down)\n\n; Check logic array\nLUI T0 hi(LogicArray)\nADDIU T0 T0 lo(LogicArray)\nADDU T0 T0 V0 ; Add option byte to array (0-3)\n\nMainAILogicLoop:\nLI T2 4\nBEQ V0 T2 MainAILogicExit ; If V0 = 4, select exit\nNOP\nLBU T1 0(T0) ; Load matching logic value into T1\nBNEZ T1 MainAILogicExit ; If matching logic enabled, exit\nNOP\nADDIU T0 T0 1 ; Add 1 to get next logic\nJ MainAILogicLoop\nADDIU V0 V0 1 ; Add 1 to select next option\n\nMainAILogicExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Rain's Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Start Target Prompt===\n.align 4\nStartTargetPrompt:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Logic Array\n; S1 / V0 = Prompt Choice\n\n; Pass current player index on A0\nJAL PrepareTargetPrompt\nMOVE S0 A0 ; Passing logic array on A0\n\nJAL GetPlayerNames ; Get player names at V0, V1, T2, T3\nNOP\n\n; Display target prompt\nSW T2 16(SP) ; A4, P3 name\nSW T3 20(SP) ; A5, P4 name\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(TargetPromptPlaceholder)\nADDIU A1 A1 lo(TargetPromptPlaceholder) ; Display TargetPrompt with strings\nMOVE A2 V0 ; String #1 (P1 name)\nJAL ShowMessage\nMOVE A3 V1 ; String #2 (P2 name)\n\nJAL DisablePromptOptions\nMOVE A0 S0 ; Pass logic array on A0\n\nJAL TargetPromptLogic\nMOVE A0 S0 ; Pass logic array on A0\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2 ; Pick whatever is in A1 as AI's Choice\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\nJAL MessageCleanup\nNOP\n\nLI T0 4 ; Your choice\nBNEL S1 T0 StartTargetPromptExit ; If not selecting \"Your choice\", exit\nMOVE V0 S1 ; Copy S1 to V0\n; else, decide the target\n\nJAL TargetPromptLogic\nMOVE A0 S0 ; Pass logic array on A0\n\nStartTargetPromptExit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Prepare Target Prompt===\n.align 4\nPrepareTargetPrompt:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Logic Array\n\n; Pass logic array on A0\nJAL GetPromptColours\nNOP\n\n; Print colours to prompt\nLUI A0 hi(TargetPromptPlaceholder)\nADDIU A0 A0 lo(TargetPromptPlaceholder) ; Parse destination\nLUI A1 hi(TargetPrompt)\nADDIU A1 A1 lo(TargetPrompt) ; String formatter (%s)\nMOVE A2 V0 ; Pass P1 colour pointer on A2\nMOVE A3 V1 ; Pass P2 colour pointer on A3\nSW T2 16(SP) ; Pass P3 colour pointer on T4\nSW T3 20(SP) ; Pass P4 colour pointer on T5\nJAL sprintf\nSW R0 24(SP) ; Terminator byte\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Get Player Names===\n.align 4\nGetPlayerNames:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; V0 = P1 Name\n; V1 = P2 Name\n; T2 = P3 Name\n; T3 = P4 Name\n\nLUI V0 hi(p1_char)\nADDIU V0 V0 lo(p1_char)\nLBU V0 0(V0) ; Load P1 character value into V0\nADDIU V0 V0 0x1C00 ; Add P1 character value to MARIO string\n\nLUI V1 hi(p2_char)\nADDIU V1 V1 lo(p2_char)\nLBU V1 0(V1) ; Load P2 character value into V1\nADDIU V1 V1 0x1C00 ; Add P2 character value to MARIO string\n\nLUI T2 hi(p3_char)\nADDIU T2 T2 lo(p3_char)\nLBU T2 0(T2) ; Load P3 character value into T2\nADDIU T2 T2 0x1C00 ; Add P3 character value to MARIO string\n\nLUI T3 hi(p4_char)\nADDIU T3 T3 lo(p4_char)\nLBU T3 0(T3) ; Load P4 character value into T3\nADDIU T3 T3 0x1C00 ; Add P4 character value to MARIO string\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Target Prompt Logic===\n.align 4\nTargetPromptLogic:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\n\n; A0 / S0 = Logic Array / Target Index Counter\n; S1 = Target Logic\n; S2 = Loop Counter (Placement Check)\n; V0 = Prompt Choice\n\n; Store player placements\nMOVE S0 A0 ; Copy A0 to S0\nLUI S1 hi(TargetLogic)\nADDIU S1 S1 lo(TargetLogic)\nLI S2 0 ; Start with P1\nTargetPromptLogicLoop:\nLBU T0 0(S0) ; Load player logic into T0\nLI T4 4\nBEQL T0 R0 TargetPromptLogicNext ; If player is disabled, check next\nSB T4 0(S1) ; Store null placement into TargetLogic (on likely)\nJAL GetPlayerPlacement \nMOVE A0 S2 ; Get player placement at V0\nSB V0 0(S1) ; Store placement into TargetLogic\nTargetPromptLogicNext:\nLI T0 3\nBEQL S2 T0 TargetPromptLogicCheck ; If all players placed, check\nLI S2 0 ; Reset loop counter (on likely)\nADDIU S0 S0 1 ; Add 1 to get next logic\nADDIU S1 S1 1 ; Add 1 to store next logic\nJ TargetPromptLogicLoop\nADDIU S2 S2 1 ; Add 1 to check next player\n\n; Select a target\nTargetPromptLogicCheck:\nLI S0 0 ; Start with P1\nADDIU S1 S1 -3 ; Reset TargetLogic\nTargetPromptLogicCheckLoop:\nLBU T0 0(S1) ; Load player placement into T0\nBEQL S2 T0 TargetPromptLogicExit ; If placement matches, select target\nMOVE V0 S0 ; Pass target index on V0 (on likely)\nLI T0 3\nBEQL S0 T0 TargetPromptLogicCheckReset ; If all players checked, check again\nADDIU S2 S2 1 ; Add 1 to check next placement (on likely)\nADDIU S0 S0 1 ; Add 1 to get next player\nJ TargetPromptLogicCheckLoop\nADDIU S1 S1 1 ; Add 1 to get next player placement\n\nTargetPromptLogicCheckReset:\nLI T0 4\nBEQL S2 T0 TargetPromptLogicExit ; If all placements checked, exit\nLI V0 5 ; Select exit (on likely) - failsafe\nJ TargetPromptLogicCheck\nNOP\n\nTargetPromptLogicExit:\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nJR RA\nADDIU SP SP 48\n\n.align 4\nTargetLogic:\n.fill 4,4\n\n;===Smack===\n.align 4\nSmack:\nADDIU SP SP -56\nSW RA 52(SP)\nSW S0 48(SP)\nSW S1 44(SP)\nSW S2 40(SP)\nSW S3 36(SP)\nSW S4 32(SP)\n\n; A0 / S0 = Current Player Struct\n; A1 / S1 = Target Player Index / Struct\n; S2 = Current Player Placement\n; S3 = Smack Chances Table / No. of Smacks\n; S4 = Smack Counter\n\n; Get struct and payment\nMOVE S0 A0 ; Copy A0 to S0\nJAL GetPlayerStruct\nMOVE A0 A1 ; Get target player struct at V0\nMOVE S1 V0 ; Copy V0 to S1\n\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL CoinChange\nLI A1 -4 ; Lose 4 coins\n\n; Smack message\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; Display message\nLUI A1 hi(SmackMessage)\nADDIU A1 A1 lo(SmackMessage) ; Display SmackMessage\nLBU A2 3(S1) ; Load target character value into A2\nJAL CallMessage\nADDIU A2 A2 0x1C00 ; Add target character value to MARIO string\n\nJAL BooFadeOut\nNOP\n\n; Get Smack chances\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0-3) at V0\nMOVE S2 V0 ; Copy V0 to S2\n\nLUI S3 hi(SmackChancesTable)\nADDIU S3 S3 lo(SmackChancesTable)\nSLL T0 S2 4 ; Multiply placement by 4 (distance between tables)\nADDU S3 S3 T0 ; Add distance between chances tables\n\nJAL GetRand\nLI A0 9 ; Get random byte (0-9) at V0\n\nLI T0 0 ; Start with 0 extra smacks\nSmackChanceCheck:\nLBU T3 0(S3) ; Load chance value into T3\nSLT T2 V0 T3 ; If V0 < T3, T2 = 1\nBNEZ T2 GetSmacks\nNOP\nADDIU T0 T0 1 ; Add 1 smack\nJ SmackChanceCheck\nADDIU S3 S3 1 ; Add 1 to check next chance value\n\nGetSmacks:\nADDIU S3 T0 4 ; Base number of smacks is 4\nLI S4 1 ; Start smack counter at 1\n\n; Play Smack sounds\nSmackSoundLoop:\nJAL PlaySound\nLI A0 0x0F ; Popping sound\nJAL SleepProcess\nLI A0 15 ; Wait 15 frames for sound\nBEQ S3 S4 SmackStealer\nNOP\nJ SmackSoundLoop\nADDIU S4 S4 1 ; Add 1 to smack counter\n\nSmackStealer:\nJAL BooFadeIn\nNOP\n\n; Get coins per smack\nLI T0 10\nMULT S2 T0 ; Multiply S2 by T0\nMFLO A0 ; Move result into A0\nJAL RNGPercentChance\nADDIU A0 A0 10 ; Base 10% chance of double coins\n\nMOVE A0 S0 ; Pass current player struct on A0\nMOVE A1 S1 ; Pass target player struct on A1\nMOVE A2 S3 ; Pass number of smacks on A2\nJAL StealCoins\nADDIU A3 V0 1 ; Coins per smack (0,1 => 1,2)\n\nLW RA 52(SP)\nLW S0 48(SP)\nLW S1 44(SP)\nLW S2 40(SP)\nLW S3 36(SP)\nLW S4 32(SP)\nJR RA\nADDIU SP SP 56\n\n;===Smack 1st Chances Table===\n.align 16\nSmackChancesTable:\n.byte 5 ; 4 smacks (50%)\n.byte 8 ; 5 smacks (30%)\n.byte 10 ; 6 smacks (20%)\n\n;===Smack 2nd Chances Table===\n.align 16\n.byte 3 ; 4 smacks (30%)\n.byte 8 ; 5 smacks (50%)\n.byte 10 ; 6 smacks (20%)\n\n;===Smack 3rd Chances Table===\n.align 16\n.byte 2 ; 4 smacks (20%)\n.byte 7 ; 5 smacks (50%)\n.byte 10 ; 6 smacks (30%)\n\n;===Smack 4th Chances Table===\n.align 16\n.byte 2 ; 4 smacks (20%)\n.byte 5 ; 5 smacks (30%)\n.byte 10 ; 6 smacks (50%)\n\n;===Coin Change===\n.align 4\nCoinChange:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Current Player Index\n; A1 / S1 = Coins to Gain/Lose\n\nMOVE S0 A0 ; Passing current player index on A0\nJAL AdjustPlayerCoinsGradual\nMOVE S1 A1 ; Passing coins to gain/lose on A1\n\nMOVE A0 S0 ; Pass current player index on A0\nJAL ShowPlayerCoinChange\nMOVE A1 S1 ; Pass coins to gain/lose on A1\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Boo Fade-out===\n.align 4\nBooFadeOut:\nADDIU SP SP -32\nSW RA 28(SP)\n\nLI A0 12 ; Boo fade-out\nJAL InitFadeOut ; Fade to black\nLI A1 16 ; Assigns 16 frames of fade-out\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-out\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Boo Fade-in===\n.align 4\nBooFadeIn:\nADDIU SP SP -32\nSW RA 28(SP)\n\nLI A0 12 ; Boo fade-in\nJAL InitFadeIn ; Fade from black\nLI A1 16 ; Assign 16 frames of fade-in\n\nJAL SleepProcess\nLI A0 17 ; Wait 17 frames for fade-in\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Steal Coins===\n.align 4\nStealCoins:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\n\n; A0 / S0 = Current Player Struct\n; A1 / S1 = Target Player Struct\n; A2 = Number of Smacks\n; A3 = Coins per Smack\n; S2 = Total Coins to Lose\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\nMULT A2 A3 ; Multiply A2 by A3\nMFLO S2 ; Move the result into S2\n\nLHU T0 0xA(S1) ; Load target coins from offset of player struct\nSLT T1 T0 S2 ; If opponent coins < coins to lose, T1 = 1\nBNEZL T1 StealCoinsNext\nMOVE S2 T0 ; Overwrite coins to lose with all of opponent's coins (on likely)\n\nStealCoinsNext:\nLBU A0 0x1D(S1) ; Take coins from target\nJAL AdjustPlayerCoinsGradual\nSUBU A1 R0 S2 ; Subtract coins\n\nLBU A0 0x1D(S1) ; Take coins from target\nJAL 0x800E1F28 ; ShowPlayerCoinChangeHUD\nSUBU A1 R0 S2 ; Subtract coins\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL CoinChange\nMOVE A1 S2 ; Give coins\n\nJAL HappyVoice\nLBU A0 3(S0) ; Pass current player character value on A0\n\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nJR RA\nADDIU SP SP 48\n\n;===Happy Voice===\n.align 4\nHappyVoice:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Character Value\n\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Outta Sight===\n.align 4\nOuttaSight:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 = Current Player Index\n; A1 / S0 = Target Player Index / Struct\n\n; Get struct and payment\nMOVE S0 A1 ; Copy A1 to S0\n; Pass current player index on A0\nJAL CoinChange\nLI A1 -8 ; Lose 8 coins\n\nJAL GetPlayerStruct\nMOVE A0 S0 ; Get target player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\n; Outta Sight message\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; Display message\nLUI A1 hi(OuttaSightMessage)\nADDIU A1 A1 lo(OuttaSightMessage)\nLBU A2 3(S0) ; Load target character value into A2\nJAL CallMessage\nADDIU A2 A2 0x1C00 ; Add target character value to MARIO string\n\nJAL BooFadeOut\nNOP\n\n; Remove key\nLBU A0 0x1D(S0) ; Pass target player index on A0\nJAL PlayerHasItem\nLI A1 0x01 ; Check for Skeleton Key\n\nADDU V0 S0 V0 ; Add item slot offset to player struct\nLI T0 0xFF ; No item index\nSB T0 0x18(V0) ; Delete item from offset of player struct\n\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass target player index on A0\nJAL FixUpPlayerItemSlots\nLBU A0 0x1D(S0) ; Pass target player index on A0\nJAL RefreshHUD\nLBU A0 0x1D(S0) ; Pass target player index on A0\n\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for sound\n\nLBU A0 3(S0) ; Load target character value into A0\nJAL PlaySound\nADDIU A0 A0 0x287 ; Add character value to Mario's sad voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for sound\n\nJAL BooFadeIn\nNOP\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Spook===\n.align 4\nSpook:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 = Current Player Index\n; A1 / S0 = Target Player Index / Struct\n\n; Get struct and payment\nMOVE S0 A1 ; Copy A1 to S0\n; Pass current player index on A0\nJAL CoinChange\nLI A1 -12 ; Subtract 12 coins\n\nJAL GetPlayerStruct\nMOVE A0 S0 ; Get target player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\n; Spook message\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; Display message\nLUI A1 hi(SpookMessage)\nADDIU A1 A1 lo(SpookMessage) ; Display SpookMessage\nLBU A2 3(S0) ; Load target character value into A2\nJAL CallMessage\nADDIU A2 A2 0x1C00 ; Add target character value to MARIO string\n\nJAL BooFadeOut\nNOP\n\n; Spook the target\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD096 ; 0x800CD096, Item Curse Address\nLBU T1 0x1D(S0) ; Load target player index into T1\nADDU T0 T0 T1 ; Add to get target player's flag\nLI T2 2 ; Spook flag\nSB T2 0(T0) ; Store Spook flag\n\nJAL PlaySound\nLI A0 0x25E ; Boo cry\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for sound\n\nLBU A0 3(S0) ; Load target character value into A0\nJAL PlaySound\nADDIU A0 A0 0x287 ; Add character value to Mario's sad voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for sound\n\nJAL BooFadeIn\nNOP\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Fan Smack===\n.align 4\nFanSmack:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\nSW S3 28(SP)\n\n; A0 / S0 = Current Player Struct\n; A1 / S1 = Target Player Index / Struct\n; S2 = Fan Smack Chances Table / Coins per Smack\n; S3 = Smack Counter\n\n; Get struct and payment\nMOVE S0 A0 ; Copy A0 to S0\nJAL GetPlayerStruct\nMOVE A0 A1 ; Get target player struct at V0\nMOVE S1 V0 ; Copy V0 to S1\n\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL CoinChange\nLI A1 -12 ; Lose 12 coins\n\n; Fan Smack message\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; Display message\nLUI A1 hi(FanSmackMessage)\nADDIU A1 A1 lo(FanSmackMessage)\nLBU A2 3(S1) ; Load target character value into A2\nJAL CallMessage\nADDIU A2 A2 0x1C00 ; Add target character value to MARIO string\n\nJAL BooFadeOut\nNOP\n\n; Get Fan Smack chances\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0-3) at V0\n\nLUI S2 hi(FanSmackChancesTable)\nADDIU S2 S2 lo(FanSmackChancesTable)\nSLL V0 V0 4 ; Multiply placement by 16 (distance between tables)\nADDU S2 S2 V0 ; Add distance between chances tables\n\nJAL GetRand\nLI A0 99 ; Get random byte from 0-99 at V0\n\nLI T2 2 ; Base 2 coins per smack\nFanSmackChanceCheck:\nLBU T1 0(S2) ; Load chance value into T1\nSLT T0 V0 T1 ; If V0 < T1, T0 = 1\nBNEZ T0 GetFanSmacks\nNOP\nADDIU T2 T2 1 ; Add 1 coin per smack\nJ FanSmackChanceCheck\nADDIU S2 S2 1 ; Add 1 to check next chance value\n\nGetFanSmacks:\nMOVE S2 T2 ; Copy T2 to S2\nLI S3 1 ; Start smack counter at 1\n\n; Play Fan Smack sounds\nFanSmackSoundLoop:\nJAL PlaySound\nLI A0 0x0F ; Popping sound\nJAL SleepProcess\nLI A0 15 ; Wait 15 frames for sound\nLI T0 5\nBEQ S3 T0 FanSmackStealer ; If all 5 smacks done, steal coins\nNOP\nJ FanSmackSoundLoop\nADDIU S3 S3 1 ; Add 1 to smack counter\n\nFanSmackStealer:\nJAL BooFadeIn\nNOP\n\n; Get coins per smack\nMOVE A0 S0 ; Pass current player struct on A0\nMOVE A1 S1 ; Pass target player struct on A1\nLI A2 5 ; Pass no. of smacks (5) on A2\nJAL StealCoins\nMOVE A3 S2 ; Pass coins per smack on A3\n\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nLW S3 28(SP)\nJR RA\nADDIU SP SP 48\n\n;===Fan Smack 1st Chances Table===\n.align 16\nFanSmackChancesTable:\n.byte 40 ; 2 coin smacks (40%)\n.byte 65 ; 3 coin smacks (25%)\n.byte 85 ; 4 coin smacks (20%)\n.byte 95 ; 5 coin smacks (10%)\n.byte 100 ; 6 coin smacks (5%)\n\n;===Fan Smack 2nd Chances Table===\n.align 16\n.byte 25 ; 2 coin smacks (25%)\n.byte 55 ; 3 coin smacks (30%)\n.byte 75 ; 4 coin smacks (20%)\n.byte 90 ; 5 coin smacks (15%)\n.byte 100 ; 6 coin smacks (10%)\n\n;===Fan Smack 3rd Chances Table===\n.align 16\n.byte 15 ; 2 coin smacks (15%)\n.byte 40 ; 3 coin smacks (25%)\n.byte 70 ; 4 coin smacks (30%)\n.byte 90 ; 5 coin smacks (20%)\n.byte 100 ; 6 coin smacks (10%)\n\n;===Fan Smack 4th Chances Table===\n.align 16\n.byte 10 ; 2 coin smacks (10%)\n.byte 30 ; 3 coin smacks (20%)\n.byte 60 ; 4 coin smacks (30%)\n.byte 85 ; 5 coin smacks (25%)\n.byte 100 ; 6 coin smacks (15%)\n\n;===Message Text===\n.align 16\nGreetingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"It IS you\"\n.byte 0x82 ; Comma (,)\n.ascii \" isn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t it\"\n.byte 0x82 ; Comma (,)\n.ascii \" \"\n.byte 0x11 ; String #1 stored in A2 (Character name)\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Well\"\n.byte 0x82 ; Comma (,)\n.ascii \" it\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s been quite a while\"\n.byte 0x82 ; Comma (,)\n.ascii \" hasn\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t it\"\n.byte 0xC3 ; Question mark (?)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nMainPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"I presume you\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"re here to ask\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"for my assistance\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You know I have many abilities\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Which one shall I showcase today\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.ascii \"Smack\"\n.byte 0x1A,0x1A,0x1A,0x1A ; Tabs\n.byte 0x29,0x3E ; Coin icon, Multiply (x)\n.ascii \" 4\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.ascii \"Outta Sight\"\n.byte 0x1A,0x1A ; Tabs\n.byte 0x29,0x3E ; Coin icon, Multiply (x)\n.ascii \" 8\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.ascii \"Spook\"\n.byte 0x1A,0x1A,0x1A,0x1A ; Tabs\n.byte 0x29,0x3E ; Coin icon, Multiply (x)\n.ascii \"12\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.ascii \"Fan Smack\"\n.byte 0x1A,0x1A ; Tabs\n.byte 0x29,0x3E ; Coin icon, Multiply (x)\n.ascii \"12\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x08 ; White font\n.ascii \"Sorry\"\n.byte 0x82 ; Comma (,)\n.ascii \" maybe next time\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nTargetPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Who\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s your opponent\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.byte 0x11 ; String #1 stored in A2 (Player 1 name)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.byte 0x12 ; String #2 stored in A3 (Player 2 name)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.byte 0x13 ; String #3 stored in A4 (Player 3 name)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\"\n.byte 0x14 ; String #4 stored in A5 (Player 4 name)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.byte 0x08 ; White font\n.ascii \"Your choice\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Go back\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End Prompt\n\n.align 16\nSmackMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Good idea\"\n.byte 0x82 ; Comma (,)\n.ascii \" leave it to me\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"to smack some sense into\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x11 ; String #1 stored in A2 (Opponent name)\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" GWAH HEE HAH\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nOuttaSightMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Good idea\"\n.byte 0x82 ; Comma (,)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"m going to make\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x11 ; String #1 stored in A2 (Opponent name)\n.byte 0x5C ; Apostrophe (')\n.ascii \"s\"\n.byte 0x06 ; Blue font\n.ascii \" ticket\"\n.byte 0x08 ; White font\n.ascii \" disappear\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"GWAH HEE HAH\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nSpookMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Good idea\"\n.byte 0x82 ; Comma (,)\n.ascii \" I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll just\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x03 ; Red font\n.ascii \"SPOOK\"\n.byte 0x08 ; White font\n.ascii \" the living daylights out of\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x11 ; String #1 stored in A2 (Opponent name)\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" GWAH HEE HAH\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nFanSmackMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Good idea\"\n.byte 0x82 ; Comma (,)\n.ascii \" leave it to me and\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"my fan\"\n.byte 0x85 ; Period (.)\n.ascii \" We\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll smack that\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x11 ; String #1 stored in A2 (Opponent name)\n.ascii \" with real panache\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" GWAH HEE HAH\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nGoodbyeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Still\"\n.byte 0x82 ; Comma (,)\n.ascii \" what a nice surprise to see you\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Feel free to be overwhelmed by my beauty\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n\n;===Prompt Placeholders===\n.align 16\nMainPromptPlaceholder:\n.fill 0x1024,0\n\n.align 16\nTargetPromptPlaceholder:\n.fill 0x1024,0"},"Bell Curse or Spook Effect":{"language":0,"code":"; NAME: Bell Curse or Spook Effect\n; GAMES: MP3_USA\n; EXECUTION: Direct\n\nADDIU SP SP -32\nSW RA 28(SP)\n\n;===Get Current Player Index===\nJAL GetCurrentPlayerIndex ; Get current player index at V0\nNOP\n\n;===Get Player's Bell Curse Flag===\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD096 ; 0x800CD096 - P1 Bell Curse Flag\nADDU T0 T0 V0 ; Add to get current player's Bell Curse Flag\n\n;===Check Flag===\nLBU T2 0(T0) ; Load Bell Curse Flag value\nBEQZ T2 exit ; If flag is OFF, exit\nNOP\n; else, flag is ON\n\n;===Change Flags===\nSB R0 0(T0) ; Turn off Bell Curse Flag\nLUI T0 0x800C ; 0x800C0000\nORI T0 T0 0xD0A9 ; 0x800CD0A9 - Used Item Flag\nLI T1 1 ; Turn flag ON\nSB T1 0(T0) ; Used Item Flag ON, player cannot use items\n\n;===Decide Message===\nBEQ T2 T1 BellCurse ; If T2 = 1, Bell Curse in effect\nNOP\n; else, Spook in effect\nLUI A1 hi(SpookMessage)\nJ StartMessage\nADDIU A1 A1 lo(SpookMessage) ; Display SpookMessage\n\nBellCurse:\nLUI A1 hi(CurseMessage)\nADDIU A1 A1 lo(CurseMessage) ; Display CurseMessage\n\n;===Display Message===\nStartMessage:\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 -1 ; Character image (-1 for none)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\n; Pass message address on A1\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nexit:\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Message Text===\n.align 16\nSpookMessage:\n.ascii \"That\"\n.byte 0x05 ; Green font\n.ascii \" Boo\"\n.byte 0x08 ; White font\n.ascii \" was so frightening that\"\n.byte 0x0A ; New line (writes below)\n.ascii \"you\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"re too\"\n.byte 0x04 ; Purple font\n.ascii \" spooked\"\n.byte 0x08 ; White font\n.ascii \" to\"\n.byte 0x0A ; New line (writes below)\n.ascii \"use your\"\n.byte 0x06 ; Blue font\n.ascii \" items\"\n.byte 0x08 ; White font\n.ascii \" this turn\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nCurseMessage:\n.ascii \"Feeling the effects of the\"\n.byte 0x04 ; Purple font\n.ascii \" Boo Bell Curse\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" you\"\n.byte 0x0A ; New line (writes below)\n.ascii \"can\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t use your\"\n.byte 0x06 ; Blue font\n.ascii \" items\"\n.byte 0x08 ; White font\n.ascii \" this turn\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"Merged Path Fix (v2)":{"language":0,"code":"; NAME: Merged Path Fix (v2)\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|Behind\n; PARAM: Space|Next\n; PARAM: Space|OtherBehind\n\nADDIU SP SP -32\nSW RA 28(SP)\n\nJAL GetPlayerStruct ; at V0\nLI A0 -1\n\nCheckChain:\nLBU T1 0x15(V0) ; Previous Chain Index\nLBU T2 0x16(V0) ; Previous ChainSpace Index\nADDIU T0 R0 Behind_chain_index\nBNE T0 T1 CheckChain2\nNOP\nADDIU T0 R0 Behind_chain_space_index\nBNE T0 T2 CheckChain2\nNOP\nJ SetupSpace\nNOP\n\nCheckChain2:\nADDIU T0 R0 OtherBehind_chain_index\nBEQ T0 T1 exit\nNOP\nADDIU T0 R0 OtherBehind_chain_space_index\nBEQ T0 T1 exit\nNOP\n\nSetupSpace:\nLI A0 -1 ; Assigns Current Player Index to A0\nADDIU A1 R0 Next_chain_index ; Assigns Chain Index to A1\nJAL SetNextChainAndSpace\nADDIU A2 R0 Next_chain_space_index ; Assigns Space Index to A2 \n\nLI A0 -1 ; Assigns Current Player Index to A0\nADDIU A1 R0 Behind_chain_index ; Assigns Chain Index to A1\nJAL SetPrevChainAndSpace \nADDIU A2 R0 Behind_chain_space_index ; Assigns Space Index to A2\n\nexit:\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32"},"Rules of the Board (KBC)":{"language":0,"code":"; NAME: Rules of the Board (KBC)\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Boolean|ChocolateRules\n; PARAM: Boolean|ActivateRules\n\n; This event is adapted from Spongyoshi's \"Rules of the Board\" event.\n; If you'd like to use this event on your board, please refer to\n; Spongyoshi's original version.\n\n; If you don't want the rules prompt to appear at the start of the\n; game, set the parameter \"ActivateRules\" to \"false\". The parameter\n; \"ChocolateRules\" is set to \"false\" for the Vanilla version of the\n; board, and \"true\" for the Chocolate version.\n\nADDIU SP SP -32\nSW RA 28(SP)\n\n;===Check to Activate Rules===\nLI T0 ActivateRules\nBEQZ T0 exit ; If ActivateRules is turned OFF, exit\nNOP\n\n;===Check the Turn Count===\nLUI T0 hi(current_turn)\nADDIU T0 T0 lo(current_turn)\nLBU T0 0(T0) ; Load current turn into T0\nLI T1 1\nBNE T0 T1 exit ; If it's not turn 1, exit\nNOP\n\n;===Greeting Prompt===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; No string\nLUI A1 hi(GreetingPrompt)\nJAL CallPrompt\nADDIU A1 A1 lo(GreetingPrompt) ; Display GreetingPrompt\n\n; Change the outcome based on the choice.\nBEQZ V0 Bye\nNOP\n; else, pick Rules\n\n;===Greeting Message===\nLUI A0 hi(GreetingMessage)\nJAL CallMessage\nADDIU A0 A0 lo(GreetingMessage) ; Display GreetingMessage\n\n;===Rules Prompt===\nRules:\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nJAL GetCurrentPlayerIndex ; Get current player index at V0\nNOP\nJAL GetPlayerStruct\nMOVE A0 V0 ; Get current player struct at V0\n\nLBU A0 3(V0) ; Load character value from offset of player struct\nADDIU A0 A0 0x1C00 ; Add character value to MARIO string\nLUI A1 hi(RulesPrompt)\nJAL CallPrompt\nADDIU A1 A1 lo(RulesPrompt) ; Display RulesPrompt\n\n; Change the outcome based on the choice.\nBEQZ V0 TicketRules\nNOP\nLI T0 1\nBEQ V0 T0 GameRules\nNOP\nLI T0 2\nBEQ V0 T0 ItemRules\nNOP\nLI T0 3\nBEQ V0 T0 BooRules\nNOP\nLI T0 4\nBEQ V0 T0 LastRules\nNOP\nLI T0 5\nBEQ V0 T0 BonusRules\nNOP\n; else, pick Bye\nJ Bye\nNOP\n\n;===Ticket Rules===\nTicketRules:\nLUI A0 hi(TicketMessage)\nJ RulesDisplay\nADDIU A0 A0 lo(TicketMessage) ; Display TicketMessage\n\n;===Game Rules===\nGameRules:\nLUI A0 hi(GameMessage)\nJ RulesDisplay\nADDIU A0 A0 lo(GameMessage) ; Display GameMessage\n\n;===Item Rules===\nItemRules:\nLUI A0 hi(ItemMessage)\nJ RulesDisplay\nADDIU A0 A0 lo(ItemMessage) ; Display ItemMessage\n\n;===Boo Rules===\nBooRules:\nLUI A0 hi(BooMessage)\nJ RulesDisplay\nADDIU A0 A0 lo(BooMessage) ; Display BooMessage\n\n;===Last Rules===\nLastRules:\nLI T0 ChocolateRules\nBNEZ T0 LastRulesChocolate ; Check if chocolate rules are ON\nNOP\n; else, use vanilla rules\nLUI A0 hi(LastMessageVanilla)\nJ RulesDisplay\nADDIU A0 A0 lo(LastMessageVanilla) ; Display LastMessageVanilla\n\nLastRulesChocolate:\nLUI A0 hi(LastMessageChocolate)\nJ RulesDisplay\nADDIU A0 A0 lo(LastMessageChocolate) ; Display LastMessageChocolate\n\n;===Bonus Rules===\nBonusRules:\nLI T0 ChocolateRules\nBNEZ T0 BonusRulesChocolate ; Check if chocolate rules are ON\nNOP\n; else, use vanilla rules\nLUI A0 hi(BonusMessageVanilla)\nJ RulesDisplay\nADDIU A0 A0 lo(BonusMessageVanilla) ; Display BonusMessageVanilla\n\nBonusRulesChocolate:\nLUI A0 hi(BonusMessageChocolate)\nADDIU A0 A0 lo(BonusMessageChocolate) ; Display BonusMessageChocolate\n\n;===Rules Display===\nRulesDisplay:\nJAL CallMessage\nNOP\n\nJ Rules\nNOP\n\n;===Bye Message===\nBye:\nLUI A0 hi(ByeMessage)\nJAL CallMessage\nADDIU A0 A0 lo(ByeMessage) ; Display ByeMessage\n\nexit:\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Mini Func to Call Prompt===\n.align 4\nCallPrompt:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 = String #1\n; A1 = Prompt Address\n; S0 / V0 = Prompt Choice\n\nMOVE A2 A0 ; Copy A0 to A2\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\n; Pass prompt address on A1\nJAL ShowMessage\nLI A3 0\n\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nLI A1 0\nMOVE S0 V0 ; S0 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nMOVE V0 S0 ; Copy S0 to V0\n\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -32\nSW RA 28(SP)\n\n; A0 = Message Address\n\nMOVE A1 A0 ; Copy A0 to A1\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\n; Pass message address on A1\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nLW RA 28(SP)\nJR RA\nADDIU SP SP 32\n\n;===Message Text===\n.align 16\nGreetingPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Welcome to\"\n.byte 0x04 ; Purple font\n.ascii \" King Boo Carnival\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll be your ghost\"\n.byte 0x3D,0x3D ; Two minuses (--)\n.ascii \"er\"\n.byte 0x82 ; Comma (,)\n.ascii \" host\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Want to know more about this board\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"No\"\n.byte 0x82 ; Comma (,)\n.ascii \" just let me roll\"\n.byte 0x85 ; Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Yes\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" I love knowledge\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nGreetingMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"This board is a scary little\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"fun fair that the great\"\n.byte 0x04 ; Purple font\n.ascii \" King Boo\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"cooked up a while back\"\n.byte 0x85 ; Period (.)\n.byte 0xFF ; Wait, press A to confirm\n.byte 0x0B ; Feed old text away\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"It\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s for all his loyal followers\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"to enjoy\"\n.byte 0x85 ; Period (.)\n.ascii \" It\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s so good\"\n.byte 0x82 ; Comma (,)\n.ascii \" it\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"scary\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" Let\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s see how you do\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nRulesPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Now\"\n.byte 0x82 ; Comma (,)\n.ascii \" \"\n.byte 0x11,0x82 ; String #1 stored in A2 (character name), Comma (,)\n.ascii \" would you like me\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"to explain anything in more detail\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A,0x0A ; Two new lines\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Tell me about the\"\n.byte 0x06 ; Blue font\n.ascii \" carnival tickets\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Tell me about the\"\n.byte 0x03 ; Red font\n.ascii \" carnival games\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Tell me about\"\n.byte 0x06 ; Blue font\n.ascii \" using items\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Tell me about\"\n.byte 0x05 ; Green font\n.ascii \" special Boos\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Tell me about the\"\n.byte 0x04 ; Purple font\n.ascii \" Last 5 Turns event\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Tell me about the\"\n.byte 0x07 ; Yellow font\n.ascii \" custom Bonus Star\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"m good\"\n.byte 0x82 ; Comma (,)\n.ascii \" let\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s start the party\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nTicketMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"On this board\"\n.byte 0x82 ; Comma (,)\n.ascii \" you can collect\"\n.byte 0x06 ; Blue font\n.ascii \" Skeleton Keys\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x08 ; White font\n.ascii \"to use as carnival tickets\"\n.byte 0x85 ; Period (.)\n.ascii \" You can trade\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"them for\"\n.byte 0x07 ; Yellow font\n.ascii \" prizes\"\n.byte 0x08 ; White font\n.ascii \" at the\"\n.byte 0x07 ; Yellow font\n.ascii \" Prize Exchange\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0xFF ; Wait, press A to confirm\n.byte 0x0B ; Feed old text away\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.byte 0x06 ; Blue font\n.ascii \"1 Skeleton Key\"\n.byte 0x08 ; White font\n.ascii \" goes for\"\n.byte 0x07 ; Yellow font\n.ascii \" 10 coins\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"2 Skeleton Keys\"\n.byte 0x08 ; White font\n.ascii \" go for\"\n.byte 0x06 ; Blue font\n.ascii \" 2 Golden Mushrooms\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"and\"\n.byte 0x06 ; Blue font\n.ascii \" 3 Skeleton Keys\"\n.byte 0x08 ; White font\n.ascii \" go for a\"\n.byte 0x07 ; Yellow font\n.ascii \" Star\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nGameMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"You can earn\"\n.byte 0x06 ; Blue font\n.ascii \" tickets\"\n.byte 0x08 ; White font\n.ascii \" from the carnival games\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x06 ; Blue font\n.ascii \"Gachapon\"\n.byte 0x08,0x7B ; White font, Colon (:)\n.ascii \" Open a capsule and see\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"what\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s inside\"\n.byte 0x85 ; Period (.)\n.ascii \" Many\"\n.byte 0x07 ; Yellow font\n.ascii \" prizes\"\n.byte 0x08 ; White font\n.ascii \" await\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x04 ; Purple font\n.ascii \"Teacups Ride\"\n.byte 0x08,0x7B ; White font, Colon (:)\n.ascii \" Go for a spin and\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"you might find\"\n.byte 0x06 ; Blue font\n.ascii \" something nice\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0xFF ; Wait, press A to confirm\n.byte 0x0B ; Feed old text away\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.byte 0x03 ; Red font\n.ascii \"Fear House\"\n.byte 0x08,0x7B ; White font, Colon (:)\n.ascii \" Answer trivia questions and\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"you could\"\n.byte 0x06 ; Blue font\n.ascii \" win \"\n.byte 0x08,0x5D ; White font, Left bracket (\n.ascii \"or\"\n.byte 0x03 ; Red font\n.ascii \" lose\"\n.byte 0x08,0x5E ; White font, Right bracket )\n.byte 0x07 ; Yellow font\n.ascii \" extra coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x05 ; Green font\n.ascii \"Strength Test\"\n.byte 0x08,0x7B ; White font, Colon (:)\n.ascii \" Charge up power and\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"hit the mark to win\"\n.byte 0x06 ; Blue font\n.ascii \" tickets\"\n.byte 0x08 ; White font\n.ascii \" and\"\n.byte 0x07 ; Yellow font\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nItemMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"The\"\n.byte 0x03 ; Red font\n.ascii \" Item Shop\"\n.byte 0x08 ; White font\n.ascii \" is run by\"\n.byte 0x06 ; Blue font\n.ascii \" Boo\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" so he sells\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x05 ; Green font\n.ascii \"different items\"\n.byte 0x08 ; White font\n.ascii \" than on other boards\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"There\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s also the\"\n.byte 0x04 ; Purple font\n.ascii \" Pink Boo\"\n.byte 0x08 ; White font\n.ascii \" vendor\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"who sells all kinds of\"\n.byte 0x06 ; Blue font\n.ascii \" Mushrooms\"\n.byte 0x08,0x85 ; White font, Period (.)\n.byte 0xFF ; Wait, press A to confirm\n.byte 0x0B ; Feed old text away\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Make sure you bring\"\n.byte 0x06 ; Blue font\n.ascii \" items\"\n.byte 0x08 ; White font\n.ascii \" to the\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x05 ; Green font\n.ascii \"Magic Show\"\n.byte 0x08 ; White font\n.ascii \" and\"\n.byte 0x04 ; Purple font\n.ascii \" Boo Brothers\"\n.byte 0x08 ; White font\n.ascii \" so\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"that they can cast their spells\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBooMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"There are lots of helpful Boos\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"on the carnival grounds\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Visit\"\n.byte 0x05 ; Green font\n.ascii \" Lady Bow\"\n.byte 0x08 ; White font\n.ascii \" and she can\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"help you\"\n.byte 0x03 ; Red font\n.ascii \" sabotage\"\n.byte 0x08 ; White font\n.ascii \" your rivals\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF ; Wait, press A to confirm\n.byte 0x0B ; Feed old text away\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Meanwhile\"\n.byte 0x82 ; Comma (,)\n.byte 0x06 ; Blue font\n.ascii \" Boolock Holmes\"\n.byte 0x08 ; White font\n.ascii \" looks\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"like he needs help finding\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"certain Boos around the board\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Keep your eyes peeled\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nLastMessageVanilla:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"This is the\"\n.byte 0x06 ; Blue font\n.ascii \" Vanilla\"\n.byte 0x08 ; White font\n.ascii \" version\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"of the board\"\n.byte 0x82 ; Comma (,)\n.ascii \" so there is\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x03 ; Red font\n.ascii \"no custom Last 5 Turns event\"\n.byte 0x85,0x08 ; Period (.), White font\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nLastMessageChocolate:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Right before the\"\n.byte 0x04 ; Purple font\n.ascii \" Last 5 Turns\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"ll come back and host a\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x07 ; Yellow font\n.ascii \"special event\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.ascii \" Whoever is in\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x03 ; Red font\n.ascii \"last place\"\n.byte 0x08 ; White font\n.ascii \" can receive an\"\n.byte 0x06 ; Blue font\n.ascii \" item\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x07 ; Yellow font\n.ascii \"coins\"\n.byte 0x08,0x82 ; White font, Comma (,)\n.ascii \" or a\"\n.byte 0x05 ; Green font\n.ascii \" miracle\"\n.byte 0x08 ; White font\n.ascii \" that will\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"trigger a\"\n.byte 0x03 ; Red font\n.ascii \" new rule\"\n.byte 0x08 ; White font\n.ascii \" for the board\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBonusMessageVanilla:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"This is the\"\n.byte 0x06 ; Blue font\n.ascii \" Vanilla\"\n.byte 0x08 ; White font\n.ascii \" version\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"of the board\"\n.byte 0x82 ; Comma (,)\n.ascii \" so there is\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x03 ; Red font\n.ascii \"no custom Bonus Star\"\n.byte 0x85,0x08 ; Period (.), White font\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nBonusMessageChocolate:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"This is the\"\n.byte 0x04 ; Purple font\n.ascii \" Chocolate\"\n.byte 0x08 ; White font\n.ascii \" version\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"of the board\"\n.byte 0x82 ; Comma (,)\n.ascii \" so the\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x05 ; Green font\n.ascii \"Happening Star\"\n.byte 0x08 ; White font\n.ascii \" is replaced by the\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.byte 0x04 ; Purple font\n.ascii \"Ticket Star\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.ascii \" It is awarded to\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"whoever gets the most\"\n.byte 0x06 ; Blue font\n.ascii \" Skeleton Keys\"\n.byte 0x08 ; White font\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"from carnival attractions\"\n.byte 0x85 ; Period (.)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nByeMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Now\"\n.byte 0x82 ; Comma (,)\n.ascii \" happy haunting\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"And good luck\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"},"King Boo Carnival Shop v3.1":{"language":0,"code":"; NAME: King Boo Carnival Shop v3.1\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|ShopSpace\n\nADDIU SP SP -120\nSW RA 116(SP)\nSW S0 112(SP)\nSW S1 108(SP)\nSW S2 104(SP)\nSW S3 100(SP)\nSW S4 96(SP)\nSW S5 92(SP)\nSW S6 88(SP)\nSW S7 84(SP)\n\n; S0 = Current Player Struct\n; S1 = Prompt Option / Selected Item\n; S2 = Item Table / Item Bag Table\n; S3 = Price Table / Price / Item Bag Chances Table\n; S4 = Current Player Placement / Empty Item Slot Offset (Item Bag)\n; S5 = Shop Prompt / Bad Exit Message\n; S6 = Empty Item Slot (Offset)\n; S7 = Exit Flag (0 or 1)\n; 80(SP) = Shop Model Pointer\n; 76(SP) = Boo Model Pointer\n\n;===Hide Dice Roll===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL 0x800DBEC0 ; HideDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\n;===Set Player Idle Animation===\nLI A0 -1 ; Set current player\nLI A1 -1 ; Set idle animation\nJAL SetBoardPlayerAnimation\nLI A2 2 ; Loop the animation\n\n;===Rotate Toward ShopSpace===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 ShopSpace ; Face ShopSpace\n\n;===Check Current Turn===\nLUI T0 hi(total_turns)\nADDIU T0 T0 lo(total_turns)\nLBU T0 0(T0) ; Load total turns into T0\n\nLUI T1 hi(current_turn)\nADDIU T1 T1 lo(current_turn)\nLBU T1 0(T1) ; Load current turn into T1\n\nBEQ T0 T1 LastTurn ; If it's the last turn, go to LastTurn\nNOP\n\n;===Check Player's Coins===\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL PlayerHasCoins ; Returns 1 if player has enough coins\nLI A1 5 ; Check for 5 coins\n\nBEQZ V0 NoCoinsToShop ; If not enough coins, go to NoCoinsToShop\nNOP\n\n;===Check Player's Inventory===\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBLTZ V0 TooManyItems ; If player has no empty slot, go to TooManyItems\nNOP\n; else, player has an empty item slot (0-2)\nMOVE S6 V0 ; Copy V0 to S6\nLI S7 0 ; Set exit flag to 0\n\n;===Get Player Placement and Item Table===\nJAL LoadBooShop\nLI A0 0x257 ; Boo laugh\nSW V0 80(SP) ; Store V0 into 80(SP) (S8)\nSW V1 76(SP) ; Store V1 into 76(SP) (S9)\n\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Check current player placement (0-3)\nMOVE S4 V0 ; Copy V0 to S4\n\nBEQZ S4 FirstPlace ; If V0 = 0, player is in 1st place\nNOP\n; else, player is 2nd-4th\nLUI S2 hi(ItemTable)\nADDIU S2 S2 lo(ItemTable)\nLUI S5 hi(ShopPrompt)\nJ Greeting\nADDIU S5 S5 lo(ShopPrompt) ; Display ShopPrompt\n\nFirstPlace:\nLUI S2 hi(FirstItemTable)\nADDIU S2 S2 lo(FirstItemTable)\nLUI S5 hi(FirstShopPrompt)\nADDIU S5 S5 lo(FirstShopPrompt) ; Display FirstShopPrompt\n\n;===Greeting Message===\nGreeting:\nLI A0 1 ; Display prompt\nLUI A1 hi(GreetingPrompt)\nJAL CallMessage\nADDIU A1 A1 lo(GreetingPrompt) ; Display GreetingPrompt\n\nBNEL S7 R0 SkipGreetingAI ; If S7 = 1, skip GreetingAI\nMOVE V0 S7 ; Copy S7 to V0 (select exit on likely)\n\nJAL RNGPercentChance\nLI A0 25 ; 25% chance of V0 = 1\n\nSkipGreetingAI:\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nBEQZ S1 MainPrompt ; If S1 = 0, go to main prompt\nNOP\nLI T0 1\nBEQ S1 T0 exit ; If S1 = 1, exit\nNOP\n; else pick \"View map\"\nJAL ViewBoardMap\nNOP\nJ Greeting\nNOP\n\n;===Shop Prompt===\nMainPrompt:\nLBU A0 0x1D(S0) ; Pass current player index on A0\nADDIU A1 S2 16 ; Pass price table on A1\nJAL PreparePrompt\nMOVE A2 S5 ; Pass prompt address on A2\n\nLI A0 1 ; Display prompt\nLUI A1 hi(PromptHolder)\nJAL CallMessage\nADDIU A1 A1 lo(PromptHolder) ; Display ShopPrompt with strings\n\nJAL DisableItems ; Disable unaffordable options\nNOP\n\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJAL AILogic\nMOVE A1 S4 ; Pass current player placement on A1\n\n; Get the selection, either from the player or CPU.\n; If A0 is a pointer to AI data, AI logic is ran to pick for CPUs.\n; If A0 is 0 or 1, the 0th or 1st option is chosen by CPUs.\n; If A0 is 2, then the value of A1 is the CPUs option index choice.\nLI A0 2\nJAL GetBasicPromptSelection\nMOVE A1 V0 ; A1 now has the AI's decision\nMOVE S1 V0 ; S1 now has the chosen option index\n\n; Obligatory message box closing/cleanup calls.\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n; Change the player's destination based on the choice.\nSLTI T0 S1 7 ; If S1 < 7, T0 = 1\nBNEZ T0 PickItem ; If T0 = 1, pick item\nNOP\nLI T0 7\nBEQ S1 T0 ItemBag ; If S1 = T0, go to ItemBag\nNOP\nLI T0 9\nBEQL S1 T0 Greeting ; If S1 = T0, go back to Greeting\nLI S7 1 ; Set exit flag to 1\n; else pick \"Item Descriptions\"\nJAL 0x800E44E4 ; GetItemDescriptions\nLBU A0 0x1D(S0) ; Pass current player index on A0\nJ MainPrompt\nNOP\n\n;===Item Bag===\nItemBag:\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL AdjustPlayerCoinsGradual\nLI A1 -30 ; Subtract 30 coins\n\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL ShowPlayerCoinChange\nLI A1 -30 ; Subtract 30 coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Get Item Bag Tables===\nLUI S2 hi(ItemBagTable)\nADDIU S2 S2 lo(ItemBagTable)\n\nLI T0 16 ; Add distance between chances tables\nMULT S4 T0 ; Multiply by player placement\nMFLO T0 ; Move result into T0\n\nLUI S3 hi(ItemBagChancesTable)\nADDIU S3 S3 lo(ItemBagChancesTable)\nADDU S3 T0 S3 ; Add distance between chances tables\n\nADDU S4 S0 S6 ; Add empty item slot offset to player struct\n\n;===Randomize Outcome===\nRandomizer:\nJAL GetRand\nORI A0 R0 0x63 ; Get random byte from 00-63 (0-99) at V0\nMOVE T3 S3 ; Copy S3 to T3\nMOVE T2 S2 ; Copy S2 to T2\n\nRandomItemLoop:\nLBU T5 0(T3) ; Load chance value from chances table\nLBU T4 0(T2) ; Load item index from ItemBagTable\nSLT T1 V0 T5 ; If V0 < T3, T1 = 1\nBNEZ T1 SelectItem\nNOP\nADDIU T3 T3 1 ; Load next byte from chances table\nJ RandomItemLoop\nADDIU T2 T2 1 ; Load next byte from ItemBagTable\n\n;===Obtain Item Bag Item===\nSelectItem:\nSB T4 0x18(S4) ; Store item into empty slot offset of player struct\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames\n\n;===Check Player Slots for Item Bag===\nADDIU S6 S6 1 ; Add 1 to empty item slot\nLI T0 3\nBEQ S6 T0 HappyVoice ; If S6 = T0, go to HappyVoice\nNOP\n; else, player still has empty item slots\nJ Randomizer\nADDIU S4 S4 1 ; Add 1 to empty slot offset\n\n;===Pick Item and Check for Coins===\nPickItem:\nADDIU S3 S2 16 ; Add offset of Price Table from Item Table\nADDU S3 S3 S1 ; Add S1 as byte offset of Price Table\nLBU S3 0(S3) ; Load price value from offset of Price Table\n\nADDU S1 S2 S1 ; Add S1 as byte offset of Item Table\nLBU S1 0(S1) ; Load item value from offset of Item Table\n\n;===Pay Coins===\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL AdjustPlayerCoinsGradual\nSUBU A1 R0 S3 ; Subtract item price\n\nLBU A0 0x1D(S0) ; Take coins from current player\nJAL ShowPlayerCoinChange\nSUBU A1 R0 S3 ; Subtract item price\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Receive Item===\nADDU S6 S0 S6 ; Add empty item slot offset to player struct\nSB S1 0x18(S6) ; Store item into offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\n;===Play Happy Voice and Animation===\nHappyVoice:\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nLI A0 0 ; Display message\nLUI A1 hi(GotItemMessage)\nJAL CallMessage\nADDIU A1 A1 lo(GotItemMessage) ; Display GotItemMessage\n\nJ exit\nNOP\n\n;===Too Many Items Message===\nTooManyItems:\nLUI S5 hi(TooManyItemsMessage)\nJ SadMessage\nADDIU S5 S5 lo(TooManyItemsMessage) ; Display TooManyItemsMessage\n\n;===No Coins to Shop Message===\nNoCoinsToShop:\nLUI S5 hi(NoCoinsToShopMessage)\nJ SadMessage\nADDIU S5 S5 lo(NoCoinsToShopMessage) ; Display NoCoinsToShopMessage\n\n;===Last Turn Message===\nLastTurn:\nLUI S5 hi(LastTurnMessage)\nADDIU S5 S5 lo(LastTurnMessage) ; Display LastTurnMessage\n\nSadMessage:\nJAL LoadBooShop\nLI A0 0x25E ; Boo cry\nSW V0 80(SP) ; Store V0 into 80(SP) (S8)\nSW V1 76(SP) ; Store V1 into 76(SP) (S9)\n\nLI A0 0 ; Display message\nJAL CallMessage\nMOVE A1 S5 ; Pass sad message address on A0\n\nexit:\nLW A0 80(SP) ; Pass shop model pointer on A0\nJAL UnloadBooShop\nLW A1 76(SP) ; Pass Boo model pointer on A1\n\nJAL 0x800DB884 ; ShowDiceRoll\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nJAL SleepProcess\nLI A0 10 ; Wait 10 frames for dice roll to show\n\nLW RA 116(SP)\nLW S0 112(SP)\nLW S1 108(SP)\nLW S2 104(SP)\nLW S3 100(SP)\nLW S4 96(SP)\nLW S5 92(SP)\nLW S6 88(SP)\nLW S7 84(SP)\nJR RA\nADDIU SP SP 120\n\n;===Mini Func to Call Message===\n.align 4\nCallMessage:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\n\n; A0 / S0 = Message or Prompt\n; A1 = Message Address\n\nMOVE S0 A0 ; Copy A0 to S0\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\n; Pass message address on A1\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\nBNEZ S0 CallMessageExit ; If displaying a prompt, exit\nNOP\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\nCallMessageExit:\nLW RA 36(SP)\nLW S0 32(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Prepare Prompt===\n.align 4\nPreparePrompt:\nADDIU SP SP -64\nSW RA 60(SP)\nSW S0 56(SP)\nSW S1 52(SP)\nSW S2 48(SP)\n\n; A0 / S0 = Current Player Index\n; A1 / S1 = Price Table\n; A2 / S2 = Prompt Address\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\nJAL SetupPrices\nMOVE S2 A2 ; Copy A2 to S2\n\nLUI A2 hi(BlackColour)\nADDIU A2 A2 lo(BlackColour) ; Default to black colour\nMOVE A3 A2 ; Copy A2 to A3\nMOVE T4 A2 ; Copy A2 to T4\nMOVE T5 A2 ; Copy A2 to T5\nMOVE T6 A2 ; Copy A2 to T6\nMOVE T7 A2 ; Copy A2 to T7\nMOVE T8 A2 ; Copy A2 to T8\nMOVE T9 A2 ; Copy A2 to T9\nLUI T1 hi(BlueColour)\nADDIU T1 T1 lo(BlueColour) ; Prepare blue colour\n\n; Mushroom colour\nLBU T0 0(V0) ; Load Mushroom setup flag into T0\nBNEZL T0 GetColour2 ; If T0 = 1, get blue colour\nMOVE A2 T1 ; Get blue colour (on likely)\n\n; Plunder Chest / Poison Mushroom colour\nGetColour2:\nLBU T0 1(V0) ; Load setup flag into T0\nBNEZL T0 GetColour3 ; If T0 = 1, get blue colour\nMOVE A3 T1 ; Get blue colour (on likely)\n\n; Dueling Glove / Plunder Chest colour\nGetColour3:\nLBU T0 2(V0) ; Load setup flag into T0\nBNEZL T0 GetColour4 ; If T0 = 1, get blue colour\nMOVE T4 T1 ; Get blue colour (on likely)\n\n; Golden Mushroom / Dueling Glove colour\nGetColour4:\nLBU T0 3(V0) ; Load setup flag into T0\nBNEZL T0 GetColour5 ; If T0 = 1, get blue colour\nMOVE T5 T1 ; Get blue colour (on likely)\n\n; Boo Bell colour\nGetColour5:\nLBU T0 4(V0) ; Load setup flag into T0\nBNEZL T0 GetColour6 ; If T0 = 1, get blue colour\nMOVE T6 T1 ; Get blue colour (on likely)\n\n; Bowser Suit colour\nGetColour6:\nLBU T0 5(V0) ; Load setup flag into T0\nBNEZL T0 GetColour7 ; If T0 = 1, get blue colour\nMOVE T7 T1 ; Get blue colour (on likely)\n\n; Magic Lamp / Lucky Lamp colour\nGetColour7:\nLBU T0 6(V0) ; Load setup flag into T0\nBNEZL T0 GetColour8 ; If T0 = 1, get blue colour\nMOVE T8 T1 ; Get blue colour (on likely)\n\n; Item Bag colour\nGetColour8:\nLBU T0 7(V0) ; Load setup flag into T0\nBNEZL T0 PrintPrompt ; If T0 = 1, get blue colour\nMOVE T9 T1 ; Get blue colour (on likely)\n\n; Print prompt\nPrintPrompt:\nLUI A0 hi(PromptHolder)\nADDIU A0 A0 lo(PromptHolder) ; Parse destination\nMOVE A1 S2 ; Pass prompt address on A1 (string formatter %s)\n; Pass Mushroom colour on A2\n; Pass Plunder Chest / Poison Mushroom colour on A3\nSW T4 16(SP) ; Pass Dueling Glove / Plunder Chest colour on A4\nSW T5 20(SP) ; Pass Golden Mushroom / Dueling Glove colour on A5\nSW T6 24(SP) ; Pass Boo Bell colour on A6\nSW T7 28(SP) ; Pass Bowser Suit colour on A7\nSW T8 32(SP) ; Pass Magic Lamp / Lucky Lamp colour on A8\nSW T9 36(SP) ; Pass Item Bag colour on A9\nJAL sprintf\nSW R0 40(SP) ; Terminator byte\n\nLW RA 60(SP)\nLW S0 56(SP)\nLW S1 52(SP)\nLW S2 48(SP)\nJR RA\nADDIU SP SP 64\n\n.align 4\nBlueColour:\n.byte 0x06,0\n\n.align 4\nBlackColour:\n.byte 0x01,0\n\n;===Mini Func to Setup Prices===\n.align 4\nSetupPrices:\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\nSW S3 28(SP)\n\n; A0 / S0 = Current Player Index\n; A1 / S1 = Price Table\n; S2 = Loop Counter\n; S3 / V0 = Price Setup Array\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\nLI S2 0 ; Start counter at 0\nLUI S3 hi(PriceSetup)\nADDIU S3 S3 lo(PriceSetup)\nSetupPricesLoop:\nMOVE A0 S0 ; Pass current player index on A0\nJAL PlayerHasCoins\nLBU A1 0(S1) ; Pass nth item price on A1\nSB V0 0(S3) ; Store setup flag into array\nLI T0 6\nBEQ S2 T0 FinishSetupPrices ; If all items checked, finish\nNOP\nADDIU S1 S1 1 ; Add 1 to get next item price\nADDIU S2 S2 1 ; Add 1 to loop counter\nJ SetupPricesLoop\nADDIU S3 S3 1 ; Add 1 to store next price\n\nFinishSetupPrices:\nMOVE A0 S0 ; Pass current player index on A0\nJAL PlayerHasCoins\nLI A1 30 ; Check for 30 coins\nSB V0 1(S3) ; Store setup flag into array\n\nADDIU V0 S3 -6 ; Pass price setup array on V0\n\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nLW S3 28(SP)\nJR RA\nADDIU SP SP 48\n\n.align 8\nPriceSetup:\n.fill 8\n\n;===Mini Func to Disable Items===\n.align 4\nDisableItems:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; S0 = Price Setup Array\n; S1 = Option Counter\n\nLUI S0 hi(PriceSetup)\nADDIU S0 S0 lo(PriceSetup)\nLI S1 0 ; Start with 0th option\nDisableItemsLoop:\nLBU T0 0(S0) ; Load setup flag\nBNEZ T0 SkipDisabling ; If setup flag enabled, skip disabling\nNOP\nLI A0 2 ; Window ID\nJAL DisablePromptOption\nMOVE A1 S1 ; Disable nth option\n\nSkipDisabling:\nLI T0 7 ; All options (0-7)\nBEQ S1 T0 DisableItemsExit ; If all options checked, exit\nNOP\nADDIU S0 S0 1 ; Add 1 to get next setup flag\nJ DisableItemsLoop\nADDIU S1 S1 1 ; Add 1 to check next option\n\nDisableItemsExit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Determine AI Logic===\n.align 4\nAILogic:\nADDIU SP SP -40\nSW RA 36(SP)\nSW S0 32(SP)\nSW S1 28(SP)\n\n; A0 / S0 = Current Player Index\n; A1 / S1 = Current Player Placement\n\nMOVE S0 A0 ; Copy A0 to S0\nMOVE S1 A1 ; Copy A1 to S1\n\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 30 ; Check for 30 coins\n\nBNEZ V0 ItemBagChoice ; If CPU has 30 coins, go to ItemBagChoice\nNOP\n\nBEQZ S1 FirstCPU ; If CPU is in 1st place, go to FirstCPU\nNOP\n\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 20 ; Check for 20 coins\n\nBNEZ V0 ConsiderAllItems\nNOP\n\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 15 ; Check for 15 coins\n\nBNEZ V0 FifteenCoinChoice\nNOP\n\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 10 ; Check for 10 coins\n\nBNEZ V0 TenCoinChoice\nNOP\n; else, CPU has 5 coins\nJAL RNGPercentChance\nLI A0 50 ; 50% chance of V0 = 1\n\nBEQZ V0 AIExit\nNOP\nJ AIExit\nLI V0 9 ; Choose exit\n\nTenCoinChoice:\nJAL GetRand\nLI A0 5 ; Get random byte (0-5) at V0\n\nLI T0 4\nBNE V0 T0 AIExit ; Choose 0-3,5\nNOP\nJ AIExit\nLI V0 9 ; Choose exit\n\nFifteenCoinChoice:\nJAL GetRand\nLI A0 6 ; Get random byte (0-6) at V0\n\nLI T0 6\nBNE V0 T0 AIExit ; Choose 0-5\nNOP\nJ AIExit\nLI V0 9 ; Choose exit\n\nFirstCPU:\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 15 ; Check for 15 coins\n\nBNEZ V0 ConsiderAllItems\nNOP\n\nMOVE A0 S0 ; Check CPU\nJAL PlayerHasCoins\nLI A1 10 ; Check for 10 coins\n\nBNEZ V0 FirstTenCoinChoice\nNOP\n; else, CPU has 5 coins\nJAL GetRand\nLI A0 2 ; Get random byte (0-2) at V0\n\nLI T0 2\nBNE V0 T0 AIExit ; Choose 0-1\nNOP\nJ AIExit\nLI V0 9 ; Choose exit\n\nFirstTenCoinChoice:\nJAL GetRand\nLI A0 6 ; Get random byte (0-6) at V0\n\nPastBooBell:\nSLTI T0 V0 4 ; If V0 < 4, T0 = 1\nBNEZ T0 AIExit\nNOP\nJ CorrectExit\nADDIU V0 V0 1 ; Add 1 if V0 = 4-6 to get 5-7\n\nConsiderAllItems:\nJAL GetRand\nLI A0 7 ; Get random byte (0-7) at V0\n\nCorrectExit:\nSLTI T0 V0 7 ; If V0 < 7, T0 = 1\nBNEZ T0 AIExit\nNOP\nJ AIExit\nADDIU V0 V0 2 ; Add 2 if V0 = 7 to choose exit\n\nItemBagChoice:\nJAL GetRand\nLI A0 7 ; Get random byte (0-7) at V0\n\nAIExit:\nLW RA 36(SP)\nLW S0 32(SP)\nLW S1 28(SP)\nJR RA\nADDIU SP SP 40\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Item Table===\n.align 16\nItemTable:\n.byte 0x00 ; Mushroom\n.byte 0x06 ; Plunder Chest\n.byte 0x08 ; Dueling Glove\n.byte 0x0A ; Golden Mushroom\n.byte 0x0B ; Boo Bell\n.byte 0x0D ; Bowser Suit\n.byte 0x0E ; Magic Lamp\n\n;===Price Table===\n.align 16\n.byte 5 ; Mushroom price\n.byte 10 ; Plunder Chest price\n.byte 10 ; Dueling Glove price\n.byte 10 ; Golden Mushroom price\n.byte 15 ; Boo Bell price\n.byte 10 ; Bowser Suit price\n.byte 20 ; Magic Lamp price\n\n;===1st Place Item Table===\n.align 16\nFirstItemTable:\n.byte 0x00 ; Mushroom\n.byte 0x02 ; Poison Mushroom\n.byte 0x06 ; Plunder Chest\n.byte 0x08 ; Dueling Glove\n.byte 0x0B ; Boo Bell\n.byte 0x0D ; Bowser Suit\n.byte 0x09 ; Lucky Lamp\n\n;===1st Place Price Table===\n.align 16\n.byte 5 ; Mushroom price\n.byte 5 ; Poison Mushroom price\n.byte 10 ; Plunder Chest price\n.byte 10 ; Dueling Glove price\n.byte 15 ; Boo Bell price\n.byte 10 ; Bowser Suit price\n.byte 10 ; Lucky Lamp price\n\n;===Item Bag 1st Chances Table===\n.align 16\nItemBagChancesTable:\n.byte 15 ; Mushroom (0-14) 15%\n.byte 30 ; Skeleton Key (15-29) 15%\n.byte 49 ; Poison Mushroom (30-48) 19%\n.byte 59 ; Cellular Shopper (49-58) 10%\n.byte 78 ; Lucky Lamp (59-77) 19%\n.byte 88 ; Golden Mushroom (78-87) 10%\n.byte 93 ; Boo Repellant (88-92) 5%\n.byte 98 ; Magic Lamp (93-97) 5%\n.byte 99 ; Koopa Kard (98) 1%\n.byte 100 ; Lucky Charm (99) 1%\n\n;===Item Bag 2nd Chances Table===\n.align 16\n.byte 14 ; Mushroom (0-13) 14%\n.byte 28 ; Skeleton Key (14-27) 14%\n.byte 42 ; Poison Mushroom (28-42) 14%\n.byte 52 ; Cellular Shopper (43-51) 10%\n.byte 66 ; Lucky Lamp (52-65) 14%\n.byte 76 ; Golden Mushroom (66-75) 10%\n.byte 88 ; Boo Repellant (76-87) 12%\n.byte 98 ; Magic Lamp (88-97) 10%\n.byte 99 ; Koopa Kard (98) 1%\n.byte 100 ; Lucky Charm (99) 1%\n\n;===Item Bag 3rd Chances Table===\n.align 16\n.byte 10 ; Mushroom (0-9) 10%\n.byte 24 ; Skeleton Key (10-23) 14%\n.byte 34 ; Poison Mushroom (24-33) 10%\n.byte 49 ; Cellular Shopper (34-48) 15%\n.byte 59 ; Lucky Lamp (49-58) 10%\n.byte 74 ; Golden Mushroom (59-73) 15%\n.byte 84 ; Boo Repellant (74-83) 10%\n.byte 96 ; Magic Lamp (84-95) 12%\n.byte 98 ; Koopa Kard (96-97) 2%\n.byte 100 ; Lucky Charm (98-99) 2%\n\n;===Item Bag 4th Chances Table===\n.align 16\n.byte 5 ; Mushroom (0-4) 5%\n.byte 20 ; Skeleton Key (5-19) 15%\n.byte 25 ; Poison Mushroom (20-24) 5%\n.byte 37 ; Cellular Shopper (25-36) 12%\n.byte 42 ; Lucky Lamp (37-41) 5%\n.byte 62 ; Golden Mushroom (42-61) 20%\n.byte 72 ; Boo Repellant (62-71) 10%\n.byte 87 ; Magic Lamp (72-86) 15%\n.byte 97 ; Koopa Kard (87-96) 10%\n.byte 100 ; Lucky Charm (96-99) 3%\n\n;===Item Bag Table===\n.align 16\nItemBagTable:\n.byte 0x00 ; Mushroom\n.byte 0x01 ; Skeleton Key\n.byte 0x02 ; Poison Mushroom\n.byte 0x04 ; Cellular Shopper\n.byte 0x09 ; Lucky Lamp\n.byte 0x0A ; Golden Mushroom\n.byte 0x0C ; Boo Repellant\n.byte 0x0E ; Magic Lamp\n.byte 0x0F ; Koopa Kard\n.byte 0x11 ; Lucky Charm\n\n;===Message Text===\n.align 16\nGreetingPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Hehe\"\n.byte 0x82 ; Comma (,)\n.ascii \" hello there\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Welcome to the carnival\"\n.byte 0x06 ; Blue font\n.ascii \" item shop\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Oh\"\n.byte 0x82,0x03 ; Comma (,), Red font\n.ascii \" Toad\"\n.byte 0x08,0x5C ; White font, Apostrophe (')\n.ascii \"s not in today\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"But what can I do for you\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Buy an item\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Nothing\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"View map\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nShopPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"What would you like to buy\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Mushroom font colour\n.ascii \"Mushroom\"\n.byte 0x0E,0x0E,0x0E,0x0E ; Mushroom tab formatters x4\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Plunder Chest font colour\n.ascii \"Plunder Chest\"\n.byte 0x0E,0x0E,0x0E ; Plunder Chest tab formatters x3\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Dueling Glove font colour\n.ascii \"Dueling Glove\"\n.byte 0x0E,0x0E,0x0E ; Dueling Glove tab formatters x3\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Golden Mushroom font colour\n.ascii \"Golden Mushroom\"\n.byte 0x0E ; Golden Mushroom tab formatters x1\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Boo Bell font colour\n.ascii \"Boo Bell\"\n.byte 0x0E,0x0E,0x0E,0x0E,0x0E ; Boo Bell tab formatters x5\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"15\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Bowser Suit font colour\n.ascii \"Bowser Suit\"\n.byte 0x0E,0x0E,0x0E ; Bowser Suit tab formatters x3\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Magic Lamp font colour\n.ascii \"Magic Lamp\"\n.byte 0x0E,0x0E,0x0E,0x0E ; Magic Lamp tab formatters x4\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"20\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Item Bag font colour\n.ascii \"Item Bag\"\n.byte 0x0E,0x0E,0x0E,0x0E,0x0E ; Item Bag tab formatters x5\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"30\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Item Descriptions\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Back\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nFirstShopPrompt:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"What would you like to buy\"\n.byte 0xC3 ; Question mark (?)\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Mushroom font colour\n.ascii \"Mushroom\"\n.byte 0x0E,0x0E,0x0E,0x0E ; Mushroom tab formatters x4\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Poison Mushroom font colour\n.ascii \"Poison Mushroom\"\n.byte 0x0E ; Poison Mushroom tab formatters x1\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \" 5\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Plunder Chest font colour\n.ascii \"Plunder Chest\"\n.byte 0x0E,0x0E,0x0E ; Plunder Chest tab formatters x3\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Dueling Glove font colour\n.ascii \"Dueling Glove\"\n.byte 0x0E,0x0E,0x0E ; Dueling Glove tab formatters x3\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Boo Bell font colour\n.ascii \"Boo Bell\"\n.byte 0x0E,0x0E,0x0E,0x0E,0x0E ; Boo Bell tab formatters x5\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"15\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Bowser Suit font colour\n.ascii \"Bowser Suit\"\n.byte 0x0E,0x0E,0x0E ; Bowser Suit tab formatters x3\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Lucky Lamp font colour\n.ascii \"Lucky Lamp\"\n.byte 0x0E,0x0E,0x0E ; Lucky Lamp tab formatters x3\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"10\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"%s\" ; Item Bag font colour\n.ascii \"Item Bag\"\n.byte 0x0E,0x0E,0x0E,0x0E,0x0E ; Item Bag tab formatters x5\n.byte 0x08,0x29,0x3E ; White font,Coin icon, Multiply (x)\n.ascii \"30\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Item Descriptions\"\n.byte 0x0D ; End option\n.byte 0x0A ; New line (writes below)\n.byte 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A ; Character image + option indent\n.byte 0x0C ; Start option\n.ascii \"Back\"\n.byte 0x0D ; End option\n.byte 0 ; End prompt\n\n.align 16\nGotItemMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Hope you have fun at the carnival\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"May you find yourself in\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"high spirits\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" Eeheehee\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nTooManyItemsMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Hey buddy\"\n.byte 0x82 ; Comma (,)\n.ascii \" try using your\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"items before buying more\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nNoCoinsToShopMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Oh\"\n.byte 0x82 ; Comma (,)\n.ascii \" boohoo\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"You don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t have enough\"\n.byte 0x07 ; Yellow font\n.ascii \" coins\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Try winning more games\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n.align 16\nLastTurnMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Hope you had fun at the carnival\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"I\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"m out of items\"\n.byte 0x85 ; Period (.)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"Please come back next time\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n\n;===Prompt Holder===\n.align 16\nPromptHolder:\n.fill 0x1024,0\n\n;===Mini Func to Load Boo Shop===\n.align 4\nLoadBooShop:\nADDIU SP SP -80\nSW RA 76(SP)\nSW S0 72(SP)\nSW S1 68(SP)\nSW S2 64(SP)\nSW S3 60(SP)\nSW S4 56(SP)\nSW S5 52(SP)\n\n; S0 = Shop Model (0 or 1)\n; S1 / V0 = Shop Model Pointer\n; S2 = Current Space Data\n; S3 = Shop Space Data\n; S4 / V1 = Boo Model Pointer\n; A0 / S5 = Boo voice\n; 32(SP) = Midpoint Coords\n\n; Prepare shop model\nMOVE S5 A0 ; Copy A0 to S5\nJAL RNGPercentChance\nLI A0 33 ; 33% chance of V0 = 1\nSUBU S0 R0 V0\nANDI S0 S0 0x31 ; AND with 49\nORI S0 S0 0x30 ; OR with 48\nJAL PlaySound\nLI A0 276 ; Shop opening sound\nANDI A0 S0 0xFF ; AND with -1\nJAL 0x800D90C8 ; GetModelPointer\nLI A1 0\nMOVE S1 V0 ; Copy V0 to S1\nJAL 0x800D9714\nMOVE A0 S1 ; Pass model pointer on A0\n\n;Get space data\nJAL GetCurrentSpaceIndex ; Get current space index at V0\nNOP\nJAL GetSpaceData\nMOVE A0 V0 ; Get current space data at V0\nMOVE S2 V0 ; Copy V0 to S2\nJAL GetSpaceData\nLI A0 ShopSpace ; Get shop space data at V0\nMOVE S3 V0 ; Copy V0 to S3\n\n;Set shop model to space\nADDIU A0 SP 32 ; Store midpoint xyz coords in 32(SP)\nADDIU A1 S2 8 ; Current space coords\nJAL midpoint\nADDIU A2 S3 8 ; Shop space coords\nJAL 0x800D88E8 ; SpaceAngleHelper\nADDIU A0 SP 32 ; Fix-up midpoint coords\nADDIU A0 S1 0x18 ; Pass model x2 coords on A0\nJAL 0x80089A20 ; StoreCoords (to face)\nADDIU A1 SP 32 ; Pass midpoint coords on A1\nSW R0 0x28(S1)\nMOVE A0 S1 ; Pass model pointer on A0\nLI A1 -1\nJAL 0x800D9CE8\nLI A2 1\nJAL 0x800D9A40\nMOVE A0 S1 ; Pass model pointer on A0\nADDIU A0 S1 0x0C ; Pass model x coords on A0\nJAL 0x80089A20 ; StoreCoords (to stand)\nADDIU A1 S3 8 ; Pass shop space coords on A1\n\n;Prepare Boo model\nLI A0 10 ; Boo model\nLUI A1 hi(BooHelper)\nJAL 0x800D90C8 ; GetModelPointer\nADDIU A1 A1 lo(BooHelper)\nMOVE S4 V0 ; Copy V0 to S4\nJAL 0x800D9714\nMOVE A0 S4 ; Pass model pointer on A0\n\n;Set Boo model to space\nADDIU A0 S4 0x18 ; Pass model x2 coords on A0\nJAL 0x80089A20 ; StoreCoords (to face)\nADDIU A1 SP 32 ; Pass midpoint coords on A1\nADDIU A0 S4 0x0C ; Pass model x coords on A0\nJAL 0x80089A20 ; StoreCoords (to stand)\nADDIU A1 S3 8 ; Pass shop space coords on A1\nLI AT 0x41800000 ; 16.000000\nSW AT 0x10(S4) ; Set y coords\n\n;Set floats\nLI AT 0x3F990000 ; 1.195312\nORI AT AT 0x999A\nMTC1 AT F0\nSWC1 F0 0x2C(S4)\nSWC1 F0 0x24(S4)\nSWC1 F0 0x28(S4)\nJAL 0x800D9B24\nMOVE A0 S4 ; Pass Boo model pointer on A0\nLI AT 0x42480000 ; 50.000000\nMTC1 AT F12\nJAL 0x8008EF20\nNOP\nLI AT 0x3F800000 ; 1.000000\nMTC1 AT F2\nNOP\nDIV.S F22 F2 F0\nMTC1 R0 F20\nJAL FloatHelper1\nNOP\nBranch94C:\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nSWC1 F0 0x28(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nSWC1 F0 0x24(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nJAL SleepVProcess\nSWC1 F0 0x2C(S1)\nADD.S F20 F20 F30\nC.LT.S F20 F28\nNOP\nBC1T Branch94C\nNOP\nLI AT 0x42480000 ; 50.000000\nMTC1 AT F0\nNOP\nC.LT.S F0 F20\nNOP\nBC1F BranchA54\nNOP\nJAL FloatHelper1\nNOP\nBranch9F4:\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nSWC1 F0 0x28(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nSWC1 F0 0x24(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nJAL SleepVProcess\nSWC1 F0 0x2C(S1)\nSUB.S F20 F20 F30\nC.LT.S F28 F20\nNOP\nBC1T Branch9F4\nNOP\nBranchA54:\nLI AT 0x3F800000 ; 1.000000\nMTC1 AT F0\nNOP\nSWC1 F0 0x2C(S4)\nSWC1 F0 0x24(S4)\nSWC1 F0 0x28(S4)\nJAL 0x800D9A40\nMOVE A0 S4 ; Pass Boo model pointer on A0\nMOVE A0 S1 ; Pass shop model pointer on A0\nLI A1 -1\nJAL 0x800D9CE8\nLI A2 0\nLW V0 0x3C(S1)\nLW V0 0x40(V0)\nLH A0 0(V0)\nLUI A1 0x3F99\nJAL 0x8001C92C\nORI A1 A1 0x999A\nBranchA9C:\nJAL 0x800D9E0C\nMOVE A0 S1 ; Pass shop model pointer on A0\nANDI V0 V0 0xFFFF\nBNEZ V0 BranchAC0\nLI A1 0\nJAL SleepVProcess\nNOP\nJ BranchA9C\nNOP\nBranchAC0:\nMOVE A0 S4 ; Pass Boo model pointer on A0\nJAL 0x800D9CE8\nLI A2 0\nJAL PlaySound\nMOVE A0 S5 ; Pass Boo voice on A0\nBranchB3C:\nJAL 0x800D9E0C\nMOVE A0 S4 ; Pass Boo model pointer on A0\nANDI V0 V0 0xFFFF\nBNEZ V0 BranchB60\nLI A1 -1\nJAL SleepVProcess\nNOP\nJ BranchB3C\nNOP\nBranchB60:\nMOVE A0 S4 ; Pass Boo model pointer on A0\nJAL 0x800D9CE8\nLI A2 2\n\nMOVE V0 S1 ; Copy S1 to V0\nMOVE V1 S4 ; Copy S4 to V1\n\nLW RA 76(SP)\nLW S0 72(SP)\nLW S1 68(SP)\nLW S2 64(SP)\nLW S3 60(SP)\nLW S4 56(SP)\nLW S5 52(SP)\nJR RA\nADDIU SP SP 80\n\n.align 4\nFloatHelper1:\nLI AT 0x3E4C0000 ; 0.199219\nORI AT AT 0xCCCD\nMTC1 AT F26\nLI AT 0x3F4C0000 ; 0.796875\nORI AT AT 0xCCCD\nMTC1 AT F24\nLI AT 0x41340000 ; 11.250000\nMTC1 AT F30\nLI AT 0x42B40000 ; 90.000000\nMTC1 AT F28\nNOP\nJR RA\nNOP\n\n.align 32\nBooHelper:\n.word 0x00000001\n.word 0x000A00B5 ; Animation 10/181\n\n;===Mini Func to Unload Boo Shop===\n.align 4\nUnloadBooShop:\nADDIU SP SP -80\nSW RA 76(SP)\nSW S1 72(SP)\nSW S4 68(SP)\n\n; A0 / S1 = Shop Model Pointer\n; A1 / S4 = Boo Model Pointer\n\nMOVE S1 A0 ; Copy A0 to S1\nMOVE S4 A1 ; Copy A1 to S4\n\nJAL PlaySound\nLI A0 277 ; Shop closing sound?\nMOVE A0 S1 ; Pass shop model pointer on A0\nLI A1 -1\nJAL 0x800D9CE8\nLI A2 4\nLW V0 0x3C(S1)\nLW V0 0x40(V0)\nLH A0 0(V0)\nLUI A1 0x3F99\nJAL 0x8001C92C\nORI A1 A1 0x999A\nLW V0 0x3C(S1)\nLW V0 0x40(V0)\nLH A0 0(V0)\nLUI V1 hi(0x800D03F8)\nLW V1 lo(0x800D03F8)(V1)\nSLL V0 A0 1\nADDU V0 V0 A0\nSLL V0 V0 6\nADDU V0 V0 V1\nLBU V1 2(V0)\nLUI A1 hi(0x800CCF58)\nLW A1 lo(0x800CCF58)(A1)\nSLL V0 V1 1\nADDU V0 V0 V1\nSLL V0 V0 3\nADDU V0 V0 A1\nLH V0 2(V0)\nMTC1 V0 F4\nNOP\nCVT.S.W F4 F4\nMFC1 A1 F4\nJAL 0x8001C6A8\nNOP\nCrossing728:\nJAL 0x800D9E80\nMOVE A0 S1 ; Pass shop model pointer on A0\nANDI V0 V0 0xFFFF\nBNEZ V0 Crossing74C\nNOP\nJAL SleepVProcess\nNOP\nJ Crossing728\nNOP\nCrossing74C:\nJAL 0x800D9B24\nMOVE A0 S4 ; Pass Boo model pointer on A0\nLI AT 0x42480000 ; 50.000000\nMTC1 AT F12\nJAL 0x8008EF20\nNOP\nLI AT 0x3F800000 ; 1.000000\nMTC1 AT F2\nNOP\nDIV.S F22 F2 F0\nLI AT 0x42480000 ; 50.000000\nMTC1 AT F20\nJAL FloatHelper1\nNOP\nCrossing7A8:\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nSWC1 F0 0x28(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nSWC1 F0 0x24(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nJAL SleepVProcess\nSWC1 F0 0x2C(S1)\nADD.S F20 F20 F30\nC.LT.S F20 F28\nNOP\nBC1T Crossing7A8\nNOP\nLI AT 0x42B40000 ; 90.000000\nMTC1 AT F20\nLI AT 0x3E4C0000 ; 0.199219\nORI AT AT 0xCCCD\nMTC1 AT F26\nLI AT 0x3F4C0000 ; 0.796875\nORI AT AT 0xCCCD\nMTC1 AT F24\nLI AT 0x41340000 ; 11.250000\nMTC1 AT F30\nMTC1 R0 F28\nNOP\nCrossing838:\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nSWC1 F0 0x28(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nSWC1 F0 0x24(S1)\nJAL 0x8008EF20\nMOV.S F12 F20\nMUL.S F0 F0 F22\nNOP\nMUL.S F0 F0 F26\nADD.S F0 F0 F24\nJAL SleepVProcess\nSWC1 F0 0x2C(S1)\nSUB.S F20 F20 F30\nC.LT.S F28 F20\nNOP\nBC1T Crossing838\nNOP\nSW R0 0x28(S1)\nSW R0 0x24(S1)\nSW R0 0x2C(S1)\nJAL 0x800D9B54 ; RemoveModel\nMOVE A0 S1 ; Pass shop model pointer on A0\nJAL 0x800D9B54 ; RemoveModel\nMOVE A0 S4 ; Pass Boo model pointer on A0\n\nLW RA 76(SP)\nLW S1 72(SP)\nLW S4 68(SP)\nJR RA\nADDIU SP SP 80"},"Shady Boo v2":{"language":0,"code":"; NAME: Shady Boo v2\n; GAMES: MP3_USA\n; EXECUTION: Direct\n; PARAM: Space|ShadyBoo\n\nADDIU SP SP -48\nSW RA 44(SP)\nSW S0 40(SP)\nSW S1 36(SP)\nSW S2 32(SP)\n\n; S0 = Current Player Struct\n; S1 = Empty Slot Offset / Coins Gained\n\n;===Rotate Toward Boo Bellhouse===\nLI A0 -1 ; Set current player\nLI A1 8 ; Rotate in 8 frames\nJAL RotatePlayerModel\nLI A2 ShadyBoo ; Face ShadyBoo\n\n;===Boo Bellhouse Message===\nJAL PlaySound\nLI A0 0x257 ; Boo laugh\n\nSW R0 16(SP) ; A4\nSW R0 20(SP) ; A5\nSW R0 24(SP) ; A6\nLI A0 0x7 ; Character image (-1 for none, 0x7 for Boo)\n; Visit the following link to get the full list of Character Images\n; https://github.com/PartyPlanner64/PartyPlanner64/wiki/Displaying-Messages\n; If you use a character image, check the bottom of the code\nLUI A1 hi(ShadyMessage)\nADDIU A1 A1 lo(ShadyMessage) ; Display ShadyMessage\nLI A2 0\nJAL ShowMessage\nLI A3 0\n\n; Obligatory message box closing/cleanup calls.\nJAL 0x800EC9DC\nNOP\nJAL CloseMessage\nNOP\nJAL 0x800EC6EC\nNOP\n\n;===Check Player Item Slots===\nJAL GetPlayerStruct\nLI A0 -1 ; Get current player struct at V0\nMOVE S0 V0 ; Copy V0 to S0\n\nJAL PlayerHasEmptyItemSlot\nLBU A0 0x1D(S0) ; Pass current player index on A0\n\nBLTZ V0 GetCoins ; If V0 < 0 (no empty slots), get coins\nNOP\nMOVE S1 V0 ; Copy V0 to S1\n\n;===Determine Item===\nJAL GetPlayerPlacement\nLBU A0 0x1D(S0) ; Get current player placement (0-3) at V0\nSLL V0 V0 1 ; Shift left by 1 (multiply by 2)\nJAL GetRand ; Get random byte (0-1,3,5,7) at V0\nADDIU A0 V0 1 ; Add 1 to get possible items\n\n;===Receive Item===\nLUI T0 hi(ItemTable)\nADDIU T0 T0 lo(ItemTable) ; Load item table into T0\nADDU T0 T0 V0 ; Add item offset to item table\nLBU T0 0(T0) ; Load item into T0\nADDU S1 S0 S1 ; Add empty slot offset to player struct\nSB T0 0x18(S1) ; Store item into empty slot offset of player struct\n\nJAL PlaySound\nLI A0 0x10C ; Turn Start sound\n\nJ HappyVoice\nNOP\n\n;===Get Coins===\nGetCoins:\nJAL GetRandomByte ; Get random byte (0-255) at V0\nNOP\nLI T0 16\nDIVU V0 T0 ; Divide V0 by T0\nMFHI S1 ; Store remainder into S1\nADDIU S1 S1 5 ; Add 5\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL AdjustPlayerCoinsGradual\nMOVE A1 S1 ; Gain coins\n\nLBU A0 0x1D(S0) ; Give current player coins\nJAL ShowPlayerCoinChange\nMOVE A1 S1 ; Gain coins\n\nJAL SleepProcess\nLI A0 30 ; Wait 30 frames for coin change\n\n;===Play Happy Voice and Animation===\nHappyVoice:\nLBU A0 3(S0) ; Load character value from offset of player struct\nJAL PlaySound\nADDIU A0 A0 0x2BE ; Add character value to Mario's happy voice\n; Character voices are their \"character value\" distance away from\n; Mario's, e.g. Luigi's character value = 1, so Luigi's happy voice\n; is 1 away from Mario's.\n; 0x2BE = Happy Voice, 0x287 = Sad Voice\n\nLI A0 -1 ; Set current player\nLI A1 5 ; Set joy animation\nJAL SetBoardPlayerAnimation\nLI A2 0 ; Do not loop animation\n\nJAL SleepProcess\nLI A0 40 ; Wait 40 frames for animation\n\nexit:\nLW RA 44(SP)\nLW S0 40(SP)\nLW S1 36(SP)\nLW S2 32(SP)\nJR RA\nADDIU SP SP 48\n\n;===Mini Func to Get Random Byte===\n.align 4\nGetRand: ; returns on V0\n\n; A0 = max byte\n\nADDIU sp, sp, -0x18\nSW ra, 0x0010 (sp)\nBLTZL a0, label1_func0\nSUBU a0, r0, a0\nlabel1_func0:\nBEQZ a0, End1\nDADDU v0, r0, r0\nADDIU v0, r0, 0x0001\nBNEL a0, v0, label2_func0\nADDIU v0, r0, 0x0064\nJAL Function1\nADDIU a0, r0, 0x03E8\nSLTI v0, v0, 0x01F5\nJ End1\nXORI v0, v0, 0x0001\nlabel2_func0:\nBEQ a0, v0, label3_func0\nNOP\nJAL Function1\nNOP\nJ End1\nNOP\nlabel3_func0:\nJAL Function1\nADDIU a0, r0, 0x03F1\nLUI v1, 0x6666\nORI v1, v1, 0x6667\nMULT v0, v1\nSRA v0, v0, 31\nMFHI a1\nSRA v1, a1, 2\nSUBU v0, v1, v0\nEnd1:\nLW ra, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x18\n//\nFunction1:\nADDIU sp, sp, -0x20\nSW s0, 0x0010 (sp)\nADDIU s0, r0, 0xFFFF\nSW s1, 0x0014 (sp)\nADDIU s1, a0, 0x0001\nBNEZ s1, label1_func1\nDIVU s0, s1\nBREAK 0x01C00\nlabel1_func1:\nMFLO s0\nBNEZ s0, label2_func1\nSW ra, 0x0018 (sp)\nADDIU s0, r0, 0x0001\nlabel2_func1:\nJAL Function2\nNOP\nBNEZ s0, label3_func1\nDIVU v0, s0\nBREAK 0x01C00\nlabel3_func1:\nMFLO v1\nSLTU v0, v1, s1\nBEQZ v0, label2_func1\nDADDU v0, v1, r0\nLW ra, 0x0018 (sp)\nLW s1, 0x0014 (sp)\nLW s0, 0x0010 (sp)\nJR RA\nADDIU sp, sp, 0x20\n//\nFunction2:\nLUI v0, 0x8009\nLW v0, 0x7650 (v0)\nLUI v1, 0x41C6\nORI v1, v1, 0x4E6D\nMULT v0, v1\nMFLO v0\nADDIU v0, v0, 0x3039\nLUI v1, 0x8009\nJR RA\nSW v0, 0x7650 (v1)\n\n;===Item Table===\n.align 16\nItemTable:\n.byte 0x01 ; Skeleton Key index\n.byte 0x03 ; Reverse Mushroom index\n.byte 0x04 ; Cellular Shopper index\n.byte 0x06 ; Plunder Chest index\n.byte 0x09 ; Lucky Lamp index\n.byte 0x0E ; Magic Lamp index\n.byte 0x0F ; Koopa Kard index\n.byte 0x10 ; Barter Box index\n\n;===Message Text===\n.align 16\nShadyMessage:\n.byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image\n.ascii \"Psst\"\n.byte 0xC2 ; Exclamation mark (!)\n.ascii \" Take\"\n.byte 0x06 ; Blue font\n.ascii \" this\"\n.byte 0x08,0xC2 ; White font, Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"It\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s a secret to everybody\"\n.byte 0xC2 ; Exclamation mark (!)\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"And don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t ask me how I got this\"\n.byte 0x85 ; Period (.)\n.ascii \" It\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"s\"\n.byte 0x0A,0x1A,0x1A,0x1A,0x1A ; New line + character image padding\n.ascii \"better if you don\"\n.byte 0x5C ; Apostrophe (')\n.ascii \"t know\"\n.byte 0x85,0x85,0x85 ; Three periods (...)\n.byte 0xFF,0 ; Wait, press A to confirm\n\n; Here's a list of the most common bytes you'll need\n; .byte 0x01 ; Black font\n; .byte 0x03 ; Red font\n; .byte 0x04 ; Purple font\n; .byte 0x05 ; Green font\n; .byte 0x06 ; Blue font\n; .byte 0x07 ; Yellow font\n; .byte 0x08 ; White font\n; .byte 0x85 ; Period (.)\n; .byte 0xC2 ; Exclamation mark (!)\n; .byte 0xC3 ; Question mark (?)\n; .byte 0x82 ; Comma (,)\n; .byte 0x0A ; New line (writes below)\n; .byte 0x5C ; Apostrophe (')\n; .byte 0x29 ; Coin icon\n; .byte 0x3D ; Minus (-)\n; .byte 0x3E ; Multiply (x)\n; .byte 0xFF,0 ; Wait, press A to confirm\n\n; If your message has an image, use this at the start of each line\n; .byte 0x1A,0x1A,0x1A,0x1A ; Padding for character image"}},"bg":{"width":1152,"height":864,"src":"data:image/png;base64,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MQm8gV2Oy8YuweqR1VDVkDpSGBGIMXDOMZQv4MqVV6AwlcP/FA/3jdjSC1U5zelfndJsCMUVJTQorWOjzpnvJ8Oq05ozQceyPe7COCOtClu3GsOddAfy63glhWanxS29ofl9nYzjqIWfbgoraRWteiWidDonRCkCdRL502uC7mc3opTiTjlrtb5EVSTZb9phkC9YvKIme3kfpnXcR41TyHHW+mnGKe60et8nrl/ru0ZQ2v21breC77Ygk4T96NRvpaigkALQL2ZvwHXrrolmD6T0/VZnLSHOORQAl05egnefBu6T/0GRQERsTrRfR5hIn+GUVuMurLPn53hbje92dRr8fE67ffaKZkozYUSgOMWf5s9pJ6y063bn5NGHn4h1XwHgZ950XaKvtx8xvBtzT5DrFmTfO5mrwuxTkOipILjNR9b8sz/weW113lpd56DdBT3nxS3+14mW539L8HHqtl93oFEEahUFlGYbwO/6m/Rjd8Ov8NP8nhtufCtuuesez7+7r49EIC/SKAKlaX+jFIUGNSoosAD0KrEMr135mp7s7NxcGYrCUShkgZoABACXTl4MTEn8i3yEPO4IoRC51s4wiUL9K6wkiXYpc50KDO2cDq8x7vfb4qjuOfu+C+U8duhQhukIE8jxcjnOOEWUVsKKl6jid37rlmj16MNPJDYaKM57I+h9HG5d8h/9E2SOcgolweeqPV05X37OWeuI3s6jprwibbzPm//z0/r4wp3jOG2fOO6XOLaZtmhlt7SuW2+/vf66H+GnFbfefjs+0yZtrF98pLQXVe6HSCXnsXQSGbTng98cKL83sAC0c+RnkcvkYtkZt8LQpikwNTWDn/z0BJ7afRrZLMcbX78eW7eswshIARwAFAWXTl6C26asSCABCYKIExKFojG+e1UHKGphJKmfHaaTStzObaepENHdU8EcJmfx1LApDn72vZ3447eBQpi/6VRU6Zb44/y8JIlA7cZFt0XxMA6p39SvtHdBirroczfHWCeFl70KQftN3wqzRqcxEqaT+y5Mypmvv9kC34W83fCK7vlMBOKPzSBE+aRdLOn34wojBg1SNFAgAegycQE2L98U2844u4NVqwYOHT6NH+4+hsNHSvX3VKsC33roCP7j+8dw5RUrcPllF2B0NA8uJS5ZcTF+aUriPnwPkkSg9CMkoJup2d12opD986CK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","fov":15,"scaleFactor":0.1,"cameraEyePosX":0,"cameraEyePosY":300,"cameraEyePosZ":300,"lookatPointX":0,"lookatPointY":0,"lookatPointZ":0},"audioIndex":29,"otherbg":{"boardselect":"data:image/png;base64,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","boardlogo":"data:image/png;base64,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","boardlogotext":"data:image/png;base64,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","largescene":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCAYAAABxLb1rAAAgAElEQVR4Xu2de8xmR13H571f9r7tbrfbFii2gIARWJM2i5oWjGJCqEkNMaT9Q81GMGqiG0iaAH9YkiaQplCUiyv4B4SIkURNE/xLiAopJlsxAtIWROh1u91L9/Lue3/M75x3nmeeeebM9TdzZs75neTtvn2fmTkzv/nN5/n+ZubMmWLs4QFr9TrJPnjgwLAGn7hwYef3h4VanWT33nffWC3/67OvY7/4gafYvb/y9ervX/u332Rf+/KXGWNivlYb5njzk+zFBx9rzHPkI+/Wfu54s2yTQzvT9uFtlS1OnTiFYpMTp07slPMjlPJwCrmtat+JU4+xL7zj+05F/v6/vMkrT9w+rNvTdEEfmD5nrO6fqdwAyBtVgxBgNgk/Dj0OPp6HAOjk21kmTg9AMIN6QI1g5mOqvABYt+AeL5j5QDM1AGdm59jM7Czb2txkW5sb2g6r+zULAI6rP7nWXA1y9SeqPVULCYA+AzWvPLkAME8l59tXoHLd4Qd381GAPF88CI5/Ye0/fAPbvW9fZZyrly6zC2deqH6/7uhNbGl5mW1vb7OLZ8+ylcuXqr8XA0CoLEBQDn91bmCC4MrKB4bZ//uZpbGifuGWa2P/v7z8WV+P88hHITAYLQcAEvxG7lsCAG++/XWjCg9YBTy4pmemh39fuXKFnX/h+eH/8z5uOQTWK0AsAA6hN6inO+G/g53fv//crjFYvemmq2x6aoox+GGMpYGgHn4cDLo5Qg/iZpmlbQB2C37Qxf7qL0QBxlWB4wrwpttuZ1M747XJqV85d45dPn9u4uMWAWiGXygAOfgAdutra2z12jW2ublZAbAC4WDABtvb7MzGrWz/4RfZxZeOVH+/cfFnbNfyMpudn2czMzNserr+JokHQwIg98w2ASiGRll+OzhXKgx+eQJwcr62CnV3jQuZCVMNBmx7MGAba2vs8oXzbPXq1SpJJwF45cqVoYoD4K2urLD19fUKfmtra2xra2vMPpfn3lQBEC6A4J6NeqVsfn6eLS4usj379rG52dlKFcaB4MlhfZpUHq0CO49+hwz1SnB95bR44dAEZdKTzosecjG+ITAvB/LjzQWqF6tuePVr2Nz8vLWx1ldX2UvP/CxvAI62wzDnOcCzZ8+yubm5CnTXVlbYtWvX2Mb6eqOBZABCQg7B6vc9e9jy8jKbX1ioVprwIXiS/e3ptap+v3NsYayeHIgEQGv/9kgIAOwS+MAE4fCDUkIByMsIh2DzdqUbb31tNS5trwwAqA5/Regdv+uOqj3f/uZ3nAH49JNPVnkBgHxCVGccEYCQTlSBPN/s7Cw7cOBAJbUhJDZDcKTqmu/N9yyOACinlYFo28llpyt1L2dOVu8SAPV7NfccvI7t2b+/VnRT02xqup6/hwvG//bW1nAaC4RQBiFwDUAReFBZDj1eeRv48Q3RPA+sAv/ge99z8kQZgE0QfOOb3+xU7gMPPKBN/9BDDw0/5wqwKQOA0JTGqXKZJq6B33cAhipSHPiBi2AoQF6Of7/qNz6Lrnzo5lvYwtJod8f66hp76ZmfNnp7S3OAtTqSgSfXUgVAGXjw/3/+lU9VWfnTIC4ABPjBxecAeR24ChShZwKaL1MAhCa4EQB9rVtaPj4f6RuS48EvJwDyXjQ9sbO4axe7/uhNw06HRc7nfqy2JSx6tQRAqJ8ZgjoA6p4GcQWgDD9RAQIAY4GP9xIBcASpfitAjMWYPAEYrgK5j4g2GvmNCMabfu42NrWzc4MNBuzZHz098S3IV/xbBCCvUzMIZQA2QU9snWsIrAp/ZQDC/8eEIAGQAFhbgD+zO3pUy02/5gs/PACqLDI+R3j9TTezxeXlKiFseznzs1EILO/zzACAtRpUhcMcgKZH4HwACAsk8LO2660T4a8IQPg9tgokABIAwwGICz/M8Fccn7jbYsSSR/OEEAbvPXhd9eGl8+eGe/5U+zyLAKDLt6BOAcLG542NjepnuDp88E4lAFUQFOvhogjFxY6mttAcYG2Z/obAowHstyHbDoBv/uwb2fc+8AOrIYW1ACLfLAUEVQ3sBQCh4SoIgtrjm6GHxjl4Z/Wrag6QA3Bp5btsdm5uzJ6uq8Hm1a/mbTD8xrQIYjVmC000vsrpDkA7+IFxAIBw2UCwRABC25oWSjIGIFR7Mgy22Qaj8ngVAFdXVyvlN3Zp1B8HIDv/ePVEyMLC+AZlXg78/YYjR9j0zIzF3sCm8UkAFEFv/sIolHPKak/ucXMDoD38OAD5Y58mCMYCINSjDRVYFAB94adSgAC+tdXV4TPAsE0Sdo5v7v2lRvUnAhB+37WzAVr2YXhW+MjRo9WTJ+bN0QRAE7r6FQLrziG03QbjB0Du3zoIlglAaJn9l0omc4CTChATgFevXh3O+QH8IKTd2HNMG/7KAFyYn68ehZMvOIXi0OHDbHnXLgKgiW4Wn5cHQHlbhi246oGqCtfsFaAb/EQFyLsC9rs2QTAmAOOqwEnbNtm0FwBcWVkZHoAAig0ea2ta/ZXHaHVCzPnHq8MVAHKqY3fgETk4MGH37s9bDHFVEgqByw2B5cULaIkJgiNo2gDwgwc+NnSaT1z48M7v7vBrAiD8XQXBsgE4gqDuiLNeABCOyebzfxD6ri6/xaj+xG9IACBcS0tLFTzla18Fv91s34EvEgA9LVAuAJvUhmwIEYrmd1qIEBUByEt9w1v/3cvSsAiieuqpDQDGV4F139SX+kspMgBtDgTw6segTN95cqCd+xML5woQ/gYLHrAgIl+g/vbu2cP27f+CZ71IAXYJgConGIVg5uda5XBNBUD5HrZAVAEQylKFwrEVYBoA6odkRADaHXjqSQzvbL/9+Hlr+HHH4ApwcX6ezSnmAfft318dmbV331971osA2HUAQvt4KGZ6nlU1X2UDQRt1mBsA24ZgJADmCz8weNO+PxW94Jtx+uJ/VMfpgPqDOUT5Onj99Wx5aYkA6Il/MVt5iyCjMMsENlvzNC+C2I0rnRpsAqBKBaZQgNwm8bbFJFeAdp1k6wxY6VyVH7+v6mxAuU7XHzpUzQ/u2ev7btk8FaB8FqHpaRWMvioTgDUEcwcg3wSt2/gvzgWmByDYMe1RaMgKEA9+8lmBtoNLfMk6z+MLP/6teMfrp7RnDMI2GHj9XpdWgXUHscYEYckABH+xheDu/QfYnoMH2erVFXbp3Mtj77JVK8B61feH//nLY0PBdu4PMunUX9sKsK1QGAGAsNBRv8BcBR9bcPF0HHw3HD3smrVKf+b5l6p/oS4APrhcQl75pqAA//7Og9XhrapjtmCD9N79+9kB7xVguGNeCtDmFOpYECwXgPYqEF7ifcOrXlU9PQTXS888w9ZXR69knQSgHfxEOMpghM9shIC4GJJSAY4A6KMC/Q+QDQTg6GTnUPiFgk8G1z9940wQ+Pg3IvwLAISLQxCeBQYYwtMf1x8+XK0O+z8FQgAU+650ADapQFB8+667rjqnDt5JMb+4WDV7sD1gL/70/xQKULTKPUpxoYIcz1UiAP0gGHaAbAAAR4oPwOALQGzwgREBfqHKjwOQw09UqPw4/5fOnGG7qxcmhb5APR8FaKP+uC1iqMCyAahWgaD4jrz61aNDOgW2wQlFzykO7ORJTpx6zDr0LV0BugFw9Lib/ZMzskzyfi3mZLjrC0HI5xvuTjanhl9IyCuWycNf8W+8nfDvxYsX2X7vvX9iqQRAbo0uAnB+cYkdvuUWlbtWf3v26aeUnzXBDxLr1J/qc9MCCK8A93koP3UIzOtQrwjDpVoQsX/Ot9HgwgeeCjBPAPoqP/5CdJXBRAUoQ75WrxirVnkA0EX9ga1IATYNsfEVYVCA19144zDslXNtbW6xzY3xt5VBGgCgKrJSLXyYFkdMCyAiAOF3WA1uC4DjIOTjq/nNcIkVYPNih48KxFKAPsqPg0+3LQA6gy+CyM4IL01/8IUXECBIAOyOAoSW+L3AW3xfbRP8VOoO/oYFQCiLL4TkAcB/HH5fuJzzZ6P+II2jAtSv9JYCQFHxmcJlSAvbYJrmOHFUIAGwDwA88ppbJw7XFQcqB6DLvB82/HICINQFIHzqxLu1PNMddmACoQMA7ba5uEIQQwG6qD+T6lMZjOeRF0R42nAI1s9M60LKFCdCUwhsGi42n0+GavuuP8T2HDigzby9tc3On3mB3f/Jr1ovevACderPdu5PrFwuClAMhe0gaDqFZ7ILLAFoBz8oPjUAXeb9fOAnzo00AZC3238+8CR78cHH2JGPjH/TiUCMDUBX+HG7YM8DdnER5ObbX6eFH7y79tyLL1Qv72lb/eWmAEUVeN2NRxm88AiOpLt84QJ75eWzQ7v6zgNaANAefqIist0WE6oAbdVfCPy4U8C/cVRgDUD5koFooz+6kQZjYakNS6jn/sYU4GCnXnAy7861du0aO/vsM0P4wZ9Nc3q26s80xaOyUo4KEOr59Y//2Vh1xdXzXgLQFn4cYD7OIIcGcVSgGoDivQGGKki2Mcxj3rOGfrcACPaClWA4ixLOplzavZvtP3RoaMaN9XX2ng//RRX6qsCme9ytCZS2q75NAIR5b7E+MftcVfZoK0w9NQSRgQhAtQKEktzCYIMCdFd/ogqMbTTXc/1CAchBig9BAiD3la4CUB4LoiqExY97PvoZL+CoNj/7zPvJX/RtAFCGnlgnEYAwZfDKuXPsykXYhja6fBZDNAD0hx9UyTa0hWd373/7jc6s/KMvPl/lsYUayHrbtLrKqDZHi+n9FkQIgOUD0P00GJjPWlhaZu996G+GLhSqukKUH68E3/kQWhebQa2DXhMAq78PGLty6RV28aX6qS9+uUKwAYB4JzmbnvLghxe4QhAA6AK0JgC6zg3y9PANqb9cwjgCYNkAdIff+KB9bLgDQF6McoEQBvxECJpem2kDOFUaW+hpAVg9R73NnvvxZMjrMh/YCEATuGwaD3AzlcMV4Je+BRuKmZUadFV/UK5OAfpA8D1339BoghrqBEAbH5HTlBkC4wFQtoctEDHhx8cLJgB9oGcC4OrKCnv5uWeVbmYLwWwAyFsBIDSpQVf1ZwKgzeeilTkwmyBIAPRBX52nLADKr8Q0t1v9FriRAjSVoAJi6Jyf6p6612Wa6gifi8CD/w/dLsXnANfX1tiVixfZ9vYW21hdGztFZ1xVn9j5X/2iyNTxu+7gC/NVhm9/873V+XQm5WZjBBcFKJbH1WDTPVwWP3gZJpVn+lyuC6QnANp4gVuasgDo1rbm9wDbA1C+4627552mgmxr7APAUJWnqxsH4MvPP1ftlzRdtnOBU/fed98YAF949umJsn/81E9M91N+bgNAyOi6EOKjAOE+poUQ0+diIwmAXi5hzNRtAELzx1UjKELY/OyjkGLBj48VmxA4JvREZ+EAbD45hys+MZd5S8wEAFUe6gtFWwC6QjAXAEK9VSqQQmAj5xoTdB+AYtM5DO9xBmBM+JkAmAp6MgD/7oHfHXv6Az4fKT34PzPwZMezAqAvFF0A6ALBHADInYQA6A87Vc5+AZArwvwB2Ab0ZADKzwPbLnToPNQbgL5QNA0Xvi1Gl85nDpADC/7VHX/lurWGAGjqUbfP+wdAsI/5NCDRiinUH9xP3OrlE6K79bw+NYTAIgBt5/hMdUAFYCwoyuW6PAIn5zVthyEAmlwm7ucEQL19Y8OPCwWAX9vQ0ylADPUH5UcHYAwohgCQd7AMOpcFEN4mvmNeXjGnOUB/SBIAm20H8NNFMDqr6049F/PBuOB+nSsAseDXGgBDoehyBFaTU6gcwkX9id+UBEB/4Mk5CYB6ALr4qOzjprxy+p9cWcfr2MCSxBC4kwB0hWKoCgzsjyo7KUAMK46XQQDEAaBPRKOaLoK/5QBCDkBM+GWlAE0AvPHm26skfEvOI59/PMoGUJchTQB0sZZdWgKg2k4u4a/rpn6b0LltCNZPwPD3g7hvd2lqYytzgE2Vkfcbcuip0n/oI19qFYDgZAuPLrK3/OXaxFMzNAdoBztVKgJgMwBNISyPSmzSufYQ+HubEBwBEA9+WShAEXo64MkdBgCEK0Zn2zgHV3+QluYAbSxml4YAOGkn25VfTOWnCofbB6DLASN2/taKAvSFngqCbQBQ9xgc1NFeAW4xxuDnAeNpz3QitJ1Dl5lKvw/QBYAxx0ObKjDWu2KSANAltHV14DZC4Ur9PXLYtap1+sGAsbUtxja269/h+solAuCONUkB+inAmOqP14gA6DDksVSe6ZapQ2HuaM4ABNZtbjF2bXOySQTAoU0qAN6/n7HpKcZm4WeasSnT4bMmL8n888+dbdx0nIv6axuCRSjAVNBrcz4QAPinf3BnVYVvv+F/7UfWRgP8SAGO2bAC4Pv2jv4GIFycZWwGQGhv7qJSEgCN3VUB8P2jF0kZM1gmGJ4H6LIAwcuOGdpa1n8sWexwGOD38QfvH95TdUqOEooQ6l7WbCr9yqWJ5spvgOvVHKAIQLAMQHB5rv63i1ciAIobnUPmCtsIhaMBkJ8HqBrMKii2pfJUfr+1tcVWV1cZ/Muvj32i3isU0sGqe8nwaxqHSii+5inG1kd1tBrDCiha5etCIhmA0KaFWcbmOxoOJwIgdw2M+cLUEIwOQNW4sYViW2Pu6tWrY/CTIYgBQu4sH/3Qb7G5+Xk2NzfHpqennZqssuOnH/6MUxlYiY89fDdWUWnLmZ9hbGGmm/OBiQEogtBXKPQCgKKHwyAGRZgTFC9dmgwdxTpzNSj+zabD5WciP/zBe4ZFLCwsMPgJvXKAYlEwJABqXc7n0TefPCI8U+4LbEUBqgCYk1K8cuUK297etmaRCohNmUXoiWlA/e3evdv6ni4JRSi2oRCzBiLMAcKKcBevAhUgdENKFZg1ANuC4traGoOflBcWAFUKENrBVXYbABTtmBUMq/k/CH9T9nTCe7UEQA4xm6hIZQ0CoKOPYIfPoP5gEWRzU7G3zrFutsl9QmDXdkP6tgGoskdSKMLev5mpGnwd3gJz+sQ/s2PHjrW2D7CUMLg4BWgLFFc4yOUCBGEVmP/A/1dCAWHz7AC2r+w8rTE1PV0tgJgWQULbA1WHMr71jcdtTahN98QTT6CUIxdy7JPvxC8XtrnwDdDQf9CRCP2IX1H3EgF0TRcB0GzPzgKwrfDZbHJ9Cl0Ii1E2FgDFukSD4al3hTa5k/l10BubbiAFaOz/XgEwNyhiqDpjDwsJMBWg7r7YQDxGIGS20CMAuowIxnoPwFRQTA27pnbFUICpYNg3EPpALwYAoUzXBQ2aA7zvvp0jScwhn8/jcm6cD09tC7CYIWxoK1IpQFM9QxViF0EYCjuVzTHmAKFcH5j55OFtoFVg0wjK5HNbKGZSXdRFEKw29RmGMaD3tre9bdg1U1PNr6C0PQ1GhJKLCiQAdkwB6gY8f5oFCwqxyslFATa1LwSGuarCGJCT7SdCT/wMG4AuoTABkAAYi2Pe5eYOQN6w0kHYJvRiAVBUgiYQhh6KQCGw9xBvJyMpwDh2DwEhr1EqZZgL9GwBCOlcw2AZgjIIQ8FHc4BxxlH0UksCoO2TIE1hVXRjKm6QIwhTAI+bwrcvdCFwCABVIOR/c5knbPIlUoBtjLKAe3YRgCZz+A5KU7mmz9uEYSroYdk2NgBNfeX7OQHQ13It5esjAMHUWAPVtdswIGgbIseCXgrbEQDNnkUboc02MqboKwBFw6QY0KqOwIChOE9YMvBk+5gAiBEGGweHYwI+j5jqTEACoGMHqZITACetUjIQEVyiNXUs1t0EwPqNaIx958mB85MeGDaSy0gNP7g/ARChJ0sCoOrlSrFUT1fCZFsXaQv6TfUrCYBtwI8AaOvZhnSlA9DGDBiQbAsQGGFyk43aapNNn5kA+OjJX62KeeTzj7eqAMVXwvJ2/cnD/2rTxOA0pACDTVifs1fK88xO7xyWbIMBwS6owpyhpwuBOfB4Gu6z8NpXuDC2sLgMJ676xFfC8vxNz9TD55hwJAC69FhD2r4AUGw+BgzbAomLImyrjghuyd5+951jxZi+pGO//5pXhoMP3o8DKnVxcbE6ENj20sHRFZAEQFura9L1EYAYMGwTLjIE26wLggtWRbgCD/LASefw6oeNjY3q9wc//g/D6mAqQt0bEbHeh+OjHgmACN7XdwCGwrBN+HAQtlkHXxf0AZ58L90LwPjbDn1BqIOeXI+9e/f6mqHKJ6pCndLVqceQ6SG58lP30mEIQR0aIzN0PmYn6+roEyKXCKEY/dRUJgbw5LJtXgHr8tpXufym18BiANAWerZ9ZAqtXcYOAdDW6gnTpQQgb5YrCAmCI4eIATwfAMZ20fm5Oba4tGR9Gw4q05ymdYGWCV3UIwHQ0qgpk7UBQB8Q9hWCKYDnEgLH8E1Y9IAfuGDub3Z2tvqB33UXttrDbpsMRwIgtoURyisFgNDUPkFQBF9qVQMLHzAPCIsgMa7qDaTT006w4/XIHXo6exEAY3hTYJltAlCsuktY3AcQAgA5+Ep7zUKgS05kLxl6YmOmjt91x8Dm26yUFVSTPLdpK7azuJaXCwCh3gTBUe+JAFT1adeh2BXojQEQVoHljlNBggDoijH/9DkB0AWCXVeBJgDaQLGEL2CxHV2E3gQA5Y5TAZEA6A8015y5AdAWggRAc0+XoBK7Dj0jAG2AaO7q/FKUAvEcAch7UxcSdwWATY/g/fHJP4zyLHkuUGxr20qbpPBaBLEJmdtsVNO9SwAgt63LZs7Utu4qBE3PHscCoE3oDGlihM99UnsqO3sBsFSFmCMAm6YbcgagLiQuUQWawMf9PSUAY0Kx79BzDoEhgws8clWILm2IpapsbJNzCGwKhQmAsTxHXa5t+EzQG7cftweKAjR1uc2gN5WB8XkbAPRpOwEQo7ftyrBVf1Ba2wrQrkXjBw7wPDHCZ9v65JROnudMAsBcQuYUAPQBnso+FALHHzYu8IMXMh3/4WujzMPFbCn3eQy/jFnP2GU3LfC0AsC2gBgLgNjhBSnA2MOBMRv4iW+hgxqVDEDTmIPPu6gSTSvbWQDQ1DlYHYMFwNjfpgTAuAD0gV/XABhzkSVu79mVbgIfLyVLAMYCoi8AYwOvtBC45G0wvvDrAwC7AEVb8BUFQCwg2gIwNfAIgHbf6hipTACUw17xnl0KgUNsabvyHHIP17yu4CsagL5AbAJg28BTAvC2HzE2qz97zdVJMNKbDkfIeRtMCPz6qgBtfaYtKPqCr1MAtAViKSti1Rzg0f9hDA5pAwjOzzA20z4MTfCDfsgVgKHwIwDaonCULqawCAVfpwFoC0T3Lk2TYwhA8XbTUzUEZ+Dfnd/TVKe6S5fhB+3Thb7czBQChzkchkrEAl+vAMgbazsHGNbN4bmVABSLhaPK53aUIYAxwWUCYK7KD0yDof5IAcZxMlsoYoOPABinP1FKNQJw2HtTdXi8MINy36ZCTPDreuhLCjCqe00UbgtFjFoVsQ0Go6FQRmcUoMogi7M1DJEvE/z6oPwIgMhO5VBc07w9FIGxP5gA6NAZqZJaK0C5QjA3uDTHGGJY3NU9fzZzfrJ5aQ4w1QgY3UcnWjCUIgEwfZ8a7+gNQF7yrjmUVWNSf+NdRQA0ui56AteozRWKBED0LgsvMBiAUIW9C0EVMcEv53k/qJtu4cNH/UGZBMAgl/LK7ApA1U1023EIgF7dEjcTCgAhDF72C4e7DD/oOQJgXP/FLB0DgHJ9RCASADF7C6ksFABCXeZmGFuada6VCYA5L3zEUn+kAJ3dCCVDDACKFSMAonQTbiFoAIRqwaII7Bm0vEqHnw6AvsqPm45CYEsnQkxGACzImFhV1QIQQtvtgf2t4OkRWBSxvAiAzYYiAFo6EWIyAmBBxsSqqhaA/HG49S272wEwIQy2eJa4C/AjBTjuFrEBYueE/qli159CYP++iZYTNQS2BGBX4EcAJAC6DEwCoIu1EqVNDUAT/KDZuS98yF2j2gZDc4CJHBjxNtEV4PG77qgmlEyPlcSuCKLNGosqpQ2oALRYCTYBsDT4NalAAmCKUYZ7j9hjdoq9b28FwOPP//xYzWUgxq4IrtnUpZXSBjQAGvYCmsBXovLjPU8KsLZEKT7fNP5j138IQLkCMhBtVGIKiIXcI7YxQ+om5kUBICx6wOJHw3PBXYZfTAVY2jgoxeezA6AJiKaQGQsGmOWU4Ax8l3p1IrTPBcBbmNXu/bOBX8nqLyYAwe91j1b5dFnMPCX4vK79sevfqABNnVKiQoxtTJPNVJ/Lg8kbfHAUFmx4Nmx36QP8YgNQ7secgZijz7uMk9j19wagqhGmeUSXhsdIG9uYNnVGA554s13z9TH5hqsv8EsNwJyBmIPPm/yyXQX4ewcHbGvA2OY2YwOHJwwsWpUbENtwhijA47aHFybBQagW5//1CX5tAzAnILbh8xZosE4Su/5T7P2HRtTb2mZsfZsx+NflcSvL5rQdNsc2JpghKvDgBgA72Noy6/ZiJBMAS9zqonO7nFeBU4bMKXzecvh7JYtd/3EAylWsgLjF2OYAXR3yW6VUibGMKTq09xyezj3gJUgQ4sK7PyweaZOLMsEP0hMAzeMz1rPAMYEYy+fN1sJJEbv+U6dPnx4qQO1GUYAhhMpcGUKu7R2liBg5xwQiljGjqzzwHZjSA6UH0AMAel59hF9uIbBr12ECEcvnXduAlT52/ccAKFbaade8CEcAJP9BsAImEH2NmQR4FfSm6hB30U/pkfIbWSDnENh1WIQA0dfnXesYK33s+jcC0BuGYkYRjKASEeYWQ+YRbY2ZDHgcerCQ4XBmn8nZbFRfF8Ne0S5dAqDc3y5AtPV5k0+19Xns+lsBUNV4J4WogyJCGG2rEpuMmQR4EMVOT9ehLQffvHnfnqvjEfxqi3UZgC5AjA0QV/90TR+7/t4A5A3xBqFsCVEtVnONsC3H1Vx1+iYgcmMmAZ9NfmIAAAwTSURBVB5UBMJZWLSIADrZMrbg67ry43bpEwBdgOg3otrLlT0AZdOgAREKRlqFloEYZaWWqzrEOTxbtyP4TVqqzwAUrSF/2cNnJT3GGh2Ag0G9+1n3GkHbgahKhwZErhA3+MqzpzwMaYycFxYtYDNyAoXXVG2Cn9oyBMDaLiqAuMwhYg4Xn7KSAVCsXCwY8nugQBFACHsUAYwpLoBdNY+3Az1YtAjYnoJVZRsAdm2Pn43tCIDNACwpZG4FgCoHiwXFYBiKyhAThgA3OGDA8YkLm8GJmcYEwD7CrymiCfW1WBuhMf1BBTfXkDcnhZgNALlhY4EQyg910Gr/4bVNf1WYcNEixOlN0IOy+wo+nZ+G+ldfAJiTQswOgClDZW8oyvsPAYxNBz0kWqW1BZ4N3GzKIgA+MWEmAqCN55jTpFSIWQNQNlVMdajqllCHNnd1mhRY0OO17Tv8KAQe+W1sgMCdYgIxdv2n+CpwzKHeZzBiw82mnwiAyBuh1+BAkG12/JnXF7WFhMPJdQ7Qxsd0aTCB2AkApg6bxfu1oRLbgJ7YZgJg87Yua3+AKZOV8flk2E+aGiYYMGq7ziFA7BwA24Sh95yihRcS9CyMlDBJU9RhBCBsL722UR8QLF0EQJwOdAFipwGoMmfKcNk4GBr6OyXsXNTcN175Lo6HOpRy9763OKROl9QLgLB4dnWjsZIEwDj9pwNi7wCoM3FsOOqAmBJ6YAMX8HGbEQBH3uMFwEtr2hFOAIwDQLlUF4UYWqMkiyChlTTljwFGEYaY8PMBm6n9BMBJC+l8QvlFBwsda5sEQFtnS5Qu9rPMnQAg74sYIMTo55jQk+uXWgXmGgKDXZxUIIS+hieJSAFijAa3MmI/y9wpAMqmbROIKaEntpsAOO4F1hAkALqRKVFqmznAkJC50wBMCcS2gNdm+Av3zlkB6lQgfDYWClMInAhpbrexAWDIHGKvABgDiCnBl1rd2bhq7gA0TY+MQZAWQWy6PGkaHwC6ALHXABQN5RIux4ZejqDTeX3pEByqQThebbV5IYQfrNv2xmIXAmEAxOV+2Glj1F8MmQmAih6TYRgTeKXBrsnBuwDBCoSP/hpjG1vacWz7DhpsGPiUFwMgPvXwzRO7/gRA354JyNcV6IkmKAWAppBYbNOxh++26uWcgRgbIFYGCkgUu/4EwIDOccnaReiVDECou+20x7FH3lG/69ryEoHYdrgcGyCWJvFOFrv+BEDvrtFn7DrwVK0vTQW6qEHb8Fi2S9vqMDZAIg2fYbGx608AROrBPgJPNl2pAHRSgxZzhDqXSg3E2ABBGj6NxcSuPwEwsAe7AD4AF0Y7SgagCwQrNWg5P2hyr9jhcmyAmNoX+nns+hMAHXsIAxSOt4ya3AQt1/aayovaGITCbecFhyExPD7nMD+YWh3GBgiCybVFxK7/1OnTp5WzuzG3fsQ2WozyXUEQow4YZYYAysYGIeVjtA+rDCcQnnpX/Rzx1qD+2d75PbAyGOFybIAENtGYPXb9GwEo16yPQLQZ8MYezCQBNpiabIN9nxzM5wxDXmmA4s5x+hjt8AFibIBgtEtXRuz6WwOQV7JPICwZgKlAJNso1X1jDzy5fBcIinmHj9rxk2YqlbjN2KbmTYWWjbOZP4wNEMuqeieLXX9nAPZJGeYKwK5CxnuUtJAxGIhQZx42w/H7iiP4XZrVpA5jA8Sljj5pY9c/GIB9AGIOICTo+Qyf+Hl8QahUifAI3jrMH06+j8S1JT7hsus9UqSPDkD2/kPVIgjmqcddD5dTApHAl2KYhd0DA4KqGhz75DtRYAhl24TLYVaIkzsZAOXqxwAi3KNrc4jYMCTgxRlIqUqNBsNP7xzSYP9EXmOTS1KHrQGQWy8WCLumEkNBSOBLhai094kGRHg+Gd5d3HEgtg7AVMqwK+rQB4QEv7RQautu0WAI+xDhLEP4QdiUnVO4nB0AReeJpQ67EibrYEjQawtDedw3Fgx56449CvOHO1ttAlRi2+Fy1gCMrQ67AEIVBAl+eUAoh1rEBiG08dhf/UatDBE2ZacGYlEAjAXELoAwh8FGdcjXAilAqGu97+EOscPlogGICUSCYL6Dl2qGZ4G2QVgpRs+TbmKow04BEAOIBEK8wUYllWOBtsHoA0UMIHYagOB+vgspBMJyBi/VFN8CbQHRB4S89T7hcqcB6As/blCCIP7AohLLtUBqKGLBECze9O6UTgIwBHwEvXIHKNW8HQvEBmMICFXqUARipwDoCz6CXjsDh+7afQtgwhEDhCHhsk9vTfHDEHwy2+bxBR+FurYWpnRkgTALoILwU+8MPt6rSRnqwmUfC0QFoA/4SO35dCPlIQvgWQALhsc+9+v10yhw1iFsxEZ4TA9aibG6zK0VBYA+4IMKEfzwnJhKIguEWgADhMMTsXll+GnY8NwyHOaAcIUAERWABD6E3qQiyAIZW8AXihMghDbyE7E3dhRiBCA2rS6jK0Af+JHiy9jTqWpkgQYLoEJQvAcAEWAI6hDpMqlDNAXoAkACH1LvUjFkgZYt4ANDpRqUQXh1I0rLZCAGA9AFfDTPF6VPqVCyQGsW8AEgVNYIQUh0bZMxeE9KxCsJAEnxRexBKposkJEFXIBoBUFYOQYQIrwoSmWmIACa1B+BLyPPpKqQBRJZwAWC1mqQL5gAEPm7lRHa4w1AE/wo3EXoHSqCLFCoBVwgaKUEVXYAKAYe8koALNTBqNpkgdwtkASCYIQqTN6olaHjFQWAFPo69gIlJwt02AK2IPRWgtx2cpgMYDTsLSQAdtjxqGlkgVwsYAPBYAA2hcmgDFWP4W0PGCoASfnl4m5UD7JAnhYwgTAKBDWmIADm6SdUK7JAJy1gAiA0OiUECYCddDNqFFkgbwvoQEgAzLvvqHZkAbJAoAU6CUCwCc0DBnoGZScL9MQCTRAsVgHyfiMI9sSDqZlkgQAL5KACUecACYAB3kBZyQI9tEDbKjAKACkU7qEnU5PJAh4WaFsFRgMgQdDDGygLWaBnFigWgLyf6FCEnnksNZcsgGgBAiCiMakosgBZoDwLtDkP6B0Ci2a2UYEUEpfnmFRjskAKCxQPQDCSDQRpe0wKd6J7kAXKs4AKgin2A6IoQAJgeQ5HNSYL5GSB4gFIiyI5uRPVhSxQlgUIgGX1F9WWLEAWQLRAZwBoqwRpPhDRe6goskDBFujEIohsf1oUKdgjqepkgUQWKH4fYJOdbAAo5iVFmMjj6DZkgUwsYDoctahVYAwQEgQz8UyqBlkgsgVM8IPbdwKA0BBSg5G9iYonCxRkgVzgByZD2wdosr8rBHl5pApNlqXPyQJlWMAGfLwlKdRfUgD6KEG5WwmGZTg61ZIsIFsgR/glB6BoFF9FSMqQBhdZoBwLuIAv1byfaL1kIbCqy0IgSGqwnEFANe2XBVyhlzrszQaAvCIhIBQbQ1Ds10Cj1uZjAV/otQm/VkPgpq7DgCGBMJ+BQTXpvgVC4JdqsaOpF1oNgXWuQSDs/sChFpZpgRDgta34ZItnC0CsBRNSg2UOMqp1fhboEvi4dYsAIFQ2VBESCPMbUFSjvC2AATxoYdthrs7KxQBQ1QhXKBIE8x5wVLs8LIABvpyhJ1q5aACGKEOCYR6DjWqRjwUwwJe74ityDtDWRVwUIQHQ1qqUrusWCAVfKWpP1Y/FK0CsxRIoh6DY9aFO7QMLhAKPW7Fk8BW3COLqui5qUCybIOhqaUqfqwWwQNcl4HU6BMZUgwTFXIc11Uu0ADbkVNbtgtJr8ppOhcBNjfRVg6rySCESgFJbIAXk+ga+zofAcodiQpDUYWoEpL9fW9BJ31L1Hbus+sQW90IBqro4BhBJHbY/fPsOLp8e6AvsVLbpLQC5MWKAEMomGPoMxVEeAlmY/foa0rparfcATKEOCYZ6tyTYuQ7b5vR9VnM+ViQAGqwWSyH6dBblIQuABQhyeH5AAHS0JQHR0WAdSU7Q6UhHSs0gAAb0K8EwwHgJsxK8Ehq7sFsRAJE6jGCIZEhNMQSy+Dbu2x0IgMg9TiDEMSjBDseOVIreAgRA8hCyAFmgtxYgAPa266nhZAGyAAGQfIAsQBborQUIgL3temo4WYAsQAAkHyALkAV6a4H/B46gU3sFTkFeAAAAAElFTkSuQmCC"},"audioType":0,"boardevents":[{"id":"Rules of the Board (KBC)","activationType":-5,"executionType":1,"custom":true,"parameterValues":{"ChocolateRules":false,"ActivateRules":true}},{"id":"Load Boo Models (KBC)","activationType":-4,"executionType":1,"custom":true,"parameterValues":{"LoadPerFrame":true,"ModelID":10,"ModelSpace":[138,23],"FacingSpace":[17,22]}},{"id":"Mushroom Curse Effect","activationType":-5,"executionType":1,"custom":true},{"id":"Bell Curse or Spook Effect","activationType":-5,"executionType":1,"custom":true},{"id":"Revert Rainhook","activationType":-3,"executionType":1,"custom":true}],"audioData":[]}