diff --git a/.gitignore b/.gitignore index a43e8f9..3f009e8 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,6 @@ SRC/gfx/titleCredits/*.chr SRC/maps/bank_* SRC/maps/doors.asm SRC/maps/enemyData.asm -SRC/tilesets/*.chr \ No newline at end of file +SRC/tilesets/*.chr +SRC/tilesets/*_collision.asm +SRC/tilesets/*_metatiles.asm diff --git a/Makefile b/Makefile index 1d7c030..22523cd 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,34 @@ +# Constants +ENEMY_SCRIPT_OUT = $(foreach f,\ + spritePointers \ + headerPointers \ + hitboxPointers \ + damageValues \ + nameConstants,\ + SRC/data/enemy_$(f).asm) + +SAMUS_SCRIPT_OUT = $(foreach f,\ + bgHitboxTop \ + blockReformHeightTable \ + bombedFallingPoseTransitionTable \ + bombPoseTransitionTable \ + cannonYOffsetByPose \ + damagePoseTransitionTable \ + drawJumpTable \ + horizontalYOffsets \ + poseConstants \ + poseJumpTable \ + possibleShotDirections \ + spriteHitboxTopTable,\ + SRC/samus/samus_$(f).asm) + +GENERAL_SCRIPT_OUT = $(foreach f,\ + sprites_credits,\ + SRC/data/$(f)Pointers.asm SRC/data/$(f)Constants.asm) + +ALL_CODE = $(shell find SRC/ -type f \( -iname '*.asm' -o -iname '*.chr' \)) + +# Targets all: out/M2RoS.gb #%.2bpp: %.png @@ -6,18 +37,28 @@ all: out/M2RoS.gb #%.1bpp: %.png # rgbgfx -d 1 -o $@ $< -out/game.o: SRC/game.asm SRC/bank_*.asm out - rgbasm -L -o out/game.o -i SRC/ SRC/game.asm +$(ENEMY_SCRIPT_OUT): SRC/data/enemies.csv + python scripts/enemy_csv2asm.py -i $< -o SRC/data + +$(SAMUS_SCRIPT_OUT): SRC/samus/samus.csv + python scripts/samus_csv2asm.py -i $< -o SRC/samus + +$(GENERAL_SCRIPT_OUT): SRC/data/sprites_credits.csv + python scripts/general_csv2asm.py -i $< -o SRC/data -n sprites_credits + +out/game.o: SRC/game.asm out $(ENEMY_SCRIPT_OUT) $(SAMUS_SCRIPT_OUT) $(GENERAL_SCRIPT_OUT) $(ALL_CODE) + rgbasm -o $@ -Weverything -I SRC/ $< -out/M2RoS.gb: out/game.o out +out/M2RoS.gb: out/game.o rgblink -n out/M2RoS.sym -m out/M2RoS.map -o $@ $< - #rgbfix -v -p 255 $@ #Nope + rgbfix -v $@ md5sum $@ + diff --brief $@ Metroid2.gb out: mkdir $@ clean: -# rm -f game.o game.gb game.sym game.map + rm -f out/game.o out/M2RoS.gb out/M2RoS.sym out/M2RoS.map $(ENEMY_SCRIPT_OUT) $(SAMUS_SCRIPT_OUT) $(GENERAL_SCRIPT_OUT) # find . \( -iname '*.1bpp' -o -iname '*.2bpp' \) -exec rm {} + diff --git a/SRC/bank_000.asm b/SRC/bank_000.asm index 7f8315d..e215193 100644 --- a/SRC/bank_000.asm +++ b/SRC/bank_000.asm @@ -332,12 +332,12 @@ mainGameLoop: ;{ 00:02CD ld a, [doorScrollDirection] and a call z, main_readInput - ; Do imporatant stuff + ; Do important stuff call main_handleGameMode call handleAudio_longJump call executeDoorScript - ldh a, [hInputPressed] ; Soft reset + ldh a, [hInputPressed] and PADF_START | PADF_SELECT | PADF_B | PADF_A ;$0f cp PADF_START | PADF_SELECT | PADF_B | PADF_A jp z, bootRoutine @@ -347,7 +347,7 @@ jp mainGameLoop main_handleGameMode: ;{ 0:02F0 ldh a, [gameMode] - rst $28 + rst LOW(RST_28) dw gameMode_Boot ; $00 dw gameMode_Title ; $01 dw gameMode_LoadA ; $02 Setup for playing the game @@ -375,7 +375,7 @@ gameMode_None: ; 00:031B ; Called when frame is done waitForNextFrame: ;{ 00:031C - db $76 ; HALT + halt .vBlankNotDone: ldh a, [hVBlankDoneFlag] @@ -416,7 +416,7 @@ waitForNextFrame: ;{ 00:031C daa ld [gameTimeHours], a jr nz, .endIf - ; Clamp to max IGT (59:99) + ; Clamp to max IGT (99:59) ld a, $59 ld [gameTimeMinutes], a ld a, $99 @@ -920,7 +920,7 @@ prepMapUpdate: ;{ 00:0698 ret ; Should never end up here .up: ; Up - ; If if not scrolling up + ; Exit if not scrolling up ld a, [camera_scrollDirection] bit scrollDirBit_up, a ret z @@ -950,7 +950,7 @@ ret ; Should never end up here jp .row .down: ; Down - ; If if not scrolling down + ; Exit if not scrolling down ld a, [camera_scrollDirection] bit scrollDirBit_down, a ret z @@ -979,7 +979,7 @@ jp .row jr .row .left: ; Left - ; If if not scrolling left + ; Exit if not scrolling left ld a, [camera_scrollDirection] bit scrollDirBit_left, a ret z @@ -1008,7 +1008,7 @@ jr .row jp .column .right: ; Right - ; If if not scrolling right + ; Exit if not scrolling right ld a, [camera_scrollDirection] bit scrollDirBit_right, a ret z @@ -1718,7 +1718,7 @@ handleCamera: ;{ 00:08FE ret ;} -.unusedTable ; 00:0B39 - Unreferenced data of unknown purpose +.unusedTable: ; 00:0B39 - Unreferenced data of unknown purpose db $00, $01, $01, $00, $00, $00, $01, $02, $02, $01, $01 ; Already in a door transition? @@ -1951,7 +1951,7 @@ loadDoorIndex: ;{ 00:0C37 ld a, [debugFlag] and a ret z - ; Check if either A and Start are pressed + ; Check if B + Select is pressed ldh a, [hInputPressed] and PADF_START | PADF_SELECT | PADF_B | PADF_A ;$0f cp PADF_SELECT | PADF_B ;$06 @@ -2058,7 +2058,7 @@ samus_handlePose: ;{ 00:0D21 jp nz, handleTurnaroundTimer ; Take the jump table ld a, [samusPose] - rst $28 + rst LOW(RST_28) ; Table Generated from samus/samus.csv include "samus/samus_poseJumpTable.asm" ;} @@ -3199,6 +3199,7 @@ poseFunc_standing: ;{ 00:13B7 - $00: Standing and PADF_LEFT | PADF_RIGHT ;$30 jr z, .endIf_B ; This check makes it so you can't spin-jump from a standstill without Space Jump. Very strange. + ; It doesn't do much, because almost all spin-jumps are done from at least one frame of running. ld a, [samusItems] bit itemBit_space, a jp z, .normalJump @@ -4187,7 +4188,7 @@ poseFunc_spinJump: ;{ 00:18E8 - $02: Spin jumping jr z, .endIf_L ld a, sfx_square1_standingTransition ld [sfxRequest_square1], a - .endIf_L + .endIf_L: .startFalling: ; Why write to rom? @@ -5426,7 +5427,7 @@ samus_getTileIndex: ;{ 00:1FF5 add h ld h, a ld [pTilemapDestHigh], a - .endIf_A + .endIf_A: ; Wait for HBlank and read once .waitLoop_A: @@ -5640,7 +5641,7 @@ getTileIndex: ;{ 00:2250 - Called by enemy routines add h ld h, a ld [pTilemapDestHigh], a - .endIf + .endIf: ; Wait for HBlank and read once .waitLoop_A: @@ -5736,6 +5737,7 @@ ret ;} ; Function is unused getTilemapCoordinates: ;{ 00:22E1 ; DE = pTilemapDest + ; format is %100110YY YYYXXXXX ld a, [pTilemapDestHigh] ld d, a ld a, [pTilemapDestLow] @@ -5748,24 +5750,27 @@ getTilemapCoordinates: ;{ 00:22E1 rr e dec b jr nz, .loop + ; now E is %10YYYYYX ld a, e - ; The $8x part seems to adjust for the $9800 base address + ; The $8x part adjusts for the $9800 base address ; The $x4 seems to adjust for 2 rows of tiles sub $84 - ; Mask out lowest bit + ; Mask out lowest bit containing X pos MSB and $fe - ; A*4 + 8 + ; now A is %00YYYYY0 - 4 + ; tileY = A*4 + 8 = (%00YYYYY0 - 4)*4 + 8 = %YYYYY000 - 8 + ; this is wrong, it should be %YYYYY000 + OAM_Y_OFS rlca rlca add $08 ld [tileY], a - ; X = (low mod 32)*8 + + ; tileX = (low mod 32)*8 + OAM_X_OFS ld a, [pTilemapDestLow] and $1f rla rla rla - add $08 + add OAM_X_OFS ld [tileX], a ret ;} @@ -9631,7 +9636,7 @@ handleItemPickup: ;{ 00:372F ; Jump to pick-up specific routine ld a, b dec a - rst $28 + rst LOW(RST_28) dw pickup_plasmaBeam dw pickup_iceBeam dw pickup_waveBeam diff --git a/SRC/bank_001.asm b/SRC/bank_001.asm index e3095a9..3760f9c 100644 --- a/SRC/bank_001.asm +++ b/SRC/bank_001.asm @@ -579,7 +579,7 @@ drawSamus: ;{ 01:4BD9 Draw Samus ret z .endIf_B: -.ignoreDamageFrames ; 01:4BF3 - Entry point 2 +.ignoreDamageFrames: ; 01:4BF3 - Entry point 2 ld a, [samusPose] bit 7, a jp nz, drawSamus_faceScreen @@ -613,7 +613,7 @@ drawSamus: ;{ 01:4BD9 Draw Samus ; Jump to the appropriate draw routine ld a, [samusPose] - rst $28 + rst LOW(RST_28) ; Table Generated from samus/samus.csv include "samus/samus_drawJumpTable.asm" ;} @@ -1311,7 +1311,7 @@ getFirstEmptyProjectileSlot: ;{ 01:4FEE ld a, (projectileArray.slotC >> 4) & $0F ;$02 swap a ld l, a - .endIf + .endIf: ; Loop to find first open slot .loop: diff --git a/SRC/bank_002.asm b/SRC/bank_002.asm index 5afdab1..5673405 100644 --- a/SRC/bank_002.asm +++ b/SRC/bank_002.asm @@ -2802,7 +2802,7 @@ ret ; Arachnus / Arachnus Orb enAI_arachnus: ;{ 02:5109 ldh a, [hEnemy.generalVar] - rst $28 + rst LOW(RST_28) dw .state_0 ; Init and start fight dw .state_1 ; Initial bouncing for the intro dw .state_2 ; An additional small bounce for the intro @@ -5328,7 +5328,7 @@ enAI_pipeBug: ;{ 02:5F67 ; Set sprite type depending on current sprite type ldh a, [hEnemy.spriteType] - cp SPRITE_YUMEE_SPAWNER ; $3C + cp SPRITE_YUMEE_SPAWNER_1 ; $3C jr nc, .else_B ld a, SPRITE_GAWRON_1 ; $17 ; Gawron jr .endIf_B @@ -11241,4 +11241,4 @@ enemy_toggleVisibility: ;{ 02:7DF8 ret ;} -bank2_freespace: ; 02:7E05 - Freespace \ No newline at end of file +bank2_freespace: ; 02:7E05 - Freespace diff --git a/SRC/bank_003.asm b/SRC/bank_003.asm index f48ac12..2de137c 100644 --- a/SRC/bank_003.asm +++ b/SRC/bank_003.asm @@ -38,19 +38,19 @@ loadEnemies: ;{ 03:4014 ld h, a push hl ; Get bottom edge of the visible screen, rounded to the nearest block - ld bc, $68 ;$0068 + ld bc, SCRN_Y/2 + $10 + OAM_Y_OFS ;$0068 add hl, bc ld a, l - and $f0 + and $100 - OAM_Y_OFS ld [bottomEdge_pixel], a ld a, h ld [bottomEdge_screen], a pop hl ; Get top edge of visible screen, rounded to the nearest block - ld bc, -$58 ;$ffa8 + ld bc, -SCRN_Y/2 - $10 ;$ffa8 add hl, bc ld a, l - and $f0 + and $100 - OAM_Y_OFS ld [topEdge_pixel], a ld a, h ld [topEdge_screen], a @@ -65,19 +65,19 @@ loadEnemies: ;{ 03:4014 ld h, a push hl ; Get right edge of the visible screen, rounded to the nearest tile - ld bc, $68 ;$0068 + ld bc, SCRN_X/2 + $10 + OAM_X_OFS ;$0068 add hl, bc ld a, l - and $f8 + and $100 - OAM_X_OFS ld [rightEdge_pixel], a ld a, h ld [rightEdge_screen], a pop hl ; Get left edge of the visible screen, rounded to the nearest tile - ld bc, -$60 ;$ffa0 - Just a negative number, not sprite DMA related + ld bc, -SCRN_X/2 - $10 ;$ffa0 add hl, bc ld a, l - and $f8 + and $100 - OAM_X_OFS ld [leftEdge_pixel], a ld a, h ld [leftEdge_screen], a @@ -93,21 +93,21 @@ loadEnemies: ;{ 03:4014 and $0f cp $0f jr nz, .endIf_A - ; We get to this point if the bottom edge of the screen is on the top screen - ; and the top edge of the screen on the bottom screen + ; We get to this point if the bottom edge of the camera is on the top map screen + ; and the top edge of the camera on the bottom map screen. - ; Check if the center of the screen is above or below the seam + ; Check if the center of the camera is above or below the seam ld a, [hCameraYScreen] cp b jr z, .else_B - ; Clamp bottom edge of screen to the bottom edge of the map + ; Clamp bottom edge of camera to the bottom edge of the map ld a, c ; C = topEdge_screen ld [bottomEdge_screen], a ld a, d ; D is $FF ld [bottomEdge_pixel], a jr .endIf_A .else_B: - ; Clamp top edge of screen to the top edge of the map + ; Clamp top edge of camera to the top edge of the map ld a, b ; B = bottomEdge_screen ld [topEdge_screen], a xor a @@ -124,21 +124,21 @@ loadEnemies: ;{ 03:4014 and $0f cp $0f jr nz, .endIf_C - ; We get to this point if the right edge of the screen is on the leftmost screen - ; and the left edge of the screen on the rightmost screen. + ; We get to this point if the right edge of the camera is on the leftmost map screen + ; and the left edge of the camera on the rightmost map screen. - ; Check if the center of the screen is to the left or right of the seam + ; Check if the center of the camera is to the left or right of the seam ld a, [hCameraXScreen] cp b jr z, .else_D - ; Clamp right edge of screen to the right edge of the map + ; Clamp right edge of camera to the right edge of the map ld a, c ; C = leftEdge_screen ld [rightEdge_screen], a ld a, d ; D is $FF ld [rightEdge_pixel], a jr .endIf_C .else_D: - ; Clamp left edge of the screen to the left edge of the map + ; Clamp left edge of the camera to the left edge of the map ld a, b ; B = rightEdge_screen ld [leftEdge_screen], a xor a @@ -212,7 +212,7 @@ loadEnemies_vertical: ;{ 03:40BE ; Load x inc hl ld a, [hl] - and $f8 ; Clamp to nearest tile + and $100 - OAM_X_OFS ; Clamp to nearest tile ld e, a ; Compare with left edge of screen ld a, [leftEdge_pixel] @@ -234,7 +234,7 @@ loadEnemies_vertical: ;{ 03:40BE ; Load y inc hl ld a, [hl] - and $f0 ; Clamp to nearest block + and $100 - OAM_Y_OFS ; Clamp to nearest block ld e, a ; If the clamped enemy Y equals the clamped camera Y ; then load the enemy @@ -279,7 +279,7 @@ jr .left_skipToNext ;} ; Load x pos inc hl ld a, [hl] - and $f8 ; Clamp to nearest tile + and $100 - OAM_X_OFS ; Clamp to nearest tile ld e, a ld a, [rightEdge_pixel] cp e ; Exit if enemy is not to the left side of the right edge @@ -288,7 +288,7 @@ jr .left_skipToNext ;} ; Load y pos inc hl ld a, [hl] - and $f0 ; Clamp to nearest block + and $100 - OAM_Y_OFS ; Clamp to nearest block ld e, a ; If the clamped enemy Y equals the clamped camera Y ; then load the enemy @@ -362,7 +362,7 @@ loadEnemies_horizontal: ;{ 03:416A ; Load x pos inc hl ld a, [hl] - and $f8 ; Clamp to nearest tile + and $100 - OAM_X_OFS ; Clamp to nearest tile ld e, a ; Compare enemy x to seam ld a, [hTemp.a] @@ -376,7 +376,7 @@ loadEnemies_horizontal: ;{ 03:416A ; Load y pos inc hl ld a, [hl] - and $f0 ; Clamp to nearest block + and $100 - OAM_Y_OFS ; Clamp to nearest block ld e, a ; If y pos does not equal top edge, skip to next enemy ld a, [topEdge_pixel] @@ -439,7 +439,7 @@ jr .top_skipToNext ;} ; Load x pos inc hl ld a, [hl] - and $f8 ; Clamp to nearest tile + and $100 - OAM_X_OFS ; Clamp to nearest tile ld e, a ; Compare camera x to enemy x ld a, [hTemp.a] @@ -453,7 +453,7 @@ jr .top_skipToNext ;} ; Load y pos inc hl ld a, [hl] - and $f0 ; Clamp to nearest block + and $100 - OAM_Y_OFS ; Clamp to nearest block ld e, a ; Compare enemy y to camera y ld a, [bottomEdge_pixel] @@ -490,7 +490,7 @@ loadOneEnemy: ;{ 03:422F ld a, [scrollY] ld b, a ld a, [de] ; Load enemy y - add $10 ; Common y adjustment? + add OAM_Y_OFS sub b ld [hl+], a @@ -499,7 +499,7 @@ loadOneEnemy: ;{ 03:422F ld b, a dec de ld a, [de] ; Load enemy x - add $08 ; Common x adjustment? + add OAM_X_OFS sub b ld [hl+], a @@ -747,7 +747,7 @@ enemy_deleteSelf: ;{ 03:6AE7 ld a, [de] cp [hl] ret nz - ; Clear enSprCollision.weaponType, etc. ($ C466, $ C467, $ C468, $ C469) + ; Clear enSprCollision.weaponType, etc. ($C466, $C467, $C468, $C469) dec l ld a, $ff ld [hl+], a @@ -1073,9 +1073,9 @@ queen_initialize: ;{ 03:6D4A jr nz, .clearLoop ; Initial raster split locations - ld a, $67 + ld a, queenInRoom_bodyYTop ld [queen_bodyY], a - ld a, $37 + ld a, queenInRoom_bodyHeight ld [queen_bodyHeight], a ; Enable interrupt @@ -1141,13 +1141,13 @@ queen_initialize: ;{ 03:6D4A jr nz, .wallLoop call queen_adjustWallSpriteToHead - ; Initialize Queen's state + ; Initialize Queen's state to Init fight pt 1 (wait to scream) ld hl, queen_stateList ld a, l ld [queen_pNextStateLow], a ld a, h ld [queen_pNextStateHigh], a - ld a, $17 ; Init fight pt 1 (wait to scream) + ld a, queenState_startA ld [queen_state], a ; Clear enemy slots @@ -1395,7 +1395,7 @@ ret queen_setActorPositions: ;{ 03:6F07 ; Queen body ld hl, queenActor_body + 1 ; $C601 - ; Y + &18 + ; Y + $18 ld a, [queen_bodyY] add $18 ld [hl+], a @@ -1863,20 +1863,20 @@ queen_adjustBodyForCamera: ;{ 03:7190 .endIf: ld c, a - ld a, $67 ; Pixels between the top of the BG map to the top of the queen (minus 1) + ld a, queenInRoom_bodyYTop ; Pixels between the top of the BG map to the top of the queen (minus 1) sub c jr c, .else ; If the top of the camera is above the top of the queen's body ; bodyY = $67 - ScrollY ld [queen_bodyY], a ; height = standard - ld a, $37 + ld a, queenInRoom_bodyHeight ld [queen_bodyHeight], a ret .else: ; If the top of the camera is below the top of the queen's body (normally impossible) - ; height = $67 - ScrollY + $37 (this math doesn't seem right) - ld d, $37 + ; height = $67 - ScrollY + $37 (bottom of body relative to scroll y) + ld d, queenInRoom_bodyHeight add d ld [queen_bodyHeight], a ; Set top of queen's body to top of the screen @@ -2172,7 +2172,8 @@ queen_moveNeck: ;{ 03:72B8 xor a ld [queen_bodyPalette], a call queen_setDefaultNeckAttributes - ld a, $0d ; Prep Samus in mouth + ; Prep Samus in mouth + ld a, queenState_prepEatingSamus ld [queen_state], a ret @@ -2208,7 +2209,7 @@ ret and a jr nz, .else_F ; If not, just immediately retract the neck - ld a, $04 ; Prep retraction + ld a, queenState_prepRetractingNeck ld [queen_state], a ; Clear variables xor a @@ -2217,7 +2218,7 @@ ret jr .saveNeckPointer .else_F: ; If so, just spit Samus out - ld a, $0a ; Spitting Samus out + ld a, queenState_vomitingSamus ld [queen_state], a jr .saveNeckPointer .endIf_E: @@ -2424,7 +2425,7 @@ queen_missileHurt: ;{ 03:7436 ld a, $81 ld [queen_neckStatus], a ; Set state to prep death - ld a, $11 + ld a, queenState_prepDeath ld [queen_state], a ; Clear flags @@ -2471,18 +2472,17 @@ ret ;} ; Queen state table queen_stateList: ;{ 03:7484 - db $00, $02, $04, $02, $04, $06, $14, $ff -; 0 - Walk forward -; 2, 4 - Shove head forward and retract -; 2, 4 - Shove head forward and retract -; 6 - Walk back -; $14 - Spit blobs -; $FF - Repeat + db queenState_prepForwardWalk ; Walk forward + db queenState_prepExtendingNeck, queenState_prepRetractingNeck ; Shove head forward and retract + db queenState_prepExtendingNeck, queenState_prepRetractingNeck ; Shove head forward and retract + db queenState_prepBackwardWalk ; Walk back + db queenState_prepProjectiles ; Spit blobs + db $ff ; Repeat ;} queen_handleState: ; 03:748C ld a, [queen_state] ; Queen's state! - rst $28 + rst LOW(RST_28) dw queenStateFunc_prepForwardWalk ; $00 - 03:7821 - Prep forward walk dw queenStateFunc_forwardWalk ; $01 - 03:783C - Walking forward dw queenStateFunc_prepExtendingNeck ; $02 - 03:7864 - Prep neck extension @@ -2525,7 +2525,7 @@ queenStateFunc_startA: ;{ 03:74C4 - Queen State $17: Start Fight A (wait to scre ld a, $02 ld [queen_headFrameNext], a ; Set state to Start B - ld a, $18 + ld a, queenState_startB ld [queen_state], a ; Make different noises based on aggression flag? ld a, [queen_lowHealthFlag] @@ -2549,7 +2549,7 @@ queenStateFunc_startB: ;{ 03:74EA - Queen State $18: Start Fight B (wait to move ld a, $01 ld [queen_headFrameNext], a ; Set state to Pick Next State - ld a, $0c + ld a, queenState_pickNextState ld [queen_state], a ret ;} @@ -2639,8 +2639,8 @@ queenStateFunc_prepProjectiles: ;{ 03:7519 - Queen State $14: Prep spitting proj ld a, $10 ld [queen_projectileChaseTimer], a - ; Set state - ld a, $15 ; Blobs out + ; Set state to Blobs out + ld a, queenState_projectilesActive ld [queen_state], a ; Set flag to indicate projectiles are active @@ -3158,8 +3158,8 @@ queenStateFunc_prepEatingSamus: ;{ 03:772B - Queen State $0D: Prep Samus in mout ld a, QUEEN_ACTOR_MOUTH_CLOSED ; $F5 ld [queenActor_mouth + 3], a - ; Set state - ld a, $0e ; Samus in mouth (head retracting) + ; Set state to Samus in mouth (head retracting) + ld a, queenState_retractNeckEating ld [queen_state], a ; Decrement neck pointer and save @@ -3174,8 +3174,8 @@ queenStateFunc_retractNeckEating: ;{ 03:776F - Queen State $0E: Samus in mouth ( ; Set eating state to mouth closed and in place ld a, $03 ld [queen_eatingState], a - ; Set state - ld a, $0f ; Samus in mouth/stomach (head retracted) + ; Set state to Samus in mouth/stomach (head retracted) + ld a, queenState_samusEaten ld [queen_state], a ; Animate ld a, $01 @@ -3200,8 +3200,8 @@ queenStateFunc_samusEaten: ;{ 03:7785 - Queen State $0F: Samus in mouth/stomach ld a, $02 ld [queen_headFrameNext], a ld [queen_headFrame], a - ; Set state - ld a, $10 ; Spitting Samus out of mouth + ; Set state to Spitting Samus out of mouth + ld a, queenState_vomitingOutMouth ld [queen_state], a ; Set timer ld a, $3e @@ -3227,8 +3227,8 @@ queenStateFunc_samusEaten: ;{ 03:7785 - Queen State $0F: Samus in mouth/stomach ld a, $08 .killExit: ld [queen_eatingState], a - ; Set state - ld a, $08 ; Queen's stomach just bombed + ; Set state to Queen's stomach just bombed + ld a, queenState_stomachBombed ld [queen_state], a ; Have the queen flash ld a, $93 @@ -3280,7 +3280,7 @@ queenStateFunc_vomitingOutMouth: ;{ 03:77DD - Queen State $10: Spitting Samus o ld [queen_headFrameNext], a ld [queen_headFrame], a ; Pointless state assignment given the jump right there - ld a, $06 ; Prep walking backwards + ld a, queenState_prepBackwardWalk ld [queen_state], a ld hl, queen_stateList + 6 ;$748a jr queenStateFunc_pickNextState.direct ; Set state to queen_stateTable[6] @@ -3319,8 +3319,8 @@ queenStateFunc_prepForwardWalk: ;{ 03:7821 - Queen State $00: Prep forward walk ; Set foot frame ld a, $02 ld [queen_footFrame], a - ; Set state - ld a, $01 ; Walking forward + ; Set state to Walking forward + ld a, queenState_forwardWalk ld [queen_state], a ret ;} @@ -3369,8 +3369,8 @@ queenStateFunc_prepExtendingNeck: ;{ 03:7864 - Queen State $02 - Prep neck exten ld a, $01 ld [queen_neckControl], a ld [queen_neckDrawingState], a - ; Set next state - ld a, $03 ; Extending neck + ; Set next state to Extending neck + ld a, queenState_extendingNeck ld [queen_state], a ; Flip flag every call @@ -3503,8 +3503,8 @@ queenStateFunc_prepRetractingNeck: ;{ 03:78F7 - Queen State $04: Prep neck retra ld a, QUEEN_ACTOR_MOUTH_CLOSED ; $F5 ld [queenActor_mouth + 3], a - ; Set state manually - ld a, $05 ; Retracting neck + ; Set state manually to Retracting neck + ld a, queenState_retractingNeck ld [queen_state], a ; Decrement/save neck pointer (in case it was at the end of the list?) @@ -3531,8 +3531,8 @@ queenStateFunc_prepBackwardWalk: ;{ 03:793B Queen State $06: Prep walking backwa ; Set foot frame ld a, $82 ld [queen_footFrame], a - ; Set state - ld a, $07 ; Walking backward + ; Set state to Walking backward + ld a, queenState_backwardWalk ld [queen_state], a ret ;} @@ -3573,8 +3573,8 @@ queenStateFunc_stomachBombed: ;{ 03:7970 - Queen State $08: Stomach Just Bombed ld [queen_headFrameNext], a ld [queen_headFrame], a - ; Set next state - ld a, $09 ; Prep spitting Samus out of stomach + ; Set next state to Prep spitting Samus out of stomach + ld a, queenState_prepVomitingSamus ld [queen_state], a ; Write diagonal neck sprite @@ -3647,8 +3647,8 @@ queenStateFunc_prepVomitingSamus: ;{ 03:79D0 - Queen State $09: Prep spitting Sa ; Set delay timer for next state ld a, $50 ld [queen_delayTimer], a - ; Set next state - ld a, $0a ; Spitting Samus out + ; Set next state to Spitting Samus out + ld a, queenState_vomitingSamus ld [queen_state], a ret ;} @@ -3685,8 +3685,8 @@ queenStateFunc_vomitingSamus: ;{ 03:79E1 - Queen State $0A: Spitting Samus out o ; Set neck to retract ld a, $02 ld [queen_neckControl], a - ; Set state - ld a, $0b ; Done spitting Samus out + ; Set state to Done spitting Samus out + ld a, queenState_doneVomitingSamus ld [queen_state], a ; Set neck pattern @@ -3748,8 +3748,8 @@ queen_killFromStomach: ;{ 03:7A4D Kill Queen from stomach ld a, $01 ld [queen_neckControl], a ld [queen_neckDrawingState], a - ; Set state - ld a, $11 ; Prep death + ; Set state to Prep death + ld a, queenState_prepDeath ld [queen_state], a ; Clear several variables @@ -3827,7 +3827,7 @@ queenStateFunc_prepDeath: ;{ 03:7ABF - State $11: Prep Death ld a, $50 ld [queen_delayTimer], a ; Set state to disintegrating (dying part 1) - ld a, $12 + ld a, queenState_disintegrate ld [queen_state], a ; Set animation counter ld a, $05 @@ -3944,7 +3944,7 @@ ret ld a, HIGH(queenDeath_bodyStart) ld [queen_pDeleteBodyHigh], a ; Set state to "Dying part 2" - ld a, $13 + ld a, queenState_deleteBody ld [queen_state], a ret ;} @@ -4030,7 +4030,7 @@ queenStateFunc_deleteBody: ;{ 03:7B9D - Queen State $13: Dying Part 2 (delete bo jr nz, .clearLoop ; Iterate to next row - ld de, $0015 + ld de, $0020 - $0b add hl, de ; Check if we're at the end @@ -4051,7 +4051,7 @@ queenStateFunc_deleteBody: ;{ 03:7B9D - Queen State $13: Dying Part 2 (delete bo ld [metroidCountDisplayed], a ld [metroidCountReal], a ; Set state to that stub right down there - ld a, $16 + ld a, queenState_allDone ld [queen_state], a ; Shuffle counter and play noise ld a, $80 @@ -4234,7 +4234,7 @@ VBlank_drawQueen: ;{ 03:7CF0 ld [rSCX], a ld a, [scrollY] ld [rSCY], a - ; Set head X position + ; Set head X position (prevent rWX from being 166 due to hardware bug) ld a, [queen_headX] cp $a6 jr nz, .endIf_A @@ -4245,10 +4245,10 @@ VBlank_drawQueen: ;{ 03:7CF0 ; Set head Y position ld a, [queen_headY] ld [rWY], a - add $26 - cp $90 + add queenInRoom_headHeight + cp SCRN_Y jr c, .endIf_B - ld a, $8f + ld a, SCRN_Y-1 .endIf_B: ld [queen_headBottomY], a @@ -4257,9 +4257,9 @@ VBlank_drawQueen: ;{ 03:7CF0 ld b, a ld a, [queen_bodyHeight] add b - cp $90 + cp SCRN_Y jr c, .endIf_C - ld a, $8f + ld a, SCRN_Y-1 .endIf_C: ld d, a @@ -4269,9 +4269,11 @@ VBlank_drawQueen: ;{ 03:7CF0 ld a, [queen_bodyY] sub b jr c, .elseIf_D + ; bodyY >= headBottomY ; Decide whether "disable window" is the only interrupt for its scanline or not ld c, $83 jr z, .endIf_E + ; bodyY > headBottomY ld c, $03 .endIf_E: ; Write y pos of initial interrupt @@ -4294,12 +4296,15 @@ VBlank_drawQueen: ;{ 03:7CF0 jr .endIf_D .elseIf_D: + ; bodyY < headBottomY ld a, b sub d jr c, .else_D + ; headBottomY >= bodyBottomY ; Decide whether the "restore room" command will be the only iterrupt on its scanline ld c, $82 jr z, .endIf_F + ; headBottomY > bodyBottomY ld c, $02 .endIf_F: ; Set the y position of the initial interrupt to the top of the queen's body @@ -4321,6 +4326,7 @@ VBlank_drawQueen: ;{ 03:7CF0 ld [hl], $03 jr .endIf_D .else_D: + ; headBottomY < bodyBottomY ; Set y pos of inital interrupt to top of queen's body ld a, [queen_bodyY] ld [hl+], a diff --git a/SRC/bank_004.asm b/SRC/bank_004.asm index 91a40ba..b948dfc 100644 --- a/SRC/bank_004.asm +++ b/SRC/bank_004.asm @@ -308,7 +308,7 @@ playSongInterruption: ld [sfxPlayingBackup_lowHealthBeep], a xor a ld [sfxPlaying_lowHealthBeep], a - .endIf_notEarthquake + .endIf_notEarthquake: ld a, [audioChannelOutputStereoFlags] ld [audioChannelOutputStereoFlagsBackup], a @@ -632,7 +632,7 @@ handleChannelSoundEffect_wave: ld hl, songSoundEffectPlaybackFunctionPointers_wave call loadPointerFromTable jp hl - .endif_sfxPlaying + .endif_sfxPlaying: xor a ld [sfxPlaying_wave], a @@ -2353,7 +2353,7 @@ square1Sfx_init_1: jr c, .endIf cp sfx_square1_shootingSpazerBeam jp c, handleChannelSoundEffect_square1.playing - .endIf + .endIf: ld a, [songPlaying] cp song_chozoRuins @@ -2430,7 +2430,7 @@ square1Sfx_init_2: jr c, .endIf cp sfx_square1_shootingSpazerBeam jp c, handleChannelSoundEffect_square1.playing - .endIf + .endIf: ld a, [songPlaying] cp song_chozoRuins @@ -3180,7 +3180,7 @@ square1Sfx_init_18: call nz, .endIf ; Vanilla bug: call instead of jr ld a, $02 ld [samusHealthChangedOptionSetIndex], a - .endIf + .endIf: cp $01 jr z, .set1 @@ -3311,7 +3311,7 @@ square1Sfx_playback_1B: ldh [rAUD1LOW], a ld [sfxVariableFrequency_square1], a ret - .endIf + .endIf: ld a, [sfxVariableFrequency_square1] dec a @@ -5691,28 +5691,28 @@ macro WaveOptionSet ; [volume], [frequency] dw \2 | $8000 endm -.healthUnder20_0 ; $5EFF +.healthUnder20_0: ; $5EFF WaveOptionSet 1, $4F0 -.healthUnder20_1 ; $5F04 +.healthUnder20_1: ; $5F04 WaveOptionSet 2, $4D0 -.healthUnder30_0 ; $5F09 +.healthUnder30_0: ; $5F09 WaveOptionSet 1, $4C4 -.healthUnder30_1 ; $5F0E +.healthUnder30_1: ; $5F0E WaveOptionSet 2, $4C4 -.healthUnder40_0 ; $5F13 +.healthUnder40_0: ; $5F13 WaveOptionSet 1, $4B6 -.healthUnder40_1 ; $5F18 +.healthUnder40_1: ; $5F18 WaveOptionSet 2, $4B6 -.healthUnder50_0 ; $5F1D +.healthUnder50_0: ; $5F1D WaveOptionSet 1, $4A3 -.healthUnder50_1 ; $5F22 +.healthUnder50_1: ; $5F22 WaveOptionSet 2, $4A3 ;} diff --git a/SRC/bank_005.asm b/SRC/bank_005.asm index cc26cea..bb277e0 100644 --- a/SRC/bank_005.asm +++ b/SRC/bank_005.asm @@ -445,7 +445,7 @@ titleScreenRoutine: ;{ 05:4118 ; Play sound ld a, sfx_square1_select ld [sfxRequest_square1], a - ; Play Samus fanfare + ; Play Samus fanfare (made redundant later on by loadGame_samusData) ld a, $12 ld [songRequest], a @@ -586,7 +586,7 @@ titleCursorTable: ; 05:42E1 ;------------------------------------------------------------------------------ ; Screen transitions doorPointerTable:: ; 05:42E5 -include "maps/door macros.asm" +include "maps/door_macros.asm" include "maps/doors.asm" doorData_end: ; Label used by the LAMP editor @@ -701,7 +701,7 @@ ret ; Animate Samus during credits credits_animateSamus: ;{ 05:5620 ld a, [credits_samusAnimState] - rst $28 + rst LOW(RST_28) dw .standingStart ; 00 dw .running ; 01 dw .unused ; 02 - Unused stub @@ -1315,7 +1315,7 @@ credits_drawSamus: ;{ 05:5989 ret ;} credits_drawSamusJumpTable: ;{ 05:598D - rst $28 + rst LOW(RST_28) dw .run_frameA ; 00 - Samus running dw .run_frameB ; 01 - Samus running dw .run_frameC ; 02 - Samus running @@ -1595,4 +1595,4 @@ gfx_theEnd: incbin "gfx/titleCredits/theEnd.chr" bank5_freespace: ; 05:7F34 -- filled with $00 (nop) -;EoF \ No newline at end of file +;EoF diff --git a/SRC/bank_007.asm b/SRC/bank_007.asm index 431aca6..4ce2520 100644 --- a/SRC/bank_007.asm +++ b/SRC/bank_007.asm @@ -14,16 +14,16 @@ gfx_lavaCavesA:: incbin "tilesets/lavaCavesA.chr", 0,$530 gfx_lavaCavesB:: incbin "tilesets/lavaCavesB.chr", 0,$530 gfx_lavaCavesC:: incbin "tilesets/lavaCavesC.chr", 0,$530 -; 7:7790 - Item graphics (0x40 each) +; 07:7790 - Item graphics (0x40 each) ; Plasma Beam, Ice Beam, Wave Beam, Spazer Beam ; Bombs, Screw Attack, Varia Suit, High Jump Boots ; Space Jump, Spider Ball, Spring Ball gfx_items:: incbin "gfx/items.chr" -; 7:7A50 - Item Orb +; 07:7A50 - Item Orb gfx_itemOrb:: incbin "gfx/itemOrb.chr" -; 7:7A90 - Missile Tank, Door, Missile Block, Refills +; 07:7A90 - Missile Tank, Door, Missile Block, Refills gfx_commonItems:: incbin "gfx/commonItems.chr" -bank7_freespace: ; 7:7B90 -- Freespace +bank7_freespace: ; 07:7B90 -- Freespace diff --git a/SRC/bank_008.asm b/SRC/bank_008.asm index bd86a17..f63985d 100644 --- a/SRC/bank_008.asm +++ b/SRC/bank_008.asm @@ -78,12 +78,12 @@ earthquakeCheck:: ;{ 08:7EBC: .return: ret -; Earthquake threshholds (terminated with $FF) +; Earthquake thresholds (terminated with $FF) .thresholds: db $46, $42, $34, $24, $23, $21, $14, $13, $12, $09, $01, $ff ;} -; 8:7EEA - Collision Table Pointers +; 08:7EEA - Collision Table Pointers collisionPointerTable:: dw collision_plantBubbles ; 0 dw collision_ruinsInside ; 1 @@ -94,10 +94,10 @@ collisionPointerTable:: dw collision_ruinsExt ; 6 dw collision_finalLab ; 7 -; 8:7EFA Solidity threshholds +; 08:7EFA Solidity thresholds solidityIndexTable:: include "tilesets/solidityValues.asm" -; 8:7F1A Metatile definition pointers +; 08:7F1A Metatile definition pointers metatilePointerTable:: dw metatiles_finalLab ; 0 - 2 dw metatiles_ruinsInside ; 1 - 1 @@ -110,4 +110,4 @@ metatilePointerTable:: dw metatiles_lavaCavesMid ; 8 - 6 dw metatiles_ruinsExt ; 9 - 9 -bank8_freespace: ; 7:7B90 - Freespace (filled with $00) +bank8_freespace: ; 08:7F2E - Freespace (filled with $00) diff --git a/SRC/constants.asm b/SRC/constants.asm index 46665d2..18226ad 100644 --- a/SRC/constants.asm +++ b/SRC/constants.asm @@ -77,6 +77,11 @@ def blockType_save = 7 ;Save pillar ; Samus' pose constants ($D020) include "samus/samus_poseConstants.asm" +; queen constants +def queenInRoom_bodyYTop = $67 +def queenInRoom_bodyHeight = $37 +def queenInRoom_headHeight = $26 + ; charmaps PUSHC diff --git a/SRC/data/enemies.csv b/SRC/data/enemies.csv index 3375576..0caaf4b 100644 --- a/SRC/data/enemies.csv +++ b/SRC/data/enemies.csv @@ -1,5 +1,5 @@ -enSprite_tsumuriHori_frame1,enHead_crawlerRight,hitbox_block,$08,,,Tsumuri,$00 -enSprite_tsumuriHori_frame2,enHead_crawlerLeft,hitbox_block,$08,,,Tsumuri,$01 +enSprite_tsumuriHori_frame1,enHead_crawlerRight,hitbox_block,$08,SPRITE_TSUMURI_RIGHT,,Tsumuri,$00 +enSprite_tsumuriHori_frame2,enHead_crawlerLeft,hitbox_block,$08,SPRITE_TSUMURI_LEFT,,Tsumuri,$01 enSprite_tsumuriVert_frame1,enHead_NULL,hitbox_block,$08,,,Tsumuri,$02 enSprite_tsumuriVert_frame2,enHead_NULL,hitbox_block,$08,,,Tsumuri,$03 enSprite_skreek_frame1,enHead_skreek,hitbox6A6F,$10,SPRITE_SKREEK_1,,Skreek,$04 @@ -16,38 +16,38 @@ enSprite_drivelSpit_frame3,enHead_NULL,hitbox_tile,$03,SPRITE_DRIVEL_SPIT_3,,Dri enSprite_drivelSpit_frame4,enHead_NULL,hitbox6A43,$03,SPRITE_DRIVEL_SPIT_4,,Drivel projectile,$0F enSprite_drivelSpit_frame5,enHead_NULL,hitbox6A7B,$03,,,Drivel projectile,$10 enSprite_drivelSpit_frame6,enHead_NULL,hitbox6AA7,$03,SPRITE_DRIVEL_SPIT_6,,Drivel projectile,$11 -enSprite_smallBug_frame1,enHead_smallBug,hitbox6A43,$05,,,Small bugs,$12 +enSprite_smallBug_frame1,enHead_smallBug,hitbox6A43,$05,SPRITE_SMALLBUG_1,,Small bugs,$12 enSprite_smallBug_frame2,enHead_NULL,hitbox6A43,$05,,,Small bugs,$13 -enSprite_hornoad_frame1,enHead_hornoad,hitbox6A6F,$10,,,Hornoad,$14 +enSprite_hornoad_frame1,enHead_hornoad,hitbox6A6F,$10,SPRITE_HORNOAD_1,,Hornoad,$14 enSprite_hornoad_frame2,enHead_NULL,hitbox6A6F,$10,,,Hornoad,$15 -enSprite_senjoo,enHead_senjoo,hitbox6A6F,$15,,,Senjoo,$16 +enSprite_senjoo,enHead_senjoo,hitbox6A6F,$15,SPRITE_SENJOO,,Senjoo,$16 enSprite_gawron_frame1,enHead_NULL,hitbox_block,$08,SPRITE_GAWRON_1,,Gawron,$17 enSprite_gawron_frame2,enHead_NULL,hitbox_block,$08,SPRITE_GAWRON_2,,Gawron,$18 -enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,,,Gawron spawner?,$19 -enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,,,Gawron spawner?,$1A +enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,SPRITE_GAWRON_SPAWNER_1,,Gawron spawner?,$19 +enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,SPRITE_GAWRON_SPAWNER_2,,Gawron spawner?,$1A enSprite_chuteLeech_frame1,enHead_chuteLeech,hitbox6A47,$12,SPRITE_CHUTELEECH_1,,Chute leech,$1B enSprite_chuteLeech_frame2,enHead_NULL,hitbox_block,$12,SPRITE_CHUTELEECH_2,,Chute leech,$1C enSprite_chuteLeech_frame3,enHead_NULL,hitbox6A6F,$12,SPRITE_CHUTELEECH_3,,Chute leech,$1D enSprite_autrack_frame1,enHead_autrackFlipped,hitbox_block,$15,SPRITE_AUTRACK_FLIPPED,,(uses same spritemap as 41h autrack),$1E enSprite_wallfire_frame1,enHead_wallfireFlipped,hitbox6A8F,$15,SPRITE_WALLFIRE_FLIPPED,,(uses same spritemap as 4Ah wallfire),$1F -enSprite_needler_frame1,enHead_crawlerRight,hitbox_block,$10,,,Needler,$20 -enSprite_needler_frame2,enHead_crawlerLeft,hitbox_block,$10,,,Needler,$21 +enSprite_needler_frame1,enHead_crawlerRight,hitbox_block,$10,SPRITE_NEEDLER_RIGHT,,Needler,$20 +enSprite_needler_frame2,enHead_crawlerLeft,hitbox_block,$10,SPRITE_NEEDLER_LEFT,,Needler,$21 enSprite_needler_frame1,enHead_NULL,hitbox_block,$10,,,Needler,$22 enSprite_needler_frame2,enHead_NULL,hitbox_block,$10,,,Needler,$23 enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$24 enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$25 enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$26 enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$27 -enSprite_skorpVert,enHead_skorpUp,hitbox6A93,$11,,,Skorp,$28 -enSprite_skorpVert,enHead_skorpDown,hitbox6A93,$11,,,Skorp,$29 -enSprite_skorpHori,enHead_skorpRight,hitbox6A6F,$11,,,Skorp,$2A -enSprite_skorpHori,enHead_skorpLeft,hitbox6A6F,$11,,,Skorp,$2B +enSprite_skorpVert,enHead_skorpUp,hitbox6A93,$11,SPRITE_SKORP_UP,,Skorp,$28 +enSprite_skorpVert,enHead_skorpDown,hitbox6A93,$11,SPRITE_SKORP_DOWN,,Skorp,$29 +enSprite_skorpHori,enHead_skorpRight,hitbox6A6F,$11,SPRITE_SKORP_RIGHT,,Skorp,$2A +enSprite_skorpHori,enHead_skorpLeft,hitbox6A6F,$11,SPRITE_SKORP_LEFT,,Skorp,$2B enSprite_glowFly_frame1,enHead_glowFly,hitbox6A8F,$10,SPRITE_GLOWFLY_IDLE_1,,Glow fly,$2C enSprite_glowFly_frame2,enHead_NULL,hitbox6A8F,$10,SPRITE_GLOWFLY_IDLE_2,,Glow fly,$2D enSprite_glowFly_frame3,enHead_NULL,hitbox_block,$10,SPRITE_GLOWFLY_WINDUP,,Glow fly,$2E enSprite_glowFly_frame4,enHead_NULL,hitbox_block,$10,SPRITE_GLOWFLY_MOVING,,Glow fly,$2F -enSprite_moheekHori_frame1,enHead_moheekRight,hitbox_block,$13,,,Moheek,$30 -enSprite_moheekHori_frame2,enHead_moheekLeft,hitbox_block,$13,,,Moheek,$31 +enSprite_moheekHori_frame1,enHead_moheekRight,hitbox_block,$13,SPRITE_MOHEEK_RIGHT,,Moheek,$30 +enSprite_moheekHori_frame2,enHead_moheekLeft,hitbox_block,$13,SPRITE_MOHEEK_LEFT,,Moheek,$31 enSprite_moheekVert_frame1,enHead_NULL,hitbox_block,$13,,,Moheek,$32 enSprite_moheekVert_frame2,enHead_NULL,hitbox_block,$13,,,Moheek,$33 enSprite_rockIcicle_frame1,enHead_rockIcicle,hitbox_tile,$00,SPRITE_ROCKICICLE_IDLE_1,,Rock icicle,$34 @@ -58,8 +58,8 @@ enSprite_yumee_frame1,enHead_NULL,hitbox_block,$12,SPRITE_YUMEE_1,,Yumee,$38 enSprite_yumee_frame2,enHead_NULL,hitbox_block,$12,SPRITE_YUMEE_2,,Yumee,$39 enSprite_yumee_frame3,enHead_NULL,hitbox6A5B,$12,SPRITE_YUMEE_3,,Yumee,$3A enSprite_yumee_frame4,enHead_NULL,hitbox6A5B,$12,,,Yumee,$3B -enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,SPRITE_YUMEE_SPAWNER,,Yumee spawner?,$3C -enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,,,Yumee spawner?,$3D +enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,SPRITE_YUMEE_SPAWNER_1,,Yumee spawner?,$3C +enSprite_blankTile,enHead_pipeBug,hitbox_point,$00,SPRITE_YUMEE_SPAWNER_2,,Yumee spawner?,$3D enSprite_octroll_frame1,enHead_NULL,hitbox_octroll,$20,SPRITE_OCTROLL_1,,Octroll,$3E enSprite_octroll_frame2,enHead_NULL,hitbox_octroll,$20,,,Octroll,$3F enSprite_octroll_frame3,enHead_octroll,hitbox_octroll,$20,SPRITE_OCTROLL_3,,Octroll,$40 @@ -68,7 +68,7 @@ enSprite_autrack_frame2,enHead_NULL,hitbox_autrackMid,$15,,,Autrack,$42 enSprite_autrack_frame3,enHead_NULL,hitbox_autrackTall,$15,SPRITE_AUTRACK_3,,Autrack,$43 enSprite_autrack_frame4,enHead_NULL,hitbox_autrackTall,$15,SPRITE_AUTRACK_4,,Autrack,$44 enSprite_autrackShot,enHead_NULL,hitbox6A43,$10,SPRITE_AUTRACK_LASER,,Autrack projectile,$45 -enSprite_autoad_frame1,enHead_autoad,hitbox6A6F,$15,,,Autoad,$46 +enSprite_autoad_frame1,enHead_autoad,hitbox6A6F,$15,SPRITE_AUTOAD_1,,Autoad,$46 enSprite_autoad_frame2,enHead_NULL,hitbox6A6F,$15,SPRITE_AUTOAD_2,,Autoad,$47 enSprite_sideAutoad_frame1,enHead_NULL,hitbox6A93,$00,,,Sideways Autoad (unused),$48 enSprite_sideAutoad_frame2,enHead_NULL,hitbox6A93,$00,,,Sideways Autoad (unused),$49 @@ -99,15 +99,15 @@ enSprite_automShot_frame4,enHead_NULL,hitbox6ACF,$10,,,Autom projectile,$61 enSprite_automShot_frame5,enHead_NULL,hitbox6ACF,$10,,,Autom projectile,$62 enSprite_shirk_frame1,enHead_shirk,hitbox6A97,$15,SPRITE_SHIRK_1,,Shirk,$63 enSprite_shirk_frame2,enHead_NULL,hitbox6A97,$15,SPRITE_SHIRK_2,,Shirk,$64 -enSprite_septogg_frame1,enHead_septogg,hitbox6A93,$FF,,,Septogg,$65 +enSprite_septogg_frame1,enHead_septogg,hitbox6A93,$FF,SPRITE_SEPTOGG_1,,Septogg,$65 enSprite_septogg_frame2,enHead_NULL,hitbox6A93,$FF,,,Septogg,$66 enSprite_moto_frame1,enHead_NULL,hitbox6A93,$20,,,Moto,$67 enSprite_moto_frame2,enHead_moto,hitbox6A93,$20,SPRITE_MOTO_2,,Moto,$68 enSprite_moto_frame3,enHead_NULL,hitbox6A93,$20,,,Moto,$69 -enSprite_halzyn,enHead_halzyn,hitbox6A67,$10,,,Halzyn,$6A -enSprite_ramulken_frame1,enHead_ramulken,hitbox6A6F,$20,,,Ramulken,$6B +enSprite_halzyn,enHead_halzyn,hitbox6A67,$10,SPRITE_HALZYN,,Halzyn,$6A +enSprite_ramulken_frame1,enHead_ramulken,hitbox6A6F,$20,SPRITE_RAMULKEN_1,,Ramulken,$6B enSprite_ramulken_frame2,enHead_NULL,hitbox6A6F,$20,,,Ramulken,$6C -enSprite_blankTile,enHead_metroidStinger,hitbox_block,$00,,,Musical stinger event trigger,$6D +enSprite_blankTile,enHead_metroidStinger,hitbox_block,$00,SPRITE_METROID_STINGER,,Musical stinger event trigger,$6D enSprite_proboscum_frame1,enHead_proboscumFlipped,hitbox6A43,$FF,SPRITE_PROBOSCUM_FLIPPED,,(uses same spritemap as 72h proboscum),$6E enSprite_none,enHead_NULL,hitbox6A43,$00,,,(no graphics),$6F enSprite_none,enHead_NULL,hitbox6A43,$00,,,(no graphics),$70 @@ -115,7 +115,7 @@ enSprite_none,enHead_NULL,hitbox6A43,$00,,,(no graphics),$71 enSprite_proboscum_frame1,enHead_proboscum,hitbox6A47,$FF,SPRITE_PROBOSCUM_1,,Proboscum,$72 enSprite_proboscum_frame2,enHead_NULL,hitbox_point,$00,SPRITE_PROBOSCUM_2,,Proboscum,$73 enSprite_proboscum_frame3,enHead_NULL,hitbox_point,$00,SPRITE_PROBOSCUM_3,,Proboscum,$74 -enSprite_missileBlock,enHead_missileBlock,hitbox_block,$FF,,,Missile block,$75 +enSprite_missileBlock,enHead_missileBlock,hitbox_block,$FF,SPRITE_MISSILE_BLOCK,,Missile block,$75 enSprite_arachnus_frame1,enHead_arachnus,hitbox_block,$20,SPRITE_ARACHNUS_ROLL_1,,Arachnus,$76 enSprite_arachnus_frame2,enHead_arachnus,hitbox_block,$20,,,Arachnus,$77 enSprite_arachnus_frame3,enHead_arachnus,hitbox6ABB,$20,SPRITE_ARACHNUS_UPRIGHT_1,,Arachnus,$78 @@ -126,35 +126,35 @@ enSprite_arachnusShot_frame2,enHead_NULL,hitbox6A77,$02,SPRITE_ARACHNUS_FIREBALL enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$7D enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$7E enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$7F -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Plasma beam orb,$80 -enSprite_item,enHead_item,hitbox_tile,$00,SPRITE_ITEM_BASE_ID,,Plasma beam,$81 -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,QUEEN_ACTOR_BENT_NECK,Ice beam orb (and bent neck of Queen’s vomiting pose!?),$82 +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_PLASMA_BEAM_ORB,,Plasma beam orb,$80 +enSprite_item,enHead_item,hitbox_tile,$00,,SPRITE_ITEM_BASE_ID,Plasma beam,$81 +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_ICE_BEAM_ORB,QUEEN_ACTOR_BENT_NECK,Ice beam orb (and bent neck of Queen’s vomiting pose!?),$82 enSprite_item,enHead_item,hitbox_tile,$00,,,Ice beam,$83 -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Wave beam orb,$84 +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_WAVE_BEAM_ORB,,Wave beam orb,$84 enSprite_item,enHead_item,hitbox_tile,$00,,,Wave beam,$85 -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Spazer beam orb,$86 +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_SPAZER_ORB,,Spazer beam orb,$86 enSprite_item,enHead_item,hitbox_tile,$00,,,Spazer beam,$87 -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Bombs orb,$88 +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_BOMB_ORB,,Bombs orb,$88 enSprite_item,enHead_item,hitbox_tile,$00,,,Bombs,$89 -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Screw attack orb,$8A +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_SCREW_ATTACK_ORB,,Screw attack orb,$8A enSprite_item,enHead_item,hitbox_tile,$00,,,Screw attack,$8B -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Varia suit orb,$8C +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_VARIA_ORB,,Varia suit orb,$8C enSprite_item,enHead_item,hitbox_tile,$00,,,Varia suit,$8D -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Hi-jump boots orb,$8E +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_HIGH_JUMP_BOOTS_ORB,,Hi-jump boots orb,$8E enSprite_item,enHead_item,hitbox_tile,$00,,,Hi-jump boots,$8F -enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,Space jump orb,$90 +enSprite_itemOrb,enHead_item,hitbox_block,$FF,SPRITE_SPACE_JUMP_ORB,,Space jump orb,$90 enSprite_item,enHead_item,hitbox_tile,$00,,,Space jump,$91 enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,(spider ball orb?),$92 -enSprite_item,enHead_item,hitbox_tile,$00,,,Spider ball,$93 +enSprite_item,enHead_item,hitbox_tile,$00,SPRITE_SPIDER_BALL_ITEM,,Spider ball,$93 enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,(spring ball orb?),$94 enSprite_item,enHead_item,hitbox_tile,$00,SPRITE_SPRING_BALL_ITEM,,Spring ball,$95 enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,(energy tank orb?),$96 -enSprite_energyTank,enHead_item,hitbox_tile,$00,,,Energy tank,$97 +enSprite_energyTank,enHead_item,hitbox_tile,$00,SPRITE_ENERGY_TANK,,Energy tank,$97 enSprite_itemOrb,enHead_item,hitbox_block,$FF,,,(missile tank orb?),$98 -enSprite_missileTank,enHead_item,hitbox_tile,$00,,,Missile tank,$99 -enSprite_blobThrower,enHead_blobThrower,hitboxC360,$30,,,Blob thrower (sprite is written to WRAM),$9A +enSprite_missileTank,enHead_item,hitbox_tile,$00,SPRITE_MISSILE_TANK,,Missile tank,$99 +enSprite_blobThrower,enHead_blobThrower,hitboxC360,$30,SPRITE_BLOB_THROWER,,Blob thrower (sprite is written to WRAM),$9A enSprite_energyRefill,enHead_item,hitbox_refill,$00,SPRITE_ENERGY_REFILL,,Energy refill,$9B -enSprite_itemOrb,enHead_arachnusOrb,hitbox_block,$FF,,,Arachnus orb,$9C +enSprite_itemOrb,enHead_arachnusOrb,hitbox_block,$FF,SPRITE_ARACHNUS_ORB,,Arachnus orb,$9C enSprite_missileRefill,enHead_item,hitbox_refill,$00,SPRITE_MISSILE_REFILL,,Missile refill,$9D enSprite_blob_frame1,enHead_NULL,hitbox_tile,$10,SPRITE_BLOB_1,,Blob thrower projectile,$9E enSprite_blob_frame2,enHead_NULL,hitbox_tile,$10,SPRITE_BLOB_2,,Blob thrower projectile,$9F @@ -217,7 +217,7 @@ enSprite_gravitt_frame3,enHead_NULL,hitbox_block,$10,SPRITE_GRAVITT_5,,Gravitt,$ enSprite_gullugg_frame1,enHead_gullugg,hitbox6A93,$12,SPRITE_GULLUGG_1,,Gullugg,$D8 enSprite_gullugg_frame2,enHead_NULL,hitbox6A93,$12,,,Gullugg,$D9 enSprite_gullugg_frame3,enHead_NULL,hitbox6A93,$12,SPRITE_GULLUGG_3,,Gullugg,$DA -enSprite_egg_frame2,enHead_NULL,hitbox_point,$00,,,Baby metroid egg preview,$DB +enSprite_egg_frame2,enHead_NULL,hitbox_point,$00,SPRITE_EGG_PREVIEW,,Baby metroid egg preview,$DB enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$DC enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$DD enSprite_none,enHead_NULL,hitbox_point,$00,,,(no graphics),$DE diff --git a/SRC/data/enemy_nameConstants.asm b/SRC/data/enemy_nameConstants.asm index d641e49..c046ed1 100644 --- a/SRC/data/enemy_nameConstants.asm +++ b/SRC/data/enemy_nameConstants.asm @@ -1,4 +1,6 @@ ; This file was automatically generated from enemies.csv. Please do not edit this directly. +def SPRITE_TSUMURI_RIGHT = $00 ; Tsumuri +def SPRITE_TSUMURI_LEFT = $01 ; Tsumuri def SPRITE_SKREEK_1 = $04 ; Skreek def SPRITE_SKREEK_3 = $06 ; Skreek def SPRITE_SKREEK_4 = $07 ; Skreek @@ -8,17 +10,30 @@ def SPRITE_DRIVEL_3 = $0B ; Drivel def SPRITE_DRIVEL_SPIT_3 = $0E ; Drivel projectile def SPRITE_DRIVEL_SPIT_4 = $0F ; Drivel projectile def SPRITE_DRIVEL_SPIT_6 = $11 ; Drivel projectile +def SPRITE_SMALLBUG_1 = $12 ; Small bugs +def SPRITE_HORNOAD_1 = $14 ; Hornoad +def SPRITE_SENJOO = $16 ; Senjoo def SPRITE_GAWRON_1 = $17 ; Gawron def SPRITE_GAWRON_2 = $18 ; Gawron +def SPRITE_GAWRON_SPAWNER_1 = $19 ; Gawron spawner? +def SPRITE_GAWRON_SPAWNER_2 = $1A ; Gawron spawner? def SPRITE_CHUTELEECH_1 = $1B ; Chute leech def SPRITE_CHUTELEECH_2 = $1C ; Chute leech def SPRITE_CHUTELEECH_3 = $1D ; Chute leech def SPRITE_AUTRACK_FLIPPED = $1E ; (uses same spritemap as 41h autrack) def SPRITE_WALLFIRE_FLIPPED = $1F ; (uses same spritemap as 4Ah wallfire) +def SPRITE_NEEDLER_RIGHT = $20 ; Needler +def SPRITE_NEEDLER_LEFT = $21 ; Needler +def SPRITE_SKORP_UP = $28 ; Skorp +def SPRITE_SKORP_DOWN = $29 ; Skorp +def SPRITE_SKORP_RIGHT = $2A ; Skorp +def SPRITE_SKORP_LEFT = $2B ; Skorp def SPRITE_GLOWFLY_IDLE_1 = $2C ; Glow fly def SPRITE_GLOWFLY_IDLE_2 = $2D ; Glow fly def SPRITE_GLOWFLY_WINDUP = $2E ; Glow fly def SPRITE_GLOWFLY_MOVING = $2F ; Glow fly +def SPRITE_MOHEEK_RIGHT = $30 ; Moheek +def SPRITE_MOHEEK_LEFT = $31 ; Moheek def SPRITE_ROCKICICLE_IDLE_1 = $34 ; Rock icicle def SPRITE_ROCKICICLE_IDLE_2 = $35 ; Rock icicle def SPRITE_ROCKICICLE_MOVING_1 = $36 ; Rock icicle @@ -26,13 +41,15 @@ def SPRITE_ROCKICICLE_MOVING_2 = $37 ; Rock icicle def SPRITE_YUMEE_1 = $38 ; Yumee def SPRITE_YUMEE_2 = $39 ; Yumee def SPRITE_YUMEE_3 = $3A ; Yumee -def SPRITE_YUMEE_SPAWNER = $3C ; Yumee spawner? +def SPRITE_YUMEE_SPAWNER_1 = $3C ; Yumee spawner? +def SPRITE_YUMEE_SPAWNER_2 = $3D ; Yumee spawner? def SPRITE_OCTROLL_1 = $3E ; Octroll def SPRITE_OCTROLL_3 = $40 ; Octroll def SPRITE_AUTRACK_1 = $41 ; Autrack def SPRITE_AUTRACK_3 = $43 ; Autrack def SPRITE_AUTRACK_4 = $44 ; Autrack def SPRITE_AUTRACK_LASER = $45 ; Autrack projectile +def SPRITE_AUTOAD_1 = $46 ; Autoad def SPRITE_AUTOAD_2 = $47 ; Autoad def SPRITE_WALLFIRE_1 = $4A ; Wallfire def SPRITE_WALLFIRE_2 = $4B ; Wallfire @@ -54,21 +71,40 @@ def SPRITE_AUTOM_SHOT_1 = $5E ; Autom projectile def SPRITE_AUTOM_SHOT_3 = $60 ; Autom projectile def SPRITE_SHIRK_1 = $63 ; Shirk def SPRITE_SHIRK_2 = $64 ; Shirk +def SPRITE_SEPTOGG_1 = $65 ; Septogg def SPRITE_MOTO_2 = $68 ; Moto +def SPRITE_HALZYN = $6A ; Halzyn +def SPRITE_RAMULKEN_1 = $6B ; Ramulken +def SPRITE_METROID_STINGER = $6D ; Musical stinger event trigger def SPRITE_PROBOSCUM_FLIPPED = $6E ; (uses same spritemap as 72h proboscum) def SPRITE_PROBOSCUM_1 = $72 ; Proboscum def SPRITE_PROBOSCUM_2 = $73 ; Proboscum def SPRITE_PROBOSCUM_3 = $74 ; Proboscum +def SPRITE_MISSILE_BLOCK = $75 ; Missile block def SPRITE_ARACHNUS_ROLL_1 = $76 ; Arachnus def SPRITE_ARACHNUS_UPRIGHT_1 = $78 ; Arachnus def SPRITE_ARACHNUS_UPRIGHT_2 = $79 ; Arachnus def SPRITE_ARACHNUS_UPRIGHT_3 = $7A ; Arachnus def SPRITE_ARACHNUS_FIREBALL_1 = $7B ; Arachnus projectile def SPRITE_ARACHNUS_FIREBALL_2 = $7C ; Arachnus projectile +def SPRITE_PLASMA_BEAM_ORB = $80 ; Plasma beam orb def SPRITE_ITEM_BASE_ID = $81 ; Plasma beam +def SPRITE_ICE_BEAM_ORB = $82 ; Ice beam orb (and bent neck of Queen’s vomiting pose!?) def QUEEN_ACTOR_BENT_NECK = $82 ; Ice beam orb (and bent neck of Queen’s vomiting pose!?) +def SPRITE_WAVE_BEAM_ORB = $84 ; Wave beam orb +def SPRITE_SPAZER_ORB = $86 ; Spazer beam orb +def SPRITE_BOMB_ORB = $88 ; Bombs orb +def SPRITE_SCREW_ATTACK_ORB = $8A ; Screw attack orb +def SPRITE_VARIA_ORB = $8C ; Varia suit orb +def SPRITE_HIGH_JUMP_BOOTS_ORB = $8E ; Hi-jump boots orb +def SPRITE_SPACE_JUMP_ORB = $90 ; Space jump orb +def SPRITE_SPIDER_BALL_ITEM = $93 ; Spider ball def SPRITE_SPRING_BALL_ITEM = $95 ; Spring ball +def SPRITE_ENERGY_TANK = $97 ; Energy tank +def SPRITE_MISSILE_TANK = $99 ; Missile tank +def SPRITE_BLOB_THROWER = $9A ; Blob thrower (sprite is written to WRAM) def SPRITE_ENERGY_REFILL = $9B ; Energy refill +def SPRITE_ARACHNUS_ORB = $9C ; Arachnus orb def SPRITE_MISSILE_REFILL = $9D ; Missile refill def SPRITE_BLOB_1 = $9E ; Blob thrower projectile def SPRITE_BLOB_2 = $9F ; Blob thrower projectile @@ -109,6 +145,7 @@ def SPRITE_GRAVITT_1 = $D3 ; Gravitt def SPRITE_GRAVITT_5 = $D7 ; Gravitt def SPRITE_GULLUGG_1 = $D8 ; Gullugg def SPRITE_GULLUGG_3 = $DA ; Gullugg +def SPRITE_EGG_PREVIEW = $DB ; Baby metroid egg preview def SPRITE_SMALL_HEALTH = $E0 ; Small health drop def SPRITE_SCREW_EXPLOSION_START = $E2 ; Metroid death / missile door / screw attack explosion def SPRITE_SCREW_EXPLOSION_END = $E7 ; Metroid death / missile door / screw attack explosion diff --git a/SRC/data/sprites_creditsConstants.asm b/SRC/data/sprites_creditsConstants.asm deleted file mode 100644 index 8c62be8..0000000 --- a/SRC/data/sprites_creditsConstants.asm +++ /dev/null @@ -1,35 +0,0 @@ -; This file was automatically generated from ./SRC/data/sprites_credits.csv. Please do not edit this directly. -def SPRITE_TITLE_START = $00 ; -def SPRITE_TITLE_CLEAR = $01 ; -def SPRITE_TITLE_CURSOR_1 = $02 ; -def SPRITE_TITLE_CURSOR_2 = $03 ; -def SPRITE_TITLE_CURSOR_3 = $04 ; -def SPRITE_TITLE_STAR = $06 ; -def SPRITE_CREDITS_SUITED_STANDING = $07 ; -def SPRITE_CREDITS_SUITED_RUNNING_TOP_1 = $08 ; -def SPRITE_CREDITS_SUITED_RUNNING_TOP_2 = $09 ; -def SPRITE_CREDITS_SUITED_RUNNING_TOP_3 = $0A ; -def SPRITE_CREDITS_SUITED_RUNNING_BOTTOM_1 = $0B ; -def SPRITE_CREDITS_SUITED_RUNNING_BOTTOM_2 = $0C ; -def SPRITE_CREDITS_SUITLESS_HEAD_1 = $0E ; -def SPRITE_CREDITS_SUITLESS_ARM_1 = $0F ; -def SPRITE_CREDITS_SUITLESS_BOTTOM = $10 ; -def SPRITE_CREDITS_SUITLESS_KNEELING = $11 ; -def SPRITE_CREDITS_SUITED_KNEELING = $12 ; -def SPRITE_CREDITS_SUITLESS_ARM_2 = $13 ; -def SPRITE_CREDITS_SUITLESS_ARM_3 = $14 ; Arm and head, actually -def SPRITE_CREDITS_SUITLESS_HEAD_2 = $15 ; -def SPRITE_CREDITS_SUITLESS_HEAD_3 = $16 ; -def SPRITE_CREDITS_SUITLESS_HEAD_4 = $17 ; -def SPRITE_CREDITS_SUITLESS_HEAD_5 = $18 ; -def SPRITE_CREDITS_SUITLESS_HEAD_6 = $19 ; -def SPRITE_CREDITS_SUITLESS_HEAD_7 = $1A ; -def SPRITE_CREDITS_STAR_SMALL = $1B ; Code assumes the index of this is even to toggle between drawing small and large stars (via a bitwise AND) -def SPRITE_CREDITS_STAR_LARGE = $1C ; -def SPRITE_CREDITS_SPINJUMP_1 = $1F ; -def SPRITE_CREDITS_SPINJUMP_2 = $20 ; -def SPRITE_CREDITS_SPINJUMP_3 = $21 ; -def SPRITE_CREDITS_SPINJUMP_4 = $22 ; -def SPRITE_TITLE_FILE_1 = $23 ; File 1 -def SPRITE_TITLE_FILE_2 = $24 ; File 2 -def SPRITE_TITLE_FILE_3 = $25 ; File 3 diff --git a/SRC/data/sprites_creditsPointers.asm b/SRC/data/sprites_creditsPointers.asm deleted file mode 100644 index 1acbf5a..0000000 --- a/SRC/data/sprites_creditsPointers.asm +++ /dev/null @@ -1,39 +0,0 @@ -; This file was automatically generated from ./SRC/data/sprites_credits.csv. Please do not edit this directly. - dw sprite_titleStart ; - dw sprite_titleClear ; - dw sprite_titleCursor_frameA ; - dw sprite_titleCursor_frameB ; - dw sprite_titleCursor_frameC ; - dw sprite_titleCursor_frameUnused ; Unused - dw sprite_titleStar ; - dw sprite_creditsSuitedStanding ; - dw sprite_creditsSuitedRunningTop_frameA ; - dw sprite_creditsSuitedRunningTop_frameB ; - dw sprite_creditsSuitedRunningTop_frameC ; - dw sprite_creditsSuitedRunningBottom_frameA ; - dw sprite_creditsSuitedRunningBottom_frameB ; - dw sprite_titleStar ; Unused duplicate - dw sprite_creditsSuitlessHead_frameA ; - dw sprite_creditsSuitlessArm_frameA ; - dw sprite_creditsSuitlessBottom ; - dw sprite_creditsSuitlessKneeling ; - dw sprite_creditsSuitedKneeling ; - dw sprite_creditsSuitlessArm_frameB ; - dw sprite_creditsSuitlessArm_frameC ; Arm and head, actually - dw sprite_creditsSuitlessHead_frameB ; - dw sprite_creditsSuitlessHead_frameC ; - dw sprite_creditsSuitlessHead_frameD ; - dw sprite_creditsSuitlessHead_frameE ; - dw sprite_creditsSuitlessHead_frameF ; - dw sprite_creditsSuitlessHead_frameG ; - dw sprite_creditsStarSmall ; Code assumes the index of this is even to toggle between drawing small and large stars (via a bitwise AND) - dw sprite_creditsStarLarge ; - dw sprite_creditsUnusedThe ; The "The End" tiles are 16 tiles later outside the OAM range. - dw sprite_creditsUnusedEnd ; but if you switched the graphics around, the tiles would map perfectly. - dw sprite_creditsSpinJump_frameA ; - dw sprite_creditsSpinJump_frameB ; - dw sprite_creditsSpinJump_frameC ; - dw sprite_creditsSpinJump_frameD ; - dw sprite_titleFile1 ; File 1 - dw sprite_titleFile2 ; File 2 - dw sprite_titleFile3 ; File 3 diff --git a/SRC/macros.asm b/SRC/macros.asm index 444ddaf..794e749 100644 --- a/SRC/macros.asm +++ b/SRC/macros.asm @@ -135,35 +135,35 @@ macro Echo2 endm macro SongNote ; [note name in "[A-G]b?[2-7]" format] - def _note equs strsub(\1, 1, strlen(\1) - 1) - def _octave equs strsub(\1, -1, 1) + def _note equs strslice(\1, 0, strlen(\1) - 1) + def _octave equs strslice(\1, strlen(\1) - 1) def _i_octave equ _octave - 2 static_assert _i_octave < 6, "Invalid note octave" - if strcmp("{_note}", "C") == 0 + if "{_note}" === "C" def _i_note equ 0 - elif strcmp("{_note}", "Db") == 0 + elif "{_note}" === "Db" def _i_note equ 1 - elif strcmp("{_note}", "D") == 0 + elif "{_note}" === "D" def _i_note equ 2 - elif strcmp("{_note}", "Eb") == 0 + elif "{_note}" === "Eb" def _i_note equ 3 - elif strcmp("{_note}", "E") == 0 + elif "{_note}" === "E" def _i_note equ 4 - elif strcmp("{_note}", "F") == 0 + elif "{_note}" === "F" def _i_note equ 5 - elif strcmp("{_note}", "Gb") == 0 + elif "{_note}" === "Gb" def _i_note equ 6 - elif strcmp("{_note}", "G") == 0 + elif "{_note}" === "G" def _i_note equ 7 - elif strcmp("{_note}", "Ab") == 0 + elif "{_note}" === "Ab" def _i_note equ 8 - elif strcmp("{_note}", "A") == 0 + elif "{_note}" === "A" def _i_note equ 9 - elif strcmp("{_note}", "Bb") == 0 + elif "{_note}" === "Bb" def _i_note equ $A - elif strcmp("{_note}", "B") == 0 + elif "{_note}" === "B" def _i_note equ $B else fail "Invalid note name" diff --git a/SRC/maps/door macros.asm b/SRC/maps/door_macros.asm similarity index 100% rename from SRC/maps/door macros.asm rename to SRC/maps/door_macros.asm diff --git a/SRC/ram/wram.asm b/SRC/ram/wram.asm index 6e7e5ae..7a6dc40 100644 --- a/SRC/ram/wram.asm +++ b/SRC/ram/wram.asm @@ -166,6 +166,33 @@ queen_neckStatus: ds 1 ; $C3C1 - 0x81 = "done extending", 0x82 = "done retractin queen_walkSpeed: ds 1 ; $C3C2 - Used for adjusting the queen's head's position queen_state: ds 1 ; $C3C3 - Metroid Queen's state +; { + def queenState_prepForwardWalk equ $00 ; Prep forward walk + def queenState_forwardWalk equ $01 ; Walking forward + def queenState_prepExtendingNeck equ $02 ; Prep neck extension + def queenState_extendingNeck equ $03 ; Extending neck + def queenState_prepRetractingNeck equ $04 ; Prep retraction + def queenState_retractingNeck equ $05 ; Retracting neck + def queenState_prepBackwardWalk equ $06 ; Prep backwards walking + def queenState_backwardWalk equ $07 ; Walking backward + def queenState_stomachBombed equ $08 ; Stomach just bombed + def queenState_prepVomitingSamus equ $09 ; Prep spitting Samus out of stomach + def queenState_vomitingSamus equ $0A ; Spitting Samus out of stomach + def queenState_doneVomitingSamus equ $0B ; Done spitting Samus out of stomach + def queenState_pickNextState equ $0C ; Init fight pt 3 (choose next state) + def queenState_prepEatingSamus equ $0D ; Prep Samus in mouth + def queenState_retractNeckEating equ $0E ; Samus in mouth (head retracting) + def queenState_samusEaten equ $0F ; Samus in mouth/stomach (head retracted) + def queenState_vomitingOutMouth equ $10 ; Spitting Samus out of mouth + def queenState_prepDeath equ $11 ; Prep death + def queenState_disintegrate equ $12 ; Dying pt 1 (disintegrating) + def queenState_deleteBody equ $13 ; Dying pt 2 + def queenState_prepProjectiles equ $14 ; Prepping blob spit + def queenState_projectilesActive equ $15 ; Blobs out + def queenState_allDone equ $16 ; Dying pt 3 + def queenState_startA equ $17 ; Start Fight A (wait to scream) + def queenState_startB equ $18 ; Start Fight B (wait to move) +; } queen_pNextStateLow: ds 1 ; $C3C4 - Pointer to the next state number (low byte) queen_pNextStateHigh: ds 1 ; $C3C5 - "" (high byte) diff --git a/SRC/tilesets/caveFirst_collision.asm b/SRC/tilesets/caveFirst_collision.asm deleted file mode 100644 index 96ecbf2..0000000 --- a/SRC/tilesets/caveFirst_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_caveFirst - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $80, $80, $80, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $01, $01, $01 - db $01, $01, $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $04, $04, $04, $00, $01, $01 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00 - db $00, $00, $00, $00, $01, $01, $01, $01, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/caveFirst_metatiles.asm b/SRC/tilesets/caveFirst_metatiles.asm deleted file mode 100644 index 499c9da..0000000 --- a/SRC/tilesets/caveFirst_metatiles.asm +++ /dev/null @@ -1,33 +0,0 @@ -; metatiles_caveFirst - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $ff, $ff, $78, $79 - db $ff, $ff, $7a, $7b, $61, $74, $5d, $5e, $75, $62, $5f, $60, $28, $29, $29, $28 - db $ff, $ff, $ff, $ff, $18, $19, $1a, $1b, $63, $64, $65, $66, $0c, $0d, $0f, $0e - db $34, $35, $38, $39, $36, $37, $3a, $3b, $3c, $3d, $40, $41, $3e, $3f, $42, $43 - db $0c, $0d, $0e, $0f, $ff, $ff, $6c, $6c, $6c, $6c, $6d, $6d, $6d, $6d, $6d, $6d - db $30, $33, $29, $2c, $6d, $6d, $30, $33, $6d, $6d, $32, $31, $32, $31, $2d, $28 - db $28, $29, $29, $2a, $28, $29, $2b, $28, $28, $2a, $29, $2e, $2b, $29, $2f, $28 - db $28, $2e, $29, $2e, $2f, $29, $2f, $28, $28, $2c, $29, $28, $2d, $29, $29, $28 - db $30, $31, $29, $28, $30, $33, $29, $2e, $32, $31, $2f, $28, $7f, $7e, $7d, $7c - db $7f, $7e, $7d, $0c, $7f, $7e, $0d, $7c, $7f, $0e, $7d, $7c, $0f, $7e, $7d, $7c - db $ff, $7e, $7d, $7c, $7f, $ff, $7d, $7c, $7f, $7e, $ff, $7c, $7f, $7e, $7d, $ff - db $ff, $7e, $ff, $7c, $7f, $ff, $7d, $ff, $ff, $ff, $7d, $7c, $7f, $7e, $ff, $ff - db $61, $74, $5d, $76, $75, $62, $77, $60, $6e, $6f, $6f, $6e, $70, $71, $72, $73 - db $28, $29, $ff, $ff, $ff, $ff, $29, $28, $28, $ff, $29, $ff, $ff, $29, $ff, $28 - db $ff, $ff, $ff, $0c, $ff, $ff, $0d, $ff, $ff, $0e, $ff, $ff, $0f, $ff, $ff, $ff - db $20, $21, $22, $23, $6d, $6d, $30, $31, $1c, $1d, $1e, $1f, $67, $67, $67, $67 - db $17, $58, $4e, $4f, $58, $17, $ff, $58, $17, $4f, $4f, $ff, $59, $5a, $ff, $ff - db $5b, $5c, $ff, $ff, $ff, $ff, $10, $11, $12, $13, $14, $15, $14, $15, $14, $15 - db $44, $47, $48, $4b, $44, $45, $48, $49, $46, $45, $4a, $49, $46, $47, $4a, $4b - db $4c, $4d, $4c, $4d, $4e, $4f, $ff, $ff, $68, $69, $68, $69, $6a, $6b, $6a, $6b - db $24, $25, $27, $26, $26, $27, $25, $24, $26, $27, $ff, $24, $24, $25, $25, $ff - db $26, $27, $16, $24, $24, $25, $25, $16, $24, $25, $ff, $ff, $26, $27, $ff, $ff - db $16, $ff, $ff, $ff, $ff, $16, $ff, $ff, $50, $56, $51, $57, $56, $50, $57, $51 - db $52, $53, $54, $55, $54, $55, $52, $53, $28, $29, $59, $5a, $28, $29, $5b, $5c - db $54, $55, $54, $55, $56, $56, $57, $57, $52, $53, $1c, $1d, $1e, $1f, $52, $53 - db $1e, $1f, $1c, $1d, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff diff --git a/SRC/tilesets/finalLab_collision.asm b/SRC/tilesets/finalLab_collision.asm deleted file mode 100644 index 2f95ef0..0000000 --- a/SRC/tilesets/finalLab_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_finalLab - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $08, $00, $00, $00, $00, $00 - db $00, $00, $08, $08, $04, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $04, $04, $04, $04, $00, $08, $00, $00, $00, $00 - db $00, $00, $00, $00, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/finalLab_metatiles.asm b/SRC/tilesets/finalLab_metatiles.asm deleted file mode 100644 index d2df833..0000000 --- a/SRC/tilesets/finalLab_metatiles.asm +++ /dev/null @@ -1,33 +0,0 @@ -; metatiles_finalLab - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $58, $59, $5a, $5b - db $5c, $5d, $5e, $5f, $6c, $6d, $6e, $6f, $6a, $6a, $6a, $6a, $0c, $0f, $0c, $0f - db $ff, $ff, $ff, $ff, $52, $53, $ff, $ff, $0c, $0d, $ff, $ff, $0e, $0d, $ff, $ff - db $0e, $0f, $ff, $ff, $6a, $6a, $ff, $ff, $ff, $6a, $ff, $ff, $6a, $ff, $ff, $ff - db $ff, $ff, $ff, $76, $ff, $ff, $77, $ff, $10, $11, $14, $15, $12, $13, $16, $17 - db $18, $19, $1c, $1d, $1a, $1b, $1e, $1f, $ff, $ff, $20, $21, $ff, $ff, $7b, $ff - db $22, $23, $27, $28, $24, $25, $29, $2a, $26, $ff, $2b, $2c, $ff, $ff, $79, $7a - db $36, $37, $1c, $1d, $38, $ff, $1e, $1f, $26, $ff, $2b, $7d, $ff, $ff, $75, $75 - db $ff, $ff, $7d, $75, $ff, $ff, $75, $7d, $ff, $ff, $2d, $78, $2e, $2f, $32, $33 - db $30, $31, $34, $35, $3b, $3b, $3b, $3c, $3b, $3b, $3c, $3c, $3b, $3c, $3c, $3c - db $48, $49, $4c, $4d, $4a, $4b, $4e, $4f, $70, $49, $72, $4d, $4a, $71, $4e, $73 - db $ff, $7c, $7c, $ff, $7c, $ff, $7c, $ff, $ff, $7c, $ff, $7c, $7c, $7c, $ff, $7c - db $56, $60, $57, $61, $60, $60, $61, $61, $60, $56, $61, $57, $54, $55, $40, $41 - db $42, $42, $43, $43, $74, $74, $74, $74, $46, $47, $54, $55, $46, $47, $40, $41 - db $44, $ff, $74, $45, $ff, $45, $44, $74, $ff, $ff, $3a, $3a, $6b, $6b, $74, $74 - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $0c, $0f, $ff, $ff, $7c, $7c, $7c, $7c - db $50, $51, $52, $53, $51, $52, $ff, $51, $50, $53, $53, $ff, $3d, $3e, $7f, $3e - db $3e, $3e, $3e, $3e, $3e, $3f, $3e, $7e, $62, $63, $5a, $5b, $5c, $5d, $64, $65 - db $0c, $0d, $0c, $0f, $0e, $0f, $0c, $0d, $0c, $0d, $0e, $0f, $0e, $0f, $0c, $0f - db $6a, $6a, $ff, $6a, $6a, $6a, $6a, $ff, $ff, $6a, $6a, $6a, $6a, $ff, $6a, $6a - db $ff, $6a, $ff, $6a, $6a, $ff, $6a, $ff, $ff, $70, $ff, $72, $71, $ff, $73, $ff - db $ff, $ff, $62, $63, $64, $65, $ff, $ff, $ff, $ff, $39, $21, $3a, $3a, $6b, $6b - db $66, $67, $ff, $ff, $68, $69, $ff, $ff, $50, $51, $66, $67, $50, $51, $68, $69 - db $74, $74, $42, $42, $43, $43, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff diff --git a/SRC/tilesets/lavaCavesEmpty_metatiles.asm b/SRC/tilesets/lavaCavesEmpty_metatiles.asm deleted file mode 100644 index 67cac5b..0000000 --- a/SRC/tilesets/lavaCavesEmpty_metatiles.asm +++ /dev/null @@ -1,19 +0,0 @@ -; metatiles_lavaCavesEmpty - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $47, $47, $3A, $3A - db $20, $21, $22, $23, $20, $21, $22, $23, $20, $21, $22, $23, $20, $21, $26, $27 - db $24, $25, $26, $27, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF - db $FF, $FF, $46, $46, $46, $46, $46, $46, $32, $33, $33, $32, $32, $33, $33, $32 - db $32, $33, $37, $36, $36, $37, $37, $36, $32, $35, $35, $FF, $36, $39, $39, $46 - db $34, $33, $FF, $34, $38, $37, $46, $38, $47, $47, $3A, $3A, $48, $48, $3B, $3B - db $3C, $3C, $49, $49, $3C, $3C, $49, $49, $3D, $3D, $4A, $4A, $FF, $30, $FF, $FF - db $30, $FF, $FF, $FF, $FF, $30, $FF, $FF, $30, $FF, $FF, $FF, $46, $31, $46, $46 - db $31, $46, $46, $46, $28, $29, $2A, $2B, $28, $29, $2A, $2B, $28, $29, $2A, $2B - db $28, $29, $2E, $2F, $2C, $2D, $2E, $2F, $20, $29, $22, $2B, $20, $29, $22, $2B - db $20, $29, $22, $2B, $20, $29, $26, $2F, $24, $2D, $26, $2F, $28, $21, $2A, $23 - db $28, $21, $2A, $23, $28, $21, $2A, $23, $28, $21, $2E, $27, $2C, $25, $2E, $27 - db $FF, $FF, $4B, $4C, $FF, $FF, $4D, $4E, $10, $42, $14, $15, $43, $13, $16, $17 - db $FF, $FF, $4B, $4C, $FF, $FF, $4D, $4E, $10, $42, $14, $15, $43, $13, $16, $17 - db $FF, $FF, $4B, $4C, $FF, $FF, $4D, $4E, $10, $42, $14, $15, $43, $13, $16, $17 - db $0C, $0D, $0E, $0F, $32, $33, $33, $32, $32, $35, $35, $FF, $34, $33, $FF, $34 - db $3E, $3F, $40, $41, $3E, $3F, $40, $41, $3E, $3F, $40, $41, $3E, $3F, $19, $1A - db $11, $12, $19, $1A diff --git a/SRC/tilesets/lavaCavesFull_metatiles.asm b/SRC/tilesets/lavaCavesFull_metatiles.asm deleted file mode 100644 index 31e6c32..0000000 --- a/SRC/tilesets/lavaCavesFull_metatiles.asm +++ /dev/null @@ -1,19 +0,0 @@ -; metatiles_lavaCavesFull - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $48, $48, $3B, $3B - db $24, $25, $26, $27, $24, $25, $26, $27, $24, $25, $26, $27, $24, $25, $26, $27 - db $24, $25, $26, $27, $46, $46, $46, $46, $46, $46, $46, $46, $46, $46, $46, $46 - db $46, $46, $46, $46, $46, $46, $46, $46, $36, $37, $37, $36, $36, $37, $37, $36 - db $36, $37, $37, $36, $36, $37, $37, $36, $36, $39, $39, $46, $36, $39, $39, $46 - db $38, $37, $46, $38, $38, $37, $46, $38, $48, $48, $3B, $3B, $48, $48, $3B, $3B - db $3D, $3D, $4A, $4A, $3D, $3D, $4A, $4A, $3D, $3D, $4A, $4A, $46, $31, $46, $46 - db $31, $46, $46, $46, $46, $31, $46, $46, $31, $46, $46, $46, $46, $31, $46, $46 - db $31, $46, $46, $46, $2C, $2D, $2E, $2F, $2C, $2D, $2E, $2F, $2C, $2D, $2E, $2F - db $2C, $2D, $2E, $2F, $2C, $2D, $2E, $2F, $24, $2D, $26, $2F, $24, $2D, $26, $2F - db $24, $2D, $26, $2F, $24, $2D, $26, $2F, $24, $2D, $26, $2F, $2C, $25, $2E, $27 - db $2C, $25, $2E, $27, $2C, $25, $2E, $27, $2C, $25, $2E, $27, $2C, $25, $2E, $27 - db $46, $46, $4F, $50, $46, $46, $51, $52, $18, $44, $1C, $1D, $45, $1B, $1E, $1F - db $46, $46, $4F, $50, $46, $46, $51, $52, $18, $44, $1C, $1D, $45, $1B, $1E, $1F - db $46, $46, $4F, $50, $46, $46, $51, $52, $18, $44, $1C, $1D, $45, $1B, $1E, $1F - db $0C, $0D, $0E, $0F, $36, $37, $37, $36, $36, $39, $39, $46, $38, $37, $46, $38 - db $11, $12, $19, $1A, $11, $12, $19, $1A, $11, $12, $19, $1A, $11, $12, $19, $1A - db $11, $12, $19, $1A \ No newline at end of file diff --git a/SRC/tilesets/lavaCavesMid_metatiles.asm b/SRC/tilesets/lavaCavesMid_metatiles.asm deleted file mode 100644 index d707d9d..0000000 --- a/SRC/tilesets/lavaCavesMid_metatiles.asm +++ /dev/null @@ -1,19 +0,0 @@ -; metatiles_lavaCavesMid - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $47, $47, $3a, $3a - db $20, $21, $22, $23, $20, $21, $26, $27, $24, $25, $26, $27, $24, $25, $26, $27 - db $24, $25, $26, $27, $ff, $ff, $ff, $ff, $ff, $ff, $46, $46, $46, $46, $46, $46 - db $46, $46, $46, $46, $46, $46, $46, $46, $32, $33, $37, $36, $36, $37, $37, $36 - db $36, $37, $37, $36, $36, $37, $37, $36, $36, $39, $39, $46, $36, $39, $39, $46 - db $38, $37, $46, $38, $38, $37, $46, $38, $48, $48, $3b, $3b, $48, $48, $3b, $3b - db $3c, $3c, $49, $49, $3d, $3d, $4a, $4a, $3d, $3d, $4a, $4a, $ff, $30, $ff, $ff - db $30, $ff, $ff, $ff, $46, $31, $46, $46, $31, $46, $46, $46, $46, $31, $46, $46 - db $31, $46, $46, $46, $28, $29, $2a, $2b, $28, $29, $2e, $2f, $2c, $2d, $2e, $2f - db $2c, $2d, $2e, $2f, $2c, $2d, $2e, $2f, $20, $29, $22, $2b, $20, $29, $26, $2f - db $24, $2d, $26, $2f, $24, $2d, $26, $2f, $24, $2d, $26, $2f, $28, $21, $2a, $23 - db $28, $21, $2e, $27, $2c, $25, $2e, $27, $2c, $25, $2e, $27, $2c, $25, $2e, $27 - db $ff, $ff, $4b, $4c, $ff, $ff, $4d, $4e, $10, $42, $14, $15, $43, $13, $16, $17 - db $ff, $ff, $4b, $4c, $ff, $ff, $4d, $4e, $10, $42, $1c, $1d, $43, $13, $1e, $1f - db $46, $46, $4f, $50, $46, $46, $51, $52, $18, $44, $1c, $1d, $45, $1b, $1e, $1f - db $0c, $0d, $0e, $0f, $32, $33, $33, $32, $32, $35, $35, $ff, $34, $33, $ff, $34 - db $3e, $3f, $40, $41, $3e, $3f, $19, $1a, $11, $12, $19, $1a, $11, $12, $19, $1a - db $11, $12, $19, $1a diff --git a/SRC/tilesets/lavaCaves_collision.asm b/SRC/tilesets/lavaCaves_collision.asm deleted file mode 100644 index 4b012f9..0000000 --- a/SRC/tilesets/lavaCaves_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_lavaCaves - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $80, $80, $80 - db $00, $10, $10, $00, $00, $01, $01, $00, $10, $10, $10, $10, $10, $11, $11, $10 - db $00, $00, $00, $00, $10, $10, $10, $10, $00, $00, $00, $00, $10, $10, $10, $10 - db $00, $10, $00, $00, $00, $00, $10, $10, $10, $10, $0a, $0a, $0c, $0c, $00, $00 - db $00, $00, $01, $01, $01, $01, $10, $00, $10, $00, $10, $00, $00, $00, $00, $10 - db $10, $10, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/plantBubbles_collision.asm b/SRC/tilesets/plantBubbles_collision.asm deleted file mode 100644 index 3ddcee1..0000000 --- a/SRC/tilesets/plantBubbles_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_plantBubbles - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $80, $80, $80 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $6a, $6a, $6a, $6a - db $00, $00, $00, $00, $00, $00, $6a, $6a, $6a, $6a, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $6a, $6a, $6a, $6a - db $6c, $6c, $6c, $6c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $68, $68, $00, $00, $00, $00, $01, $01, $60, $60, $60, $60, $60, $00, $00 - db $01, $01, $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/plantBubbles_metatiles.asm b/SRC/tilesets/plantBubbles_metatiles.asm deleted file mode 100644 index b53cf95..0000000 --- a/SRC/tilesets/plantBubbles_metatiles.asm +++ /dev/null @@ -1,33 +0,0 @@ -; metatiles_plantBubbles - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $ff, $ff, $74, $75 - db $ff, $ff, $76, $77, $65, $70, $63, $67, $71, $66, $68, $64, $16, $17, $18, $19 - db $ff, $ff, $ff, $ff, $58, $5b, $5c, $5f, $1a, $1a, $60, $60, $60, $60, $60, $60 - db $79, $7b, $79, $7b, $ff, $7a, $78, $7b, $79, $79, $79, $79, $7b, $79, $7b, $79 - db $38, $39, $3a, $3b, $6e, $6e, $6f, $6f, $6f, $6f, $6f, $6f, $ff, $ff, $6e, $6e - db $78, $ff, $79, $78, $ff, $78, $78, $79, $78, $78, $79, $79, $7a, $ff, $7b, $78 - db $65, $70, $63, $72, $71, $66, $73, $64, $58, $5b, $5c, $5f, $26, $27, $28, $29 - db $2a, $2b, $2c, $2d, $2c, $2d, $2c, $2d, $34, $35, $36, $37, $30, $31, $32, $33 - db $2e, $2e, $2f, $2f, $1c, $1d, $1e, $1f, $2c, $2d, $20, $21, $50, $51, $52, $53 - db $54, $55, $54, $55, $56, $57, $56, $57, $54, $55, $56, $57, $56, $57, $54, $55 - db $58, $59, $5c, $5d, $5a, $5b, $5e, $5f, $5a, $59, $5e, $5d, $58, $5b, $5c, $5f - db $69, $69, $69, $69, $3c, $3d, $3e, $3f, $ff, $ff, $2a, $2b, $20, $21, $ff, $ff - db $ff, $ff, $46, $47, $48, $49, $4a, $4b, $4c, $4d, $4e, $4f, $42, $43, $44, $45 - db $ff, $69, $69, $69, $69, $ff, $69, $69, $69, $69, $ff, $69, $69, $69, $69, $ff - db $25, $ff, $ff, $ff, $ff, $25, $ff, $ff, $ff, $ff, $25, $ff, $ff, $ff, $ff, $25 - db $22, $23, $ff, $ff, $22, $24, $ff, $ff, $24, $23, $ff, $ff, $24, $24, $ff, $ff - db $22, $24, $22, $23, $24, $23, $22, $24, $22, $24, $24, $23, $24, $23, $22, $23 - db $22, $23, $22, $23, $10, $11, $12, $13, $13, $11, $11, $13, $10, $11, $3a, $3b - db $ff, $ff, $22, $23, $ff, $ff, $22, $24, $ff, $ff, $24, $23, $ff, $ff, $24, $24 - db $ff, $ff, $ff, $22, $ff, $ff, $23, $ff, $24, $24, $2a, $2b, $40, $41, $41, $40 - db $69, $69, $ff, $ff, $ff, $ff, $69, $69, $ff, $69, $ff, $69, $69, $ff, $69, $ff - db $ff, $79, $ff, $79, $79, $ff, $79, $ff, $ff, $78, $ff, $79, $ff, $ff, $78, $ff - db $6a, $ff, $61, $ff, $61, $ff, $6b, $ff, $61, $ff, $61, $ff, $ff, $6c, $ff, $62 - db $ff, $62, $ff, $6d, $ff, $62, $ff, $62, $ff, $79, $78, $79, $79, $ff, $79, $78 - db $ff, $ff, $0c, $0d, $0e, $0f, $14, $15, $14, $15, $14, $15, $25, $79, $ff, $79 - db $79, $25, $79, $ff, $25, $79, $79, $79, $79, $25, $79, $79, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $7c, $7d, $7e, $7f, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff diff --git a/SRC/tilesets/queen_collision.asm b/SRC/tilesets/queen_collision.asm deleted file mode 100644 index 2c7f788..0000000 --- a/SRC/tilesets/queen_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_queen - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/queen_metatiles.asm b/SRC/tilesets/queen_metatiles.asm deleted file mode 100644 index c0e9ef7..0000000 --- a/SRC/tilesets/queen_metatiles.asm +++ /dev/null @@ -1,33 +0,0 @@ -; metatiles_queen - db $ff, $ff, $ff, $ff, $57, $58, $ff, $0b, $57, $58, $0c, $0d, $ff, $ff, $14, $15 - db $06, $07, $16, $17, $08, $09, $18, $19, $0a, $ff, $1a, $ff, $20, $21, $30, $31 - db $22, $23, $32, $33, $24, $25, $34, $35, $26, $27, $36, $37, $28, $29, $38, $39 - db $2a, $ff, $3a, $ff, $40, $41, $50, $51, $42, $43, $52, $53, $44, $45, $54, $55 - db $46, $47, $56, $13, $48, $49, $fe, $f9, $4a, $ff, $f4, $ff, $ff, $ff, $af, $9e - db $ff, $ff, $af, $9f, $ff, $ff, $9e, $af, $ff, $ff, $af, $ff, $ff, $ff, $ff, $9e - db $ff, $ff, $af, $af, $ff, $b0, $ff, $b0, $ff, $b0, $ff, $e9, $ff, $e9, $ff, $e9 - db $57, $58, $59, $5a, $57, $58, $ff, $ff, $b0, $b0, $b0, $b0, $b0, $b0, $5b, $b0 - db $b0, $b0, $5b, $5b, $5b, $5b, $ff, $ff, $b0, $5b, $5b, $ff, $5e, $5e, $59, $5a - db $5d, $5e, $59, $5a, $5c, $5c, $5c, $5c, $57, $58, $5c, $5c, $5d, $5e, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff diff --git a/SRC/tilesets/ruinsExt_collision.asm b/SRC/tilesets/ruinsExt_collision.asm deleted file mode 100644 index b49ac48..0000000 --- a/SRC/tilesets/ruinsExt_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_ruinsExt - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $08, $08, $08, $08 - db $40, $40, $40, $40, $08, $08, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $08, $08, $08, $08, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $08, $08, $10, $10, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $02, $02, $02 - db $00, $00, $60, $60, $03, $03, $00, $00, $00, $00, $60, $60, $71, $71, $71, $71 - db $71, $71, $71, $71, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $01, $01, $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/ruinsExt_metatiles.asm b/SRC/tilesets/ruinsExt_metatiles.asm deleted file mode 100644 index 553c5e8..0000000 --- a/SRC/tilesets/ruinsExt_metatiles.asm +++ /dev/null @@ -1,33 +0,0 @@ -; metatiles_ruinsExt - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $FF, $FF, $74, $75 - db $FF, $FF, $76, $77, $58, $70, $56, $54, $71, $59, $55, $57, $18, $19, $19, $18 - db $FF, $FF, $FF, $FF, $3E, $3F, $3C, $3D, $1A, $1D, $1E, $21, $1A, $1B, $1E, $1F - db $1C, $1B, $20, $1F, $1C, $1D, $20, $21, $22, $23, $25, $24, $24, $25, $23, $22 - db $44, $45, $46, $47, $5E, $5F, $63, $62, $2B, $2C, $2D, $2E, $2D, $2E, $2D, $2E - db $7A, $7B, $7B, $7A, $7B, $7A, $7A, $7B, $78, $7B, $79, $7A, $7B, $78, $7A, $79 - db $58, $70, $56, $72, $71, $59, $73, $57, $3C, $3D, $3E, $3F, $2F, $2F, $2F, $2F - db $4A, $48, $FF, $4A, $49, $48, $48, $49, $49, $4B, $4B, $FF, $6C, $6D, $6E, $6F - db $FF, $FF, $4A, $4B, $FF, $64, $4A, $48, $65, $64, $49, $48, $65, $FF, $49, $4B - db $FF, $FF, $6E, $6F, $6C, $6D, $FF, $FF, $FF, $6D, $FF, $6F, $6C, $FF, $6E, $FF - db $63, $62, $66, $66, $18, $19, $17, $16, $FF, $60, $66, $66, $61, $FF, $66, $66 - db $5A, $5B, $5B, $5A, $31, $32, $30, $31, $31, $32, $32, $31, $31, $32, $32, $30 - db $31, $32, $FF, $31, $31, $32, $32, $FF, $65, $64, $30, $31, $65, $64, $32, $30 - db $64, $65, $32, $31, $31, $32, $FF, $FF, $30, $FF, $FF, $FF, $FF, $30, $FF, $FF - db $33, $34, $36, $35, $35, $36, $34, $33, $33, $34, $37, $35, $35, $36, $34, $37 - db $FF, $FF, $3E, $3F, $FF, $FF, $3C, $3D, $FF, $FF, $66, $66, $2F, $2F, $2F, $2F - db $5E, $5F, $5F, $5E, $60, $61, $5F, $5E, $5E, $5F, $5C, $5D, $FF, $61, $60, $5E - db $60, $FF, $5F, $61, $5C, $5F, $FF, $5D, $5E, $5D, $5C, $FF, $FF, $FF, $60, $61 - db $5C, $5D, $FF, $FF, $FF, $61, $FF, $5E, $60, $FF, $5F, $FF, $2F, $2F, $2F, $2F - db $68, $68, $68, $68, $4C, $4D, $6B, $6B, $4E, $4F, $6B, $6B, $6B, $6B, $6B, $6B - db $FF, $7E, $38, $27, $FF, $FF, $FF, $38, $7E, $FF, $27, $39, $14, $28, $FF, $7F - db $FF, $FF, $39, $FF, $28, $15, $7F, $FF, $39, $FF, $29, $7C, $FF, $14, $FF, $FF - db $29, $7C, $15, $FF, $FF, $38, $7D, $2A, $15, $FF, $FF, $FF, $7D, $2A, $FF, $14 - db $66, $66, $67, $67, $67, $67, $67, $67, $16, $17, $17, $16, $52, $53, $53, $52 - db $FF, $FF, $0C, $0D, $0E, $0F, $50, $51, $50, $51, $50, $51, $FF, $42, $FF, $FF - db $43, $FF, $FF, $FF, $42, $19, $FF, $42, $18, $43, $43, $FF, $10, $11, $12, $13 - db $2F, $2F, $2F, $2F, $4A, $48, $4A, $49, $49, $4B, $48, $4B, $3A, $3A, $3B, $3B - db $69, $6A, $6A, $69, $FF, $FF, $64, $65, $FF, $FF, $FF, $64, $FF, $FF, $65, $FF - db $24, $25, $FF, $22, $22, $23, $23, $FF, $24, $25, $26, $22, $22, $23, $23, $26 - db $FF, $64, $25, $22, $65, $64, $23, $24, $65, $64, $26, $22, $65, $FF, $23, $26 - db $22, $23, $FF, $FF, $24, $25, $FF, $FF, $26, $FF, $FF, $FF, $FF, $26, $FF, $FF - db $FF, $FF, $FF, $40, $FF, $FF, $41, $FF, $FF, $40, $40, $18, $41, $FF, $19, $41 diff --git a/SRC/tilesets/ruinsInside_collision.asm b/SRC/tilesets/ruinsInside_collision.asm deleted file mode 100644 index 1f765f5..0000000 --- a/SRC/tilesets/ruinsInside_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_ruinsInside - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $80, $80, $80 - db $00, $00, $00, $00, $00, $08, $08, $00, $00, $08, $08, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $00 - db $40, $40, $40, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $60, $60, $60, $60, $80, $80, $40, $40, $40, $40, $40, $40 - db $00, $00, $00, $00, $00, $00, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/ruinsInside_metatiles.asm b/SRC/tilesets/ruinsInside_metatiles.asm deleted file mode 100644 index ddcbe31..0000000 --- a/SRC/tilesets/ruinsInside_metatiles.asm +++ /dev/null @@ -1,33 +0,0 @@ -; metatiles_ruinsInside - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $ff, $ff, $74, $75 - db $ff, $ff, $76, $77, $58, $70, $5c, $5a, $71, $59, $5b, $5d, $34, $35, $36, $37 - db $ff, $ff, $ff, $ff, $3c, $3d, $3e, $3f, $38, $39, $3a, $3b, $2d, $2d, $2d, $2d - db $42, $43, $42, $43, $54, $55, $55, $54, $ff, $ff, $ff, $ff, $1d, $1e, $1d, $1e - db $30, $31, $32, $33, $4a, $4b, $4a, $4b, $56, $57, $57, $56, $34, $35, $3a, $3b - db $44, $45, $46, $47, $2e, $2e, $2e, $2e, $4c, $4d, $4e, $4f, $7f, $7f, $ff, $ff - db $58, $70, $5c, $72, $71, $59, $73, $5d, $68, $69, $68, $69, $15, $16, $15, $16 - db $19, $1a, $19, $1a, $5e, $5f, $5e, $5f, $6a, $6b, $6b, $6a, $ff, $ff, $ff, $ff - db $42, $43, $ff, $ff, $ff, $ff, $42, $43, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $0c, $0d, $0e, $0f, $48, $49, $40, $41, $41, $40, $48, $49, $48, $49 - db $48, $49, $40, $41, $40, $41, $67, $40, $40, $41, $41, $67, $ff, $ff, $ff, $ff - db $67, $67, $67, $67, $62, $62, $63, $64, $65, $63, $64, $65, $63, $64, $66, $66 - db $6c, $6d, $6e, $6f, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $50, $51, $50, $51, $52, $53, $52, $53, $52, $51, $52, $51, $78, $78, $79, $79 - db $79, $79, $79, $79, $ff, $ff, $78, $78, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $22, $23, $27, $28, $24, $25, $29, $2a, $26, $ff, $2b, $2c, $18, $7c, $1c, $7e - db $7d, $1b, $2f, $1f, $ff, $ff, $20, $21, $10, $11, $14, $7a, $12, $13, $7b, $17 - db $ff, $ff, $ff, $60, $ff, $ff, $61, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff diff --git a/SRC/tilesets/solidityValues.asm b/SRC/tilesets/solidityValues.asm index df62f33..3e9ddce 100644 --- a/SRC/tilesets/solidityValues.asm +++ b/SRC/tilesets/solidityValues.asm @@ -1,4 +1,4 @@ -; 8:7EFA - Solidity threshholds +; 8:7EFA - Solidity thresholds db $69, $63, $6e, $ff ; 0 - plantBubbles db $5e, $54, $5e, $ff ; 1 - ruinsInside db $f0, $f0, $f0, $ff ; 2 - queen @@ -6,4 +6,4 @@ db $69, $69, $69, $ff ; 4 - surface db $42, $42, $42, $ff ; 5 - lavaCaves db $5c, $54, $64, $ff ; 6 - ruinsExt - db $75, $75, $75, $ff ; 7 - finalLab \ No newline at end of file + db $75, $75, $75, $ff ; 7 - finalLab diff --git a/SRC/tilesets/surface_collision.asm b/SRC/tilesets/surface_collision.asm deleted file mode 100644 index 52958a0..0000000 --- a/SRC/tilesets/surface_collision.asm +++ /dev/null @@ -1,17 +0,0 @@ -; collision_surface - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $08, $08, $08, $00, $00, $08, $00 - db $08, $08, $08, $08, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/SRC/tilesets/surface_metatiles.asm b/SRC/tilesets/surface_metatiles.asm deleted file mode 100644 index f2afbe2..0000000 --- a/SRC/tilesets/surface_metatiles.asm +++ /dev/null @@ -1,33 +0,0 @@ -; metatiles_surface - db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $5e, $5e, $5e, $5e - db $60, $61, $62, $63, $47, $48, $e2, $ff, $49, $4a, $ff, $ff, $4b, $ff, $ff, $ff - db $ff, $ff, $ff, $16, $ff, $10, $17, $18, $13, $14, $19, $1a, $11, $ff, $1b, $5f - db $ff, $12, $5f, $1c, $13, $14, $1a, $1d, $15, $ff, $1e, $1f, $ff, $ff, $20, $ff - db $ff, $ff, $16, $23, $21, $e8, $e8, $e1, $e1, $e1, $e1, $e1, $e9, $ea, $e1, $74 - db $eb, $ec, $75, $76, $ed, $ee, $77, $78, $ef, $70, $79, $7a, $71, $72, $7b, $e1 - db $73, $22, $e1, $73, $ff, $ff, $24, $20, $ff, $21, $29, $1a, $1a, $25, $1a, $1a - db $26, $7c, $1a, $e1, $7d, $e1, $c0, $c1, $e1, $da, $c2, $c3, $db, $dc, $c4, $c5 - db $e6, $e7, $c6, $c7, $dd, $de, $c8, $c9, $df, $e1, $ca, $cb, $e1, $7e, $cc, $cd - db $7f, $27, $e1, $1a, $28, $1a, $1a, $1a, $22, $ff, $1a, $2a, $2b, $32, $ff, $ff - db $32, $32, $ff, $ff, $2c, $2d, $ff, $ff, $2e, $ce, $34, $35, $cf, $d0, $36, $37 - db $d1, $d2, $38, $39, $d3, $d4, $3a, $3b, $d5, $d6, $3c, $3d, $d7, $d8, $3e, $3f - db $d9, $2f, $40, $41, $30, $31, $ff, $ff, $32, $32, $ff, $ff, $32, $33, $ff, $ff - db $ff, $42, $ff, $ff, $43, $44, $ff, $ff, $45, $46, $ff, $e2, $e3, $e3, $e2, $e2 - db $0c, $0d, $0e, $0f, $5c, $5c, $5d, $5d, $5d, $5d, $5d, $5d, $6f, $6e, $6d, $6c - db $ff, $ff, $e0, $e0, $e5, $e5, $e5, $e5, $bf, $bf, $6b, $6b, $bf, $bf, $bf, $bf - db $be, $bc, $bd, $be, $ff, $bb, $bc, $be, $67, $68, $ff, $ff, $65, $66, $67, $68 - db $bb, $ff, $bd, $be, $bc, $bb, $ff, $be, $ba, $be, $be, $ff, $ff, $bd, $be, $bb - db $ff, $ff, $bd, $be, $bc, $bb, $ff, $ff, $be, $ff, $bb, $ff, $ff, $bb, $ff, $bc - db $ff, $ff, $ff, $bc, $ff, $ff, $bb, $ff, $ff, $bd, $ff, $ff, $ba, $ff, $ff, $ff - db $4c, $54, $56, $58, $54, $54, $58, $58, $54, $4d, $58, $57, $56, $58, $56, $58 - db $58, $57, $58, $57, $56, $58, $4e, $55, $58, $58, $55, $55, $58, $57, $55, $4f - db $58, $58, $58, $58, $50, $58, $58, $58, $58, $51, $58, $58, $58, $58, $52, $58 - db $58, $58, $58, $53, $59, $59, $59, $59, $59, $5a, $59, $5a, $0c, $0d, $0f, $0e - db $0f, $6e, $6d, $6c, $6f, $0e, $6d, $6c, $6f, $6e, $0d, $6c, $6f, $6e, $6d, $0c - db $0f, $ff, $ff, $ff, $ff, $0e, $ff, $ff, $ff, $ff, $0d, $ff, $ff, $ff, $ff, $0c - db $ff, $6e, $6d, $6c, $6f, $ff, $6d, $6c, $6f, $6e, $ff, $6c, $6f, $6e, $6d, $ff - db $ff, $6e, $ff, $6c, $6f, $ff, $6d, $ff, $ff, $ff, $6d, $6c, $6f, $6e, $ff, $ff - db $e4, $e4, $e5, $e5, $ff, $ff, $e4, $e4, $ff, $e4, $ff, $e5, $e4, $ff, $e5, $ff - db $e5, $e5, $e4, $e4, $ff, $ff, $ff, $e4, $ff, $ff, $e4, $ff, $65, $68, $68, $ff - db $66, $65, $ff, $66, $ff, $64, $ff, $64, $64, $ff, $64, $ff, $64, $64, $ff, $ff - db $ff, $64, $ff, $ff, $64, $ff, $ff, $ff, $64, $64, $64, $64, $ff, $ff, $ff, $ff diff --git a/build.bat b/build.bat index b672478..94a4381 100644 --- a/build.bat +++ b/build.bat @@ -18,9 +18,9 @@ if ERRORLEVEL 1 ( echo. echo RGBDS not detected. Downloading... echo. - curl -LJO "https://github.com/gbdev/rgbds/releases/download/v0.9.1/rgbds-0.9.1-win32.zip" + curl -LJO "https://github.com/gbdev/rgbds/releases/download/v1.0.1/rgbds-win32.zip" echo. - tar -xvf rgbds-0.9.1-win32.zip + tar -xvf rgbds-win32.zip echo. goto checkRGBDS ) diff --git a/build.py b/build.py index 2bfdf0f..8913774 100644 --- a/build.py +++ b/build.py @@ -12,45 +12,50 @@ def run_or_exit(args, err): exit(completed_process.returncode) -if not os.path.exists('out/'): - os.mkdir('out/') - -print('Running scripts') -enemy_csv2asm.csv2asm("./SRC/data/enemies.csv", "./SRC/data") -samus_csv2asm.csv2asm("./SRC/samus/samus.csv", "./SRC/samus") -general_csv2asm.csv2asm("./SRC/data/sprites_credits.csv","./SRC/data","sprites_credits") -print('Success\n') - -completed_process = subprocess.run("rgbasm -V", shell=True) -if completed_process.returncode != 0: - print("RGBDS not detected. Downloading...") - run_or_exit("curl -LJO \"https://github.com/gbdev/rgbds/releases/download/v0.9.1/rgbds-0.9.1-win32.zip\"", "Failed to download.") - run_or_exit("tar -xvf rgbds-0.9.1-win32.zip", "Failed to extract RGBDS archive.") - run_or_exit("rgbasm -V", "Unable to use downloaded RGBDS.") - -print('RGBDS detected') -print('Assembling .asm files') -run_or_exit("rgbasm -o out/game.o -Weverything -I SRC/ SRC/game.asm", "Assembler Error.") -print('Success\n') - -print('Linking .o files') -run_or_exit("rgblink -n out/M2RoS.sym -m out/M2RoS.map -o out/M2RoS.gb out/game.o", "Linker Error.") -print('Success\n') - -print('Fixing header') -run_or_exit("rgbfix -v out/M2RoS.gb", "RGBFIX Error.") -print('Done\n') - -with open("out/M2RoS.gb", "rb") as f: - md5_hash_generated = hashlib.md5(f.read()) -print('MD5 hash: ' + md5_hash_generated.hexdigest()) - -try: - with open("Metroid2.gb", "rb") as f: - md5_hash_expected = hashlib.md5(f.read()) - if md5_hash_generated.hexdigest() == md5_hash_expected.hexdigest(): - print("Hash matches vanilla ROM.") - else: - print("Hash does not match vanilla ROM.") -except FileNotFoundError: - print("Could not check hash against vanilla ROM.") +def main(): + if not os.path.exists('out/'): + os.mkdir('out/') + + print('Running scripts') + enemy_csv2asm.csv2asm("SRC/data/enemies.csv", "SRC/data") + samus_csv2asm.csv2asm("SRC/samus/samus.csv", "SRC/samus") + general_csv2asm.csv2asm("SRC/data/sprites_credits.csv","SRC/data","sprites_credits") + print('Success\n') + + completed_process = subprocess.run("rgbasm -V", shell=True) + if completed_process.returncode != 0: + print("RGBDS not detected. Downloading...") + run_or_exit("curl -LJO \"https://github.com/gbdev/rgbds/releases/download/v1.0.1/rgbds-win32.zip\"", "Failed to download.") + run_or_exit("tar -xvf rgbds-win32.zip", "Failed to extract RGBDS archive.") + run_or_exit("rgbasm -V", "Unable to use downloaded RGBDS.") + + print('RGBDS detected') + print('Assembling .asm files') + run_or_exit("rgbasm -o out/game.o -Weverything -I SRC/ SRC/game.asm", "Assembler Error.") + print('Success\n') + + print('Linking .o files') + run_or_exit("rgblink -n out/M2RoS.sym -Weverything -m out/M2RoS.map -o out/M2RoS.gb out/game.o", "Linker Error.") + print('Success\n') + + print('Fixing header') + run_or_exit("rgbfix -v out/M2RoS.gb", "RGBFIX Error.") + print('Done\n') + + with open("out/M2RoS.gb", "rb") as f: + md5_hash_generated = hashlib.md5(f.read()) + print('MD5 hash: ' + md5_hash_generated.hexdigest()) + + try: + with open("Metroid2.gb", "rb") as f: + md5_hash_expected = hashlib.md5(f.read()) + if md5_hash_generated.hexdigest() == md5_hash_expected.hexdigest(): + print("Hash matches vanilla ROM.") + else: + print("Hash does not match vanilla ROM.") + except FileNotFoundError: + print("Could not check hash against vanilla ROM.") + + +if __name__ == "__main__": + main() diff --git a/extract.py b/extract.py index d02270b..cebacea 100644 --- a/extract.py +++ b/extract.py @@ -6,18 +6,25 @@ "extract_credits", "extract_doors", "extract_enemyData", + "extract_tileset", ]] +VANILLA_ROM_PATH = "./Metroid2.gb" -print('Removing previous resources from disassembly') -for module in modules: - module.clean() -print('Success\n') +def main(): + print('Removing previous resources from disassembly') + for module in modules: + module.clean() + print('Success\n') -print('Extracting resources from vanilla ROM') -if not os.path.exists("./Metroid2.gb"): - print('Vanilla ROM file ./Metroid2.gb was not found') - exit() -for module in modules: - module.extract() -print('Success') + print('Extracting resources from vanilla ROM') + if not os.path.exists(VANILLA_ROM_PATH): + print(f"Vanilla ROM file {VANILLA_ROM_PATH} was not found") + exit() + for module in modules: + module.extract(VANILLA_ROM_PATH) + print('Success') + + +if __name__ == "__main__": + main() diff --git a/readme.md b/readme.md index 5a6d85f..70ed81a 100644 --- a/readme.md +++ b/readme.md @@ -12,7 +12,7 @@ A disassembly of one of my favorite Game Boy games. A first-pass over every func The resultant file should have this hash: `md5: 9639948ad274fa15281f549e5f9c4d87` -This project uses rgbds v0.9.1 and Python 3.13. Compatibility with other versions of these tools is not guaranteed. +This project uses rgbds v1.0.1 and Python 3.13. Compatibility with other versions of these tools is not guaranteed. If you wish to make a mod based on this repo, you may want to remove the lines at the bottom of the `.gitignore` file that blacklist proprietary assets from this repository, so that your custom assets will be tracked by your version control. @@ -33,7 +33,7 @@ If you wish to make a mod based on this repo, you may want to remove the lines a Please refrain from moving any chunk of code into a separate file without first discussing it in the issue tracker. -If you have questions or comments, please drop by the #metroid-ii channel on the [MetConst Discord](https://discord.gg/xDwaaqa). +If you have questions or comments, please drop by the #metroid_ii channel on the [MetConst Discord](https://discord.gg/xDwaaqa). ## Directory Structure @@ -63,4 +63,4 @@ Subject to change. - [M2Edit](https://m2sw.zophar.net/m2edit/) - Abandoned editor from 2004. Stable, but closed source and lacks enemy and door editing capabilities. - [ROSE](https://github.com/liamnajor/ROSE) - WIP editor. Web based. - [LAMP](https://github.com/LAMP-Platform/LAMP) - Feature rich, Windows only, editor with support for this disassembly. -- [2DEd](https://metroidconstruction.com/resource.php?id=730) - Lightweight editor, designed to be used with this disassembly. \ No newline at end of file +- [2DEd](https://metroidconstruction.com/resource.php?id=730) - Lightweight editor, designed to be used with this disassembly. diff --git a/scripts/enemy_csv2asm.py b/scripts/enemy_csv2asm.py index 97cefae..c7beac2 100644 --- a/scripts/enemy_csv2asm.py +++ b/scripts/enemy_csv2asm.py @@ -17,9 +17,8 @@ def csv2asm(infile, outdir): constFile.write('; This file was automatically generated from enemies.csv. Please do not edit this directly.\n') with open(infile, newline='') as f: - i = 0 reader = csv.reader(f) - for row in reader: + for i, row in enumerate(reader): spriteFile.write(' dw '+row[0]+' ; '+row[6]+'\n') headerFile.write(' dw '+row[1]+' ; '+row[6]+'\n') hitboxFile.write(' dw '+row[2]+' ; '+row[6]+'\n') @@ -28,7 +27,6 @@ def csv2asm(infile, outdir): constFile.write('def '+row[4]+' = ${:02X} ; '.format(i)+row[6]+'\n') if row[5] != '': constFile.write('def '+row[5]+' = ${:02X} ; '.format(i)+row[6]+'\n') - i += 1 def main(): diff --git a/scripts/extract_chr.py b/scripts/extract_chr.py index 0e7576e..65d22b1 100644 --- a/scripts/extract_chr.py +++ b/scripts/extract_chr.py @@ -64,8 +64,8 @@ def __init__(self, gb_bank, gb_address, size, path): GfxEntry(0x8,0x79bc, 0x500, "gfx/enemies/queenSPR"), ] -def extract(): - rom = open("./Metroid2.gb", "rb") +def extract(vanilla_rom_path): + rom = open(vanilla_rom_path, "rb") for gfx in gfx_list: rom.seek(gfx.rom_address) chr = rom.read(gfx.size) diff --git a/scripts/extract_credits.py b/scripts/extract_credits.py index dcc59fb..7f7324d 100644 --- a/scripts/extract_credits.py +++ b/scripts/extract_credits.py @@ -1,7 +1,7 @@ # Original credit to Alex W and PJ import os -file_path = "./SRC/data/credits.asm" +FILE_PATH = "./SRC/data/credits.asm" def parse_credits_line(line_data): for i in range(len(line_data)): @@ -26,8 +26,8 @@ def parse_credits_line(line_data): return ' db ' + ",".join(line_data) + "\n" -def extract(): - rom = open("./Metroid2.gb", "rb") +def extract(vanilla_rom_path): + rom = open(vanilla_rom_path, "rb") credits_begin = (0x6 * 0x4000) + (0x7920 & 0x3fff) rom.seek(credits_begin) @@ -43,11 +43,11 @@ def extract(): rom.close() file_content += ' db ""' - with open(file_path, "w") as f: + with open(FILE_PATH, "w") as f: f.write(file_content) def clean(): - if os.path.exists(file_path): - os.remove(file_path) + if os.path.exists(FILE_PATH): + os.remove(FILE_PATH) # EoF diff --git a/scripts/extract_doors.py b/scripts/extract_doors.py index 86de597..3ba2d3d 100644 --- a/scripts/extract_doors.py +++ b/scripts/extract_doors.py @@ -1,7 +1,7 @@ # Original credit to Alex W and PJ import os -file_path = "./SRC/maps/doors.asm" +FILE_PATH = "./SRC/maps/doors.asm" gb2rom = lambda gb_bank, gb_address: (gb_bank * 0x4000) + (gb_address & 0x3fff) @@ -48,8 +48,8 @@ } -def extract(): - rom = open("./Metroid2.gb", "rb") +def extract(vanilla_rom_path): + rom = open(vanilla_rom_path, "rb") rom_read = lambda n: int.from_bytes(rom.read(n), byteorder='little') door_pointers_begin = gb2rom(0x5,0x42E5) door_data_begin = gb2rom(0x5,0x46E5) @@ -143,11 +143,11 @@ def extract(): rom.close() - with open(file_path, "w") as f: + with open(FILE_PATH, "w") as f: f.write(file_content) def clean(): - if os.path.exists(file_path): - os.remove(file_path) + if os.path.exists(FILE_PATH): + os.remove(FILE_PATH) # EoF diff --git a/scripts/extract_enemyData.py b/scripts/extract_enemyData.py index bddf4ba..d0d93cf 100644 --- a/scripts/extract_enemyData.py +++ b/scripts/extract_enemyData.py @@ -1,20 +1,30 @@ # Original credit to Alex W and PJ import os +import csv -file_path = "./SRC/maps/enemyData.asm" +FILE_PATH = "./SRC/maps/enemyData.asm" +FILE_PATH_CSV = "./SRC/data/enemies.csv" gb2rom = lambda gb_bank, gb_address: (gb_bank * 0x4000) + (gb_address & 0x3fff) -def extract(): - rom = open("./Metroid2.gb", "rb") +def extract(vanilla_rom_path): + rom = open(vanilla_rom_path, "rb") rom_read = lambda n: int.from_bytes(rom.read(n), byteorder='little') enemy_pointers_begin = gb2rom(0x3,0x42E0) enemy_data_begin = gb2rom(0x3,0x50E0) enemy_end = gb2rom(0x3,0x6244) file_content = "" - #Read enemy pointers and give each a name + # Read enemy name constants + enemy_name_constants = {} + with open(FILE_PATH_CSV, newline='') as f: + reader = csv.reader(f) + for i, row in enumerate(reader): + if row[4] != '': + enemy_name_constants[i] = row[4] + + # Read enemy pointers and give each a name enemy_pointers = {} enemy_pointers_bank = [] rom.seek(enemy_pointers_begin) @@ -34,7 +44,7 @@ def extract(): enemy_pointers_bank = [] bank += 1 - #Write the enemyPointerTable with label names + # Write the enemyPointerTable with label names for bank, enemy_pointers_bank in enemy_pointers.items(): file_content += f"; Enemy Data Pointers for Bank {bank:X}\n" for row in [enemy_pointers_bank[i:i+16] for i in range(0, len(enemy_pointers_bank), 16)]: @@ -61,14 +71,18 @@ def extract(): byte2 = rom_read(1) byte3 = rom_read(1) byte4 = rom_read(1) - line += f", ${byte2:02X}, ${byte3:02X}, ${byte4:02X}" + if byte2 in enemy_name_constants: + line += f", {enemy_name_constants[byte2]}" + else: + line += f", ${byte2:02X}" + line += f", ${byte3:02X}, ${byte4:02X}" file_content += line + "\n" - with open(file_path, "w") as f: + with open(FILE_PATH, "w") as f: f.write(file_content) def clean(): - if os.path.exists(file_path): - os.remove(file_path) + if os.path.exists(FILE_PATH): + os.remove(FILE_PATH) # EoF diff --git a/scripts/extract_maps.py b/scripts/extract_maps.py index 63eb412..2626d45 100644 --- a/scripts/extract_maps.py +++ b/scripts/extract_maps.py @@ -1,6 +1,6 @@ import os -folder = "./SRC/maps/" +FOLDER = "./SRC/maps/" def byte_lines(data, per_row=16): data = [data[i:i+per_row] for i in range(0, len(data), per_row)] @@ -34,11 +34,11 @@ def create_map_bank_file(bank_data, bank_num): file_content += byte_lines(bank_data[s:s+0x0100]) file_content += "\n" - with open(os.path.join(folder, file_name), "w") as f: + with open(os.path.join(FOLDER, file_name), "w") as f: f.write(file_content) -def extract(): - rom = open("./Metroid2.gb", "rb") +def extract(vanilla_rom_path): + rom = open(vanilla_rom_path, "rb") for bank_num in range(0x9, 0xF+1): rom.seek(bank_num * 0x4000) bank_data = rom.read(0x4000) @@ -47,7 +47,7 @@ def extract(): def clean(): for bank_num in range(0x9, 0xF+1): - file_path = os.path.join(folder, f"bank_{bank_num:03x}.asm") + file_path = os.path.join(FOLDER, f"bank_{bank_num:03x}.asm") if os.path.exists(file_path): os.remove(file_path) diff --git a/scripts/extract_tileset.py b/scripts/extract_tileset.py new file mode 100644 index 0000000..6a5ca15 --- /dev/null +++ b/scripts/extract_tileset.py @@ -0,0 +1,60 @@ +import os + + +def byte_lines(data, per_row=16): + data = [data[i:i+per_row] for i in range(0, len(data), per_row)] + out = "" + for line in data: + out += " db " + ", ".join([f"${byte:02X}" for byte in line]) + "\n" + return out + +class CollisionEntry: + def __init__(self, gb_bank, gb_address, size, path): + self.rom_address = (gb_bank * 0x4000) + (gb_address & 0x3fff) + self.size = size + self.path = "./SRC/tilesets/" + path + "_collision.asm" + +class MetatilesEntry: + def __init__(self, gb_bank, gb_address, size, path): + self.rom_address = (gb_bank * 0x4000) + (gb_address & 0x3fff) + self.size = size + self.path = "./SRC/tilesets/" + path + "_metatiles.asm" + +data_list = [ + CollisionEntry(0x8,0x4080, 0x100, "finalLab"), + CollisionEntry(0x8,0x4180, 0x100, "plantBubbles"), + CollisionEntry(0x8,0x4280, 0x100, "ruinsInside"), + CollisionEntry(0x8,0x4380, 0x100, "queen"), + CollisionEntry(0x8,0x4480, 0x100, "caveFirst"), + CollisionEntry(0x8,0x4580, 0x100, "surface"), + CollisionEntry(0x8,0x4680, 0x100, "lavaCaves"), + CollisionEntry(0x8,0x4780, 0x100, "ruinsExt"), + + MetatilesEntry(0x8,0x4880, 0x200, "plantBubbles"), + MetatilesEntry(0x8,0x4a80, 0x200, "ruinsInside"), + MetatilesEntry(0x8,0x4c80, 0x200, "finalLab"), + MetatilesEntry(0x8,0x4e80, 0x200, "queen"), + MetatilesEntry(0x8,0x5080, 0x200, "caveFirst"), + MetatilesEntry(0x8,0x5280, 0x200, "surface"), + MetatilesEntry(0x8,0x5480, 0x114, "lavaCavesMid"), + MetatilesEntry(0x8,0x5594, 0x114, "lavaCavesEmpty"), + MetatilesEntry(0x8,0x56a8, 0x114, "lavaCavesFull"), + MetatilesEntry(0x8,0x57bc, 0x200, "ruinsExt"), +] + +def extract(vanilla_rom_path): + rom = open(vanilla_rom_path, "rb") + for data in data_list: + rom.seek(data.rom_address) + asm = rom.read(data.size) + file_content = byte_lines(asm) + with open(data.path, "w") as f: + f.write(file_content) + rom.close() + +def clean(): + for data in data_list: + if os.path.exists(data.path): + os.remove(data.path) + +# EoF