Rabbit 2600 Posted September 23, 2012 Share Posted September 23, 2012 (edited) My current project is a hack of Berzerk, I'm trying too make a Metroid game, I really wanted too use Alien, Wizard of Wor or Dark Cavern, but editing the sprites where a bit odd so I resorted to Berzerk instead. This is what I've done so far: Changed the robots into metroids and the player into Samus. I still have to give Evil Otto a makeover. Here's a screenshot, what do you think about the spriting? Good enough? EDIT - The graphical hack is now complete - Look further down for the fixed edition Edited September 29, 2012 by Rabbit 2600 2 Quote Link to comment Share on other sites More sharing options...
PFL Posted September 24, 2012 Share Posted September 24, 2012 Is this just a GFX hack or do you have plans for gameplay changes too? Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted September 24, 2012 Share Posted September 24, 2012 Interesting hack. You could press the game select switch to switch between the ice beam and missiles. You could also collect missiles (simple dots within the mazes) to replenish your limited supply. That would make it really Metroidy. Just my two cents. 1 Quote Link to comment Share on other sites More sharing options...
gambler172 Posted September 24, 2012 Share Posted September 24, 2012 Hi Rabbit looks cool greetings Walter Quote Link to comment Share on other sites More sharing options...
Rabbit 2600 Posted September 24, 2012 Author Share Posted September 24, 2012 For the moment it's just a graphical hack, but I want too learn and make more advanced hacking and change some gameplay elements. My current task is too learn how too change the color of the playfield. Which is really hard and I have no clue how to do it yet =) Quote Link to comment Share on other sites More sharing options...
Rabbit 2600 Posted September 29, 2012 Author Share Posted September 29, 2012 I discovered a glitch with the Metroid sprite, when they shot down they would kill themselves, I've fixed it now, here is the improved version: Metroid 2600.bin Quote Link to comment Share on other sites More sharing options...
Rabbit 2600 Posted October 10, 2012 Author Share Posted October 10, 2012 (edited) Made a label: Edited October 10, 2012 by Rabbit 2600 Quote Link to comment Share on other sites More sharing options...
PFL Posted October 10, 2012 Share Posted October 10, 2012 I don't see the label... Quote Link to comment Share on other sites More sharing options...
HatefulGravey Posted October 10, 2012 Share Posted October 10, 2012 Neat, I can't wait to give this a shot. I can't even see the screen shots right now because I'm at work, but I love Berzerk and graphic hacks are cool so I'm sure this will be a blast. Quote Link to comment Share on other sites More sharing options...
Rabbit 2600 Posted October 10, 2012 Author Share Posted October 10, 2012 I fixed the bad link to the lable, should be working now =) 1 Quote Link to comment Share on other sites More sharing options...
Atari Adam Posted October 13, 2012 Share Posted October 13, 2012 As a Metroid fan from the beginning this is brilliant! great work Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted October 13, 2012 Share Posted October 13, 2012 Be aware that there are 2 game-killing errors in the original game (attract mode timer and reserve life addition). Correcting either of them are easy using a disassembly. To fix the first glitch, store the current LSR'ed stick value (in the accumulator) to the attract timer when the stick is moved. Fixing the second needs an additional branch to abort reserve life addition if already at 127 lives. Just use BMI to skip storing if the new value is 128. Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted October 13, 2012 Share Posted October 13, 2012 (edited) Fix #1: LF339: lda #$00 ;2 sta $E7 ;3 lda #$7F ;2 sta $E8 ;3 lda SWCHA ;4 lsr ;2 lsr ;2 lsr ;2 lsr ;2 eor #$0F ;2 ;; and #$0F ;2 superfluous ;; bne LF363 ;2 bne LF361 ;2 altered branch lda #$00 ;2 sta $91 ;3 sta $FD ;3 sta $92 ;3 lda $84 ;3 bne LF365 ;2 inc $87 ;5 bne LF365 ;2 lda $80 ;3 jmp LF21E ;3 ;using the 2 bytes saved above to fix... LF361: sta $87 ;3 store to attract mode Edited October 13, 2012 by Nukey Shay Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted October 13, 2012 Share Posted October 13, 2012 Fix #2: LFA21: adc.wy $00DD,Y ;4 sta.wy $00DD,Y ;5 lda #$00 ;2 dey ;2 bpl LFA21 ;2 cld ;2 ;BIT doesn't affect the accumulator, ;so move the LDA and AND up above it lda $E7 ;3 and #$1F ;2 bit $88 ;3 bvs LFA3B ;2 bpl LFA4F ;2 ;; lda $E7 ;3 ;; and #$1F ;2 cmp #$19 ;2 bne LFA4F ;2 LFA3B: ;; lda $E7 ;3 remove this and #$0F ;2 cmp #$09 ;2 bne LFA4F ;2 lda $E7 ;3 cmp $DE ;3 beq LFA4F ;2 lda #$03 ;2 sta $81 ;3 inc $DA ;5 ;use the 4 bytes saved here... bpl LFA4F ;2 branch if still less than 128 dec $DA ;5 bump lives back down LFA4F: LFA72: ;moved label to reuse rts rts ;6 LFA50: lda $E3 ;3 asl ;2 eor $E3 ;3 asl ;2 asl ;2 rol $E4 ;5 rol $E3 ;5 lda $E4 ;3 and #$7F ;2 sta $E6 ;3 LFA61: clc ;2 adc $E7 ;3 sec ;2 cmp $E8 ;3 bcc LFA72 ;2 beq LFA72 ;2 lsr $E6 ;5 lda $E6 ;3 ;; jmp LFA61 ;3 bpl LFA61 ;3 change to unconditional ;;LFA72: ;; rts ;6 Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted October 13, 2012 Share Posted October 13, 2012 BTW editing the sprites in Alien is no problem if you know how the sprite data is arranged. Every other bitpattern line comes from a seperate data table...so you need to alter two data tables for each sprite. For example... This: .byte %00010110 ;$16 ; | X XX | $F454 Alien frame A 1 .byte %01011101 ;$5D ; | X XXX X| $F455 Alien frame A 3 .byte %00110000 ;$30 ; | XX | $F456 Alien frame A 5 .byte %01110000 ;$70 ; | XXX | $F457 Alien frame A 7 .byte %01111101 ;$7D ; | XXXXX X| $F458 Alien frame A 9 .byte %10001000 ;$88 ; |X X | $F459 Alien frame A 11 .byte %10000100 ;$84 ; |X X | $F45A Alien frame A 13 .byte %00000000 ;$00 ; | | $F45B (end of bitmap) ...plus this: .byte %00011111 ;$1F ; | XXXXX| $F558 Alien frame A 2 .byte %01110100 ;$74 ; | XXX X | $F559 Alien frame A 4 .byte %00110000 ;$30 ; | XX | $F55A Alien frame A 6 .byte %01110100 ;$74 ; | XXX X | $F55B Alien frame A 8 .byte %11011111 ;$DF ; |XX XXXXX| $F55C Alien frame A 10 .byte %10001100 ;$8C ; |X XX | $F55D Alien frame A 12 .byte %00000000 ;$00 ; | | $F55E Alien frame A 14 .byte %00000000 ;$00 ; | | $F55F (unused) ...produces this: .byte %00010110 ;$16 ; | X XX | $F454 Alien frame A 1 .byte %00011111 ;$1F ; | XXXXX| $F558 Alien frame A 2 .byte %01011101 ;$5D ; | X XXX X| $F455 Alien frame A 3 .byte %01110100 ;$74 ; | XXX X | $F559 Alien frame A 4 .byte %00110000 ;$30 ; | XX | $F456 Alien frame A 5 .byte %00110000 ;$30 ; | XX | $F55A Alien frame A 6 .byte %01110000 ;$70 ; | XXX | $F457 Alien frame A 7 .byte %01110100 ;$74 ; | XXX X | $F55B Alien frame A 8 .byte %01111101 ;$7D ; | XXXXX X| $F458 Alien frame A 9 .byte %11011111 ;$DF ; |XX XXXXX| $F55C Alien frame A 10 .byte %10001000 ;$88 ; |X X | $F459 Alien frame A 11 .byte %10001100 ;$8C ; |X XX | $F55D Alien frame A 12 .byte %10000100 ;$84 ; |X X | $F45A Alien frame A 13 .byte %00000000 ;$00 ; | | $F55E Alien frame A 14 .byte %00000000 ;$00 ; | | $F45B (end of bitmap) .byte %00000000 ;$00 ; | | $F55F (unused) Quote Link to comment Share on other sites More sharing options...
Rabbit 2600 Posted October 13, 2012 Author Share Posted October 13, 2012 Cool! Thanks for the help! Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted October 13, 2012 Share Posted October 13, 2012 Sprite editing in Alien is much easier using a disassembly which has the bitmap data defined up top as labelled constants: AlienA01 = %00010110 AlienA02 = %00011111 AlienA03 = %01011101 AlienA04 = %01110100 etc. so that in the data tables, they will be seperated for you by using those labels: .byte AlienA01 ; $F454 .byte AlienA03 ; $F455 .byte AlienA05 ; $F456 .byte AlienA07 ; $F457 etc. Zero values in the first table are used as delimiters (defines where a bitmap image ends)...but zero values in the second table are allowed. Keep this in mind if you need blank lines within a sprite image. Quote Link to comment Share on other sites More sharing options...
Rabbit 2600 Posted October 14, 2012 Author Share Posted October 14, 2012 I'll look into it once I can get a disassembler working, no luck yet Quote Link to comment Share on other sites More sharing options...
YANDMAN Posted April 7, 2016 Share Posted April 7, 2016 looks cool, here's my label 1 Quote Link to comment Share on other sites More sharing options...
Classic Pac Posted April 8, 2016 Share Posted April 8, 2016 Very cool Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.