432 lines
20 KiB
Python
432 lines
20 KiB
Python
remote_textbox_shower = [
|
|
# Pops up the textbox(s) of whatever textbox IDs is written at 0x02025300 and 0x02025302 and increments the current
|
|
# received item index at 0x020253D0 if a number to increment it by is written at 0x02025304. Also plays the sound
|
|
# effect of the ID written at 0x02025306, if one is written there. This will NOT give any items on its own; the item
|
|
# has to be written by the client into the inventory alongside writing the above-mentioned things.
|
|
|
|
# Make sure we didn't hit the lucky one frame before room transitioning wherein Nathan is on top of the room
|
|
# transition tile.
|
|
0x0C, 0x88, # ldrh r4, [r1]
|
|
0x80, 0x20, # movs r0, #0x80
|
|
0x20, 0x40, # ands r0, r4
|
|
0x00, 0x28, # cmp r0, #0
|
|
0x2F, 0xD1, # bne 0x87FFF8A
|
|
0x11, 0xB4, # push r0, r4
|
|
# Check the cutscene value to make sure we are not in a cutscene; forcing a textbox while there's already another
|
|
# textbox on-screen messes things up.
|
|
0x1E, 0x4A, # ldr r2, =0x2026000
|
|
0x13, 0x78, # ldrb r3, [r2]
|
|
0x00, 0x2B, # cmp r0, #0
|
|
0x29, 0xD1, # bne 0x87FFF88
|
|
# Check our "delay" timer buffer for a non-zero. If it is, decrement it by one and skip straight to the return part
|
|
# of this code, as we may have received an item on a frame wherein it's "unsafe" to pop the item textbox.
|
|
0x16, 0x4A, # ldr r2, =0x2025300
|
|
0x13, 0x89, # ldrh r3, [r2, #8]
|
|
0x00, 0x2B, # cmp r0, #0
|
|
0x02, 0xD0, # beq 0x87FFF42
|
|
0x01, 0x3B, # subs r3, #1
|
|
0x13, 0x81, # strh r3, [r2, #8]
|
|
0x22, 0xE0, # beq 0x87FFF88
|
|
# Check our first custom "textbox ID" buffers for a non-zero number.
|
|
0x10, 0x88, # ldrh r0, [r2]
|
|
0x00, 0x28, # cmp r0, #0
|
|
0x12, 0xD0, # beq 0x87FFF6E
|
|
# Increase the "received item index" by the specified number in our "item index amount to increase" buffer.
|
|
0x93, 0x88, # ldrh r3, [r2, #4]
|
|
0xD0, 0x32, # adds r2, #0xD0
|
|
0x11, 0x88, # ldrh r1, [r2]
|
|
0xC9, 0x18, # adds r1, r1, r3
|
|
0x11, 0x80, # strh r1, [r2]
|
|
# Check our second custom "textbox ID" buffers for a non-zero number.
|
|
0xD0, 0x3A, # subs r2, #0xD0
|
|
0x51, 0x88, # ldrh r1, [r2, #2]
|
|
0x00, 0x29, # cmp r1, #0
|
|
0x01, 0xD0, # beq 0x87FFF5E
|
|
# If we have a second textbox ID, run the "display two textboxes" function.
|
|
# Otherwise, run the "display one textbox" function.
|
|
0x0E, 0x4A, # ldr r2, =0x805F104
|
|
0x00, 0xE0, # b 0x87FFF60
|
|
0x0E, 0x4A, # ldr r2, =0x805F0C8
|
|
0x7B, 0x46, # mov r3, r15
|
|
0x05, 0x33, # adds r3, #5
|
|
0x9E, 0x46, # mov r14, r3
|
|
0x97, 0x46, # mov r15, r2
|
|
0x09, 0x48, # ldr r0, =0x2025300
|
|
0x02, 0x21, # movs r1, #2
|
|
0x01, 0x81, # strh r1, [r0, #8]
|
|
# Check our "sound effect ID" buffer and run the "play sound" function if it's a non-zero number.
|
|
0x08, 0x48, # ldr r0, =0x2025300
|
|
0xC0, 0x88, # ldrh r0, [r0, #6]
|
|
0x00, 0x28, # cmp r0, #0
|
|
0x04, 0xD0, # beq 0x87FFF7E
|
|
0x0B, 0x4A, # ldr r2, =0x8005E80
|
|
0x7B, 0x46, # mov r3, r15
|
|
0x05, 0x33, # adds r3, #5
|
|
0x9E, 0x46, # mov r14, r3
|
|
0x97, 0x46, # mov r15, r2
|
|
# Clear all our buffers and return to the "check for Nathan being in a room transition" function we've hooked into.
|
|
0x03, 0x48, # ldr r0, =0x2025300
|
|
0x00, 0x21, # movs r1, #0
|
|
0x01, 0x60, # str r1, [r0]
|
|
0x41, 0x60, # str r1, [r0, #4]
|
|
0x11, 0xBC, # pop r0, r4
|
|
0x04, 0x4A, # ldr r2, =0x8007D68
|
|
0x00, 0x28, # cmp r0, #0
|
|
0x97, 0x46, # mov r15, r2
|
|
# LDR number pool
|
|
0x00, 0x53, 0x02, 0x02,
|
|
0x04, 0xF1, 0x05, 0x08,
|
|
0xC8, 0xF0, 0x05, 0x08,
|
|
0x68, 0x7D, 0x00, 0x08,
|
|
0x90, 0x1E, 0x02, 0x02,
|
|
0x80, 0x5E, 0x00, 0x08,
|
|
0x00, 0x60, 0x02, 0x02
|
|
]
|
|
|
|
transition_textbox_delayer = [
|
|
# Sets the remote item textbox delay timer whenever the player screen transitions to ensure the item textbox won't
|
|
# pop during said transition.
|
|
0x40, 0x78, # ldrb r0, [r0, #1]
|
|
0x28, 0x70, # strb r0, [r5]
|
|
0xF8, 0x6D, # ldr r0, [r7, #0x5C]
|
|
0x20, 0x18, # adds r0, r4, r0
|
|
0x02, 0x4A, # ldr r2, =0x2025300
|
|
0x10, 0x23, # movs r3, #0x10
|
|
0x13, 0x80, # strh r3, [r2]
|
|
0x02, 0x4A, # ldr r2, =0x806CE1C
|
|
0x97, 0x46, # mov r15, r2
|
|
0x00, 0x00,
|
|
# LDR number pool
|
|
0x08, 0x53, 0x02, 0x02,
|
|
0x1C, 0xCE, 0x06, 0x08,
|
|
]
|
|
|
|
magic_item_sfx_customizer = [
|
|
# Enables a different sound to be played depending on which Magic Item was picked up. The array starting at 086797C0
|
|
# contains each 2-byte sound ID for each Magic Item. Putting 0000 for a sound will cause no sound to play; this is
|
|
# currently used for the dummy AP Items as their sound is played by the "sent" textbox instead.
|
|
0x70, 0x68, # ldr r0, [r6, #4]
|
|
0x80, 0x79, # ldrb r0, [r0, #6]
|
|
0x40, 0x00, # lsl r0, r0, 1
|
|
0x07, 0x49, # ldr r1, =0x86797C0
|
|
0x08, 0x5A, # ldrh r0, [r1, r0]
|
|
0x00, 0x28, # cmp r0, 0
|
|
0x04, 0xD0, # beq 0x8679818
|
|
0x03, 0x4A, # ldr r2, =0x8005E80
|
|
0x7B, 0x46, # mov r3, r15
|
|
0x05, 0x33, # adds r3, #5
|
|
0x9E, 0x46, # mov r14, r3
|
|
0x97, 0x46, # mov r15, r2
|
|
0x01, 0x48, # ldr r0, =0x8095BEC
|
|
0x87, 0x46, # mov r15, r0
|
|
# LDR number pool
|
|
0x80, 0x5E, 0x00, 0x08,
|
|
0xEC, 0x5B, 0x09, 0x08,
|
|
0xC0, 0x97, 0x67, 0x08,
|
|
]
|
|
|
|
start_inventory_giver = [
|
|
# This replaces AutoDashBoots.ips from standalone CotMR by allowing the player to start with any set of items, not
|
|
# just the Dash Boots. If playing Magician Mode, they will be given all cards that were not put into the starting
|
|
# inventory right after this code runs.
|
|
|
|
# Magic Items
|
|
0x13, 0x48, # ldr r0, =0x202572F
|
|
0x14, 0x49, # ldr r1, =0x8680080
|
|
0x00, 0x22, # mov r2, #0
|
|
0x8B, 0x5C, # ldrb r3, [r1, r2]
|
|
0x83, 0x54, # strb r3, [r0, r2]
|
|
0x01, 0x32, # adds r2, #1
|
|
0x08, 0x2A, # cmp r2, #8
|
|
0xFA, 0xDB, # blt 0x8680006
|
|
# Max Ups
|
|
0x11, 0x48, # ldr r0, =0x202572C
|
|
0x12, 0x49, # ldr r1, =0x8680090
|
|
0x00, 0x22, # mov r2, #0
|
|
0x8B, 0x5C, # ldrb r3, [r1, r2]
|
|
0x83, 0x54, # strb r3, [r0, r2]
|
|
0x01, 0x32, # adds r2, #1
|
|
0x03, 0x2A, # cmp r2, #3
|
|
0xFA, 0xDB, # blt 0x8680016
|
|
# Cards
|
|
0x0F, 0x48, # ldr r0, =0x2025674
|
|
0x10, 0x49, # ldr r1, =0x86800A0
|
|
0x00, 0x22, # mov r2, #0
|
|
0x8B, 0x5C, # ldrb r3, [r1, r2]
|
|
0x83, 0x54, # strb r3, [r0, r2]
|
|
0x01, 0x32, # adds r2, #1
|
|
0x14, 0x2A, # cmp r2, #0x14
|
|
0xFA, 0xDB, # blt 0x8680026
|
|
# Inventory Items (not currently supported)
|
|
0x0D, 0x48, # ldr r0, =0x20256ED
|
|
0x0E, 0x49, # ldr r1, =0x86800C0
|
|
0x00, 0x22, # mov r2, #0
|
|
0x8B, 0x5C, # ldrb r3, [r1, r2]
|
|
0x83, 0x54, # strb r3, [r0, r2]
|
|
0x01, 0x32, # adds r2, #1
|
|
0x36, 0x2A, # cmp r2, #36
|
|
0xFA, 0xDB, # blt 0x8680036
|
|
# Return to the function that checks for Magician Mode.
|
|
0xBA, 0x21, # movs r1, #0xBA
|
|
0x89, 0x00, # lsls r1, r1, #2
|
|
0x70, 0x18, # adds r0, r6, r1
|
|
0x04, 0x70, # strb r4, [r0]
|
|
0x00, 0x4A, # ldr r2, =0x8007F78
|
|
0x97, 0x46, # mov r15, r2
|
|
# LDR number pool
|
|
0x78, 0x7F, 0x00, 0x08,
|
|
0x2F, 0x57, 0x02, 0x02,
|
|
0x80, 0x00, 0x68, 0x08,
|
|
0x2C, 0x57, 0x02, 0x02,
|
|
0x90, 0x00, 0x68, 0x08,
|
|
0x74, 0x56, 0x02, 0x02,
|
|
0xA0, 0x00, 0x68, 0x08,
|
|
0xED, 0x56, 0x02, 0x02,
|
|
0xC0, 0x00, 0x68, 0x08,
|
|
]
|
|
|
|
max_max_up_checker = [
|
|
# Whenever the player picks up a Max Up, this will check to see if they currently have 255 of that particular Max Up
|
|
# and only increment the number further if they don't. This is necessary for extreme Item Link seeds, as going over
|
|
# 255 of any Max Up will reset the counter to 0.
|
|
0x08, 0x78, # ldrb r0, [r1]
|
|
0xFF, 0x28, # cmp r0, 0xFF
|
|
0x17, 0xD1, # bne 0x86A0036
|
|
# If it's an HP Max, refill our HP.
|
|
0xFF, 0x23, # mov r3, #0xFF
|
|
0x0B, 0x40, # and r3, r1
|
|
0x2D, 0x2B, # cmp r3, 0x2D
|
|
0x03, 0xD1, # bne 0x86A0016
|
|
0x0D, 0x4A, # ldr r2, =0x202562E
|
|
0x93, 0x88, # ldrh r3, [r2, #4]
|
|
0x13, 0x80, # strh r3, [r2]
|
|
0x11, 0xE0, # b 0x86A003A
|
|
# If it's an MP Max, refill our MP.
|
|
0x2E, 0x2B, # cmp r3, 0x2E
|
|
0x03, 0xD1, # bne 0x86A0022
|
|
0x0B, 0x4A, # ldr r2, =0x2025636
|
|
0x93, 0x88, # ldrh r3, [r2, #4]
|
|
0x13, 0x80, # strh r3, [r2]
|
|
0x0B, 0xE0, # b 0x86A003A
|
|
# Else, meaning it's a Hearts Max, add +6 Hearts. If adding +6 Hearts would put us over our current max, set our
|
|
# current amount to said current max instead.
|
|
0x0A, 0x4A, # ldr r2, =0x202563C
|
|
0x13, 0x88, # ldrh r3, [r2]
|
|
0x06, 0x33, # add r3, #6
|
|
0x51, 0x88, # ldrh r1, [r2, #2]
|
|
0x8B, 0x42, # cmp r3, r1
|
|
0x00, 0xDB, # blt 0x86A0030
|
|
0x0B, 0x1C, # add r3, r1, #0
|
|
0x13, 0x80, # strh r3, [r2]
|
|
0x02, 0xE0, # b 0x86A003A
|
|
0x00, 0x00,
|
|
# Increment the Max Up count like normal. Should only get here if the Max Up count was determined to be less than
|
|
# 255, branching past if not the case.
|
|
0x01, 0x30, # adds r0, #1
|
|
0x08, 0x70, # strb r0, [r1]
|
|
# Return to the function that gives Max Ups normally.
|
|
0x05, 0x48, # ldr r0, =0x1B3
|
|
0x00, 0x4A, # ldr r2, =0x805E170
|
|
0x97, 0x46, # mov r15, r2
|
|
# LDR number pool
|
|
0x78, 0xE1, 0x05, 0x08,
|
|
0x2E, 0x56, 0x02, 0x02,
|
|
0x36, 0x56, 0x02, 0x02,
|
|
0x3C, 0x56, 0x02, 0x02,
|
|
0xB3, 0x01, 0x00, 0x00,
|
|
]
|
|
|
|
maiden_detonator = [
|
|
# Detonates the iron maidens upon picking up the Maiden Detonator item by setting the "broke iron maidens" flag.
|
|
0x2A, 0x20, # mov r0, #0x2A
|
|
0x03, 0x4A, # ldr r2, =0x8007E24
|
|
0x7B, 0x46, # mov r3, r15
|
|
0x05, 0x33, # adds r3, #5
|
|
0x9E, 0x46, # mov r14, r3
|
|
0x97, 0x46, # mov r15, r2
|
|
0x01, 0x4A, # ldr r2, =0x8095BE4
|
|
0x97, 0x46, # mov r15, r2
|
|
# LDR number pool
|
|
0x24, 0x7E, 0x00, 0x08,
|
|
0xE4, 0x5B, 0x09, 0x08,
|
|
]
|
|
|
|
doubleless_roc_midairs_preventer = [
|
|
# Prevents being able to Roc jump in midair without the Double. Will pass if the jump counter is 0 or if Double is
|
|
# in the inventory.
|
|
# Check for Roc Wing in the inventory normally.
|
|
0x58, 0x18, # add r0, r3, r1
|
|
0x00, 0x78, # ldrb r0, [r0]
|
|
0x00, 0x28, # cmp r0, 0
|
|
0x11, 0xD0, # beq 0x8679A2C
|
|
# Check the "jumps since last on the ground" counter. Is it 0?
|
|
# If so, then we are on the ground and can advance to the Kick Boots question. If not, advance to the Double check.
|
|
0x0B, 0x48, # ldr r0, =0x2000080
|
|
0x01, 0x78, # ldrb r1, [r0]
|
|
0x00, 0x29, # cmp r1, 0
|
|
0x03, 0xD0, # beq 0x8679A18
|
|
# Check for Double in the inventory. Is it there?
|
|
# If not, then it's not time to Roc! Otherwise, advance to the next check.
|
|
0x0A, 0x4A, # ldr r2, =0x202572F
|
|
0x52, 0x78, # ldrb r2, [r2, 1]
|
|
0x00, 0x2A, # cmp r2, 0
|
|
0x09, 0xD0, # beq 0x8679A2C
|
|
# Check for Kick Boots in the inventory. Are they there?
|
|
# If they are, then we can definitely Roc! If they aren't, however, then on to the next question...
|
|
0x08, 0x4A, # ldr r2, =0x202572F
|
|
0xD2, 0x78, # ldrb r2, [r2, 3]
|
|
0x00, 0x2A, # cmp r2, 0
|
|
0x03, 0xD1, # bne 0x8679A28
|
|
# Is our "jumps since last on the ground" counter 2?
|
|
# If it is, then we already Double jumped and should not Roc jump as well.
|
|
# Should always pass if we came here from the "on the ground" 0 check.
|
|
0x02, 0x29, # cmp r1, 2
|
|
0x03, 0xD0, # beq 0x8679A2C
|
|
# If we did not Double jump yet, then set the above-mentioned counter to 2, and now we can finally Roc on!
|
|
0x02, 0x21, # mov r1, 2
|
|
0x01, 0x70, # strb r1, [r0]
|
|
# Go to the "Roc jump" code.
|
|
0x01, 0x4A, # ldr r2, =0x806B8A8
|
|
0x97, 0x46, # mov r15, r2
|
|
# Go to the "don't Roc jump" code.
|
|
0x01, 0x4A, # ldr r2, =0x806B93C
|
|
0x97, 0x46, # mov r15, r2
|
|
# LDR number pool
|
|
0xA8, 0xB8, 0x06, 0x08,
|
|
0x3C, 0xB9, 0x06, 0x08,
|
|
0x80, 0x00, 0x00, 0x02,
|
|
0x2F, 0x57, 0x02, 0x02,
|
|
]
|
|
|
|
kickless_roc_height_shortener = [
|
|
# Shortens the amount of time spent rising with Roc Wing if the player doesn't have Kick Boots.
|
|
0x06, 0x49, # ldr r1, =0x202572F
|
|
0xC9, 0x78, # ldrb r1, [r1, 3]
|
|
0x00, 0x29, # cmp r1, 0
|
|
0x00, 0xD1, # bne 0x8679A6A
|
|
0x10, 0x20, # mov r0, 0x12
|
|
0xA8, 0x65, # str r0, [r5, 0x58]
|
|
# Go back to the Roc jump code.
|
|
0x00, 0x24, # mov r4, 0
|
|
0x2C, 0x64, # str r4, [r5, 0x40]
|
|
0x03, 0x49, # ldr r1, =0x80E03A0
|
|
0x01, 0x4A, # ldr r2, =0x806B8BC
|
|
0x97, 0x46, # mov r15, r2
|
|
0x00, 0x00,
|
|
# LDR number pool
|
|
0xBC, 0xB8, 0x06, 0x08,
|
|
0x2F, 0x57, 0x02, 0x02,
|
|
0xA0, 0x03, 0x0E, 0x08
|
|
]
|
|
|
|
missing_char_data = {
|
|
# The pixel data for all ASCII characters missing from the game's dialogue textbox font.
|
|
|
|
# Each character consists of 8 bytes, with each byte representing one row of pixels in the character. The bytes are
|
|
# arranged from top to bottom row going from left to right.
|
|
|
|
# Each bit within each byte represents the following pixels within that row:
|
|
# 8- = -+------
|
|
# 4- = +-------
|
|
# 2- = ---+----
|
|
# 1- = --+-----
|
|
# -8 = -----+--
|
|
# -4 = ----+---
|
|
# -2 = -------+
|
|
# -1 = ------+-
|
|
0x396C54: [0x00, 0x9C, 0x9C, 0x18, 0x84, 0x00, 0x00, 0x00], # "
|
|
0x396C5C: [0x00, 0x18, 0xBD, 0x18, 0x18, 0x18, 0xBD, 0x18], # #
|
|
0x396C64: [0x00, 0x0C, 0x2D, 0x0C, 0x21, 0x00, 0x00, 0x00], # *
|
|
0x396C6C: [0x00, 0x20, 0x3C, 0xA0, 0x34, 0x28, 0xB4, 0x20], # $
|
|
0x396C74: [0x00, 0x34, 0x88, 0x80, 0xB4, 0x88, 0x88, 0x34], # 6
|
|
0x396C7C: [0x00, 0xBC, 0x88, 0x04, 0x04, 0x20, 0x20, 0x20], # 7
|
|
0x396CBC: [0x00, 0x34, 0x88, 0x88, 0x3C, 0x08, 0x88, 0x34], # 9
|
|
0x396CC4: [0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0], # :
|
|
0x396CCC: [0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x80, 0x40], # ;
|
|
0x396D0C: [0x00, 0x00, 0x09, 0x24, 0x90, 0x24, 0x09, 0x00], # <
|
|
0x396D14: [0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0xFD, 0x00], # =
|
|
0x396D1C: [0x00, 0x00, 0xC0, 0x30, 0x0C, 0x30, 0xC0, 0x00], # >
|
|
0x396D54: [0x00, 0x34, 0x88, 0xAC, 0xA8, 0xAC, 0x80, 0x34], # @
|
|
0x396D5C: [0x00, 0x34, 0x88, 0x88, 0xA8, 0x8C, 0x88, 0x35], # Q
|
|
0x396D64: [0x00, 0x40, 0x80, 0x10, 0x20, 0x04, 0x08, 0x01], # \
|
|
0x396D6C: [0x00, 0x20, 0x14, 0x88, 0x00, 0x00, 0x00, 0x00], # ^
|
|
0x396D9C: [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD], # _
|
|
0x396DA4: [0x00, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00], # `
|
|
0x396DAC: [0x00, 0x08, 0x04, 0x04, 0x20, 0x04, 0x04, 0x08], # {
|
|
0x396DB4: [0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20], # |
|
|
0x396DBC: [0x00, 0x80, 0x10, 0x10, 0x20, 0x10, 0x10, 0x80], # }
|
|
0x396DF4: [0x00, 0x00, 0x00, 0x90, 0x61, 0x0C, 0x00, 0x00], # ~
|
|
}
|
|
|
|
extra_item_sprites = [
|
|
# The VRAM data for all the extra item sprites, including the Archipelago Items.
|
|
|
|
# NOTE: The Archipelago logo is © 2022 by Krista Corkos and Christopher Wilson
|
|
# and licensed under Attribution-NonCommercial 4.0 International.
|
|
# See LICENSES.txt at the root of this apworld's directory for more licensing information.
|
|
|
|
# Maiden Detonator
|
|
0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0xCC, 0x00, 0x00, 0xC1, 0xBB, 0x00, 0x10, 0x1C, 0xB8,
|
|
0x00, 0x10, 0x1C, 0xB1, 0x00, 0x10, 0xBC, 0xBB, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0xCC, 0xBB,
|
|
0x11, 0x00, 0x00, 0x00, 0xCC, 0x01, 0x00, 0x00, 0xBB, 0x1C, 0x00, 0x00, 0x8B, 0xC1, 0x01, 0x00,
|
|
0x1B, 0xC1, 0x01, 0x00, 0xBB, 0xCB, 0x01, 0x00, 0x11, 0x11, 0x00, 0x00, 0xBB, 0xCC, 0x01, 0x00,
|
|
0x00, 0x10, 0x11, 0x11, 0x00, 0xC1, 0xBC, 0x1B, 0x00, 0x10, 0x11, 0x11, 0x00, 0xC1, 0xBC, 0x1B,
|
|
0x00, 0x10, 0x11, 0x11, 0x00, 0xC1, 0xBC, 0x1B, 0x00, 0xC1, 0xBC, 0x1B, 0x00, 0x10, 0x11, 0x01,
|
|
0x11, 0x11, 0x01, 0x00, 0xB1, 0xCB, 0x1C, 0x00, 0x11, 0x11, 0x01, 0x00, 0xB1, 0xCB, 0x1C, 0x00,
|
|
0x11, 0x11, 0x01, 0x00, 0xB1, 0xCB, 0x1C, 0x00, 0xB1, 0xCB, 0x1C, 0x00, 0x10, 0x11, 0x01, 0x00,
|
|
# Archipelago Filler
|
|
0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x88, 0x00, 0x22, 0x82, 0x88, 0x20, 0x66, 0x26, 0x88,
|
|
0x62, 0x66, 0x62, 0x82, 0x62, 0x66, 0x66, 0x82, 0x62, 0x22, 0x62, 0x22, 0x20, 0xAA, 0x2A, 0x00,
|
|
0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x82, 0x22, 0x02, 0x00, 0x28, 0xCC, 0x2C, 0x00,
|
|
0xC2, 0xCC, 0xC2, 0x02, 0xC2, 0xCC, 0xCC, 0x02, 0xC2, 0x22, 0xC2, 0x02, 0x20, 0xFF, 0x2F, 0x00,
|
|
0xA2, 0xAA, 0xA2, 0x02, 0xA2, 0xAA, 0xAA, 0x22, 0xA2, 0xAA, 0x2A, 0x77, 0x20, 0xAA, 0x72, 0x77,
|
|
0x00, 0x22, 0x72, 0x77, 0x00, 0x00, 0x72, 0x77, 0x00, 0x00, 0x20, 0x77, 0x00, 0x00, 0x00, 0x22,
|
|
0xF2, 0xFF, 0xF2, 0x02, 0xF2, 0xFF, 0xFF, 0x02, 0x27, 0xFF, 0xFF, 0x02, 0x72, 0xF2, 0x2F, 0x00,
|
|
0x77, 0x22, 0x02, 0x00, 0x77, 0x02, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
# Archipelago Useful
|
|
0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x88, 0x00, 0x22, 0x82, 0x88, 0x20, 0x66, 0x26, 0x88,
|
|
0x62, 0x66, 0x62, 0x82, 0x62, 0x66, 0x66, 0x82, 0x62, 0x22, 0x62, 0x22, 0x20, 0xAA, 0x2A, 0x00,
|
|
0x02, 0xAA, 0x0A, 0x00, 0x28, 0x9A, 0x0A, 0x00, 0xAA, 0x9A, 0xAA, 0x0A, 0x9A, 0x99, 0x99, 0x0A,
|
|
0xAA, 0x9A, 0xAA, 0x0A, 0xC2, 0x9A, 0xCA, 0x02, 0xC2, 0xAA, 0xCA, 0x02, 0x20, 0xFF, 0x2F, 0x00,
|
|
0xA2, 0xAA, 0xA2, 0x02, 0xA2, 0xAA, 0xAA, 0x22, 0xA2, 0xAA, 0x2A, 0x77, 0x20, 0xAA, 0x72, 0x77,
|
|
0x00, 0x22, 0x72, 0x77, 0x00, 0x00, 0x72, 0x77, 0x00, 0x00, 0x20, 0x77, 0x00, 0x00, 0x00, 0x22,
|
|
0xF2, 0xFF, 0xF2, 0x02, 0xF2, 0xFF, 0xFF, 0x02, 0x27, 0xFF, 0xFF, 0x02, 0x72, 0xF2, 0x2F, 0x00,
|
|
0x77, 0x22, 0x02, 0x00, 0x77, 0x02, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
# Archipelago Progression
|
|
0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x88, 0x00, 0x22, 0x82, 0x88, 0x20, 0x66, 0x26, 0x88,
|
|
0x62, 0x66, 0x62, 0x82, 0x62, 0x66, 0x66, 0x82, 0x62, 0x22, 0x62, 0x22, 0x20, 0xAA, 0x2A, 0x00,
|
|
0x02, 0x10, 0x00, 0x00, 0x28, 0x71, 0x01, 0x00, 0x12, 0x77, 0x17, 0x00, 0x71, 0x77, 0x77, 0x01,
|
|
0x11, 0x77, 0x17, 0x01, 0x12, 0x77, 0x17, 0x02, 0x12, 0x11, 0x11, 0x02, 0x20, 0xFF, 0x2F, 0x00,
|
|
0xA2, 0xAA, 0xA2, 0x02, 0xA2, 0xAA, 0xAA, 0x22, 0xA2, 0xAA, 0x2A, 0x77, 0x20, 0xAA, 0x72, 0x77,
|
|
0x00, 0x22, 0x72, 0x77, 0x00, 0x00, 0x72, 0x77, 0x00, 0x00, 0x20, 0x77, 0x00, 0x00, 0x00, 0x22,
|
|
0xF2, 0xFF, 0xF2, 0x02, 0xF2, 0xFF, 0xFF, 0x02, 0x27, 0xFF, 0xFF, 0x02, 0x72, 0xF2, 0x2F, 0x00,
|
|
0x77, 0x22, 0x02, 0x00, 0x77, 0x02, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
# Archipelago Trap
|
|
0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x88, 0x00, 0x22, 0x82, 0x82, 0x20, 0x66, 0x26, 0x88,
|
|
0x62, 0x62, 0x66, 0x82, 0x62, 0x66, 0x66, 0x82, 0x62, 0x22, 0x62, 0x22, 0x20, 0xAA, 0x2A, 0x00,
|
|
0x02, 0x10, 0x00, 0x00, 0x28, 0x71, 0x01, 0x00, 0x18, 0x77, 0x17, 0x00, 0x71, 0x77, 0x77, 0x01,
|
|
0x11, 0x77, 0x17, 0x01, 0x12, 0x77, 0x17, 0x02, 0x12, 0x11, 0x11, 0x02, 0x20, 0xFF, 0x2F, 0x00,
|
|
0xA2, 0xA2, 0xAA, 0x02, 0xA2, 0xAA, 0xAA, 0x22, 0xA2, 0xAA, 0x2A, 0x77, 0x20, 0xAA, 0x72, 0x72,
|
|
0x00, 0x22, 0x72, 0x77, 0x00, 0x00, 0x72, 0x77, 0x00, 0x00, 0x20, 0x77, 0x00, 0x00, 0x00, 0x22,
|
|
0xF2, 0xF2, 0xFF, 0x02, 0xF2, 0xFF, 0xFF, 0x02, 0x27, 0xFF, 0xFF, 0x02, 0x77, 0xF2, 0x2F, 0x00,
|
|
0x77, 0x22, 0x02, 0x00, 0x77, 0x02, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
# Archipelago Progression + Useful
|
|
0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x88, 0x00, 0x22, 0x82, 0x88, 0x20, 0x66, 0x26, 0x88,
|
|
0x62, 0x66, 0x62, 0x82, 0x62, 0x66, 0x66, 0x82, 0x62, 0x22, 0x62, 0x22, 0x20, 0xAA, 0x2A, 0x00,
|
|
0x02, 0x10, 0x00, 0x00, 0x28, 0x71, 0x01, 0x00, 0x12, 0x77, 0x17, 0x00, 0x71, 0x77, 0x77, 0x01,
|
|
0x11, 0x77, 0x17, 0x01, 0x12, 0x77, 0x17, 0x02, 0x12, 0x11, 0x11, 0x02, 0x20, 0xFF, 0x2F, 0x00,
|
|
0xA2, 0xAA, 0xA2, 0x02, 0xA2, 0xAA, 0xAA, 0x22, 0xA2, 0xAA, 0x2A, 0x77, 0x20, 0xAA, 0x72, 0x77,
|
|
0x00, 0x22, 0x72, 0x77, 0x00, 0x00, 0x72, 0x77, 0x00, 0x00, 0x20, 0x77, 0x00, 0x00, 0x00, 0x22,
|
|
0xF2, 0xFF, 0xF2, 0x02, 0xF2, 0xAA, 0xFA, 0x02, 0x27, 0x9A, 0xFA, 0x02, 0xAA, 0x9A, 0xAA, 0x0A,
|
|
0x9A, 0x99, 0x99, 0x0A, 0xAA, 0x9A, 0xAA, 0x0A, 0x27, 0x9A, 0x0A, 0x00, 0x02, 0xAA, 0x0A, 0x00,
|
|
# Hourglass (Specifically used to represent Max Sand from Timespinner)
|
|
0x00, 0x00, 0xFF, 0xFF, 0x00, 0xF0, 0xEE, 0xCC, 0x00, 0xF0, 0x43, 0x42, 0x00, 0xF0, 0x12, 0x11,
|
|
0x00, 0x00, 0x1F, 0x11, 0x00, 0x00, 0x2F, 0x88, 0x00, 0x00, 0xF0, 0x82, 0x00, 0x00, 0x00, 0x1F,
|
|
0xFF, 0xFF, 0x00, 0x00, 0xCC, 0xEE, 0x0F, 0x00, 0x42, 0x34, 0x0F, 0x00, 0x11, 0x21, 0x0F, 0x00,
|
|
0x11, 0xF1, 0x00, 0x00, 0x98, 0xF2, 0x00, 0x00, 0x29, 0x0F, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x81, 0x00, 0x00, 0x2F, 0x81, 0x00, 0x00, 0x1F, 0x88,
|
|
0x00, 0xF0, 0x12, 0xA9, 0x00, 0xF0, 0x43, 0x24, 0x00, 0xF0, 0xEE, 0xCC, 0x00, 0x00, 0xFF, 0xFF,
|
|
0xF9, 0x00, 0x00, 0x00, 0x19, 0x0F, 0x00, 0x00, 0x99, 0xF2, 0x00, 0x00, 0xA9, 0xF1, 0x00, 0x00,
|
|
0xAA, 0x21, 0x0F, 0x00, 0x42, 0x34, 0x0F, 0x00, 0xCC, 0xEE, 0x0F, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
|
]
|