| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0x14, 0x49,  # ldr  r1, =0x8690080 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0xFA, 0xDB,  # blt  0x8690006 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     # Max Ups | 
					
						
							|  |  |  |     0x11, 0x48,  # ldr  r0, =0x202572C | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0x12, 0x49,  # ldr  r1, =0x8690090 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0xFA, 0xDB,  # blt  0x8690016 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     # Cards | 
					
						
							|  |  |  |     0x0F, 0x48,  # ldr  r0, =0x2025674 | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0x10, 0x49,  # ldr  r1, =0x86900A0 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0xFA, 0xDB,  # blt  0x8690026 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     # Inventory Items (not currently supported) | 
					
						
							|  |  |  |     0x0D, 0x48,  # ldr  r0, =0x20256ED | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0x0E, 0x49,  # ldr  r1, =0x86900C0 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0xFA, 0xDB,  # blt  0x8690036 | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     # 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, | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0x80, 0x00, 0x69, 0x08, | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     0x2C, 0x57, 0x02, 0x02, | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0x90, 0x00, 0x69, 0x08, | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     0x74, 0x56, 0x02, 0x02, | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0xA0, 0x00, 0x69, 0x08, | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  |     0xED, 0x56, 0x02, 0x02, | 
					
						
							| 
									
										
										
										
											2025-06-27 16:25:45 -06:00
										 |  |  |     0xC0, 0x00, 0x69, 0x08, | 
					
						
							| 
									
										
											  
											
												Castlevania: Circle of the Moon - Implement New Game (#3299)
* Add the cotm package with working seed playthrough generation.
* Add the proper event flag IDs for the Item codes.
* Oooops. Put the world completion condition in!
* Adjust the game name and abbreviations.
* Implement more settings.
* Account for too many start_inventory_from_pool cards with Halve DSS Cards Placed.
* Working (albeit very sloooooooooooow) ROM patching.
* Screw you, bsdiff! AP Procedure Patch for life!
* Nuke stage_assert_generate as the ROM is no longer needed for that.
* Working item writing and position adjusting.
* Fix the magic item graphics in Locations wherein they can be fixed.
* Enable sub-weapon shuffle
* Get the seed display working.
* Get the enemy item drop randomization working. Phew!
* Enemy drop rando and seed display fixes.
* Functional Countdown + Early Double setting
* Working multiworld (yay!)
* Fix item links and demo shenanigans.
* Add Wii U VC hash and a docs section explaining the rereleases.
* Change all client read/writes to EWRAM instead of Combined WRAM.
* Custom text insertion foundations.
* Working text converter and word wrap detector.
* More refinements to the text wrap system.
* Well and truly working sent/received messages.
* Add DeathLink and Battle Arena goal options.
* Add tracker stuff, unittests, all locations countdown, presets.
* Add to README, CODEOWNERS, and inno_setup
* Add to README, CODEOWNERS, and inno_setup
* Address some suggestions/problems.
* Switch the Items and Locations to using dataclasses.
* Add note about the alternate classes to the Game Page.
* Oooops, typo!
* Touch up the Options descriptions.
* Fix Battle Arena flag being detected incorrectly on connection and name the locked location/item pairs better.
* Implement option groups
* Swap the Lizard-man Locations into their correct Regions.
* Local start inventory, better DeathLink message handling, handle receiving over 255 of an item.
* Update the PopTracker pack links to no longer point to the Releases page.
* Add Skip Dialogues option.
* Update the presets for the accessibility rework.
* Swap the choices in the accessibility preset options.
* Uhhhhhhh...just see the apworld v4 changelog for this one.
* Ooops, typo!
* .
* Bunch of small stuff
* Correctly change "Fake" to "Breakable" in this comment.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make can_touch_water one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Make broke_iron_maidens one line.
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Fix majors countdown and make can_open_ceremonial_door one line.
* Make the Trap AP Item less obvious.
* Add Progression + Useful stuff, patcher handling for incompatible versions, and fix some mypy stuff.
* Better option groups.
* Change Early Double to Early Escape Item.
* Update DeathLink description and ditch the Menu region.
* Fix the Start Broken choice for Iron Maiden Behavior
* Remove the forced option change with Arena goal + required All Bosses and Arena.
* Update the Game Page with the removal of the forced option combination change.
* Fix client potential to send packets nonstop.
* More review addressing.
* Fix the new select_drop code.
* Fix the new select_drop code for REAL this time.
* Send another LocationScout if we send Location checks without having the Location info.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
											
										 
											2024-12-12 06:47:47 -07:00
										 |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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, | 
					
						
							|  |  |  | ] |