Hellgate
Hellgate
Another Llamasoft game in development (I seem to be addictive to his games), this is apparently the follow up to LaserZone
This is a very early alpha release as it might take a while for the next one.
All you can do at the moment is move around and fire missiles, but let me know what you think so far.
This version added the following
Fixed bullet being displayed top left
Tidied up the screen layout
Further optimisation to the energy bar
Added missile sound effects
Next I need to disassembly the C64 version to figure out the alien attack patterns, so might take a long while.
Previous thread on this can be seen here
viewtopic.php?f=67&t=27122
This is a very early alpha release as it might take a while for the next one.
All you can do at the moment is move around and fire missiles, but let me know what you think so far.
This version added the following
Fixed bullet being displayed top left
Tidied up the screen layout
Further optimisation to the energy bar
Added missile sound effects
Next I need to disassembly the C64 version to figure out the alien attack patterns, so might take a long while.
Previous thread on this can be seen here
viewtopic.php?f=67&t=27122
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
I'm still wading through disassembly to find alien attack patterns - think they might be just using timers to trigger other timers but not sure.
In the meantime I did find this instruction sheet on the game
Looks like the plasma zaps (maximum of 9) are not controlled by the player and are used when the ship is hit, so in effect some sort of shield?
So I've re-jigged the screen layout and gone with this implementation as I think it makes more sense, you would still start with a shield power of 3 hits, but it lets you go up to 9 the further you progress.
In the meantime I did find this instruction sheet on the game
Looks like the plasma zaps (maximum of 9) are not controlled by the player and are used when the ship is hit, so in effect some sort of shield?
So I've re-jigged the screen layout and gone with this implementation as I think it makes more sense, you would still start with a shield power of 3 hits, but it lets you go up to 9 the further you progress.
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
Still slowly mapping my way through the Commodore Hellgate disassembly, a lot of weird stuff going off in there
For example, this is how he generated a random number, by getting a byte from the BASIC ROM
For example, this is how he generated a random number, by getting a byte from the BASIC ROM
Code: Select all
;---------------------------------------------------------------
; RandomNumber
;---------------------------------------------------------------
RandomNumber
STX saveX ; Save X
INC randIndex ; Increment index value
LDX randIndex ; Load new index value into X
LDA $C000,X ; Get a byte from VIC20 Basic ROM
LDX saveX ; Restore X
RTS ; On Exit A contains a "random" byte
;---------------------------------------------------------------
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
- TobyLobster
- Posts: 622
- Joined: Sat Aug 31, 2019 7:58 am
- Contact:
Re: Hellgate
Oh my, returning the first 256 bytes of the VIC20 BASIC ROM in sequence - that doesn't sound very random to me .
What do you think: are you going to reproduce this random number routine for full authenticity, or choose a better one?
What do you think: are you going to reproduce this random number routine for full authenticity, or choose a better one?
Re: Hellgate
Definitely go with a better oneTobyLobster wrote: ↑Mon Jun 26, 2023 9:36 am Oh my, returning the first 256 bytes of the VIC20 BASIC ROM in sequence - that doesn't sound very random to me .
What do you think: are you going to reproduce this random number routine for full authenticity, or choose a better one?
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
More code disassembled
Alien data seems to be located at $2F63
To locate the other levels alien data, the code seems to start at the beginning $2F63 and then cycles through until it gets to the correct data location, so the higher up the level you go, the more time it takes.
It would have been a lot easier to create some address entries for each level and then just index into them.
Seems there is only 19 levels and not 20 as the inlay card suggests?
This is the first 3 levels and last one 19
I think also the level data is split into blocks of 3's, meaning level 1 has 9 blocks
This is level 1's first block, not sure what the first byte does yet.
Alien data seems to be located at $2F63
To locate the other levels alien data, the code seems to start at the beginning $2F63 and then cycles through until it gets to the correct data location, so the higher up the level you go, the more time it takes.
It would have been a lot easier to create some address entries for each level and then just index into them.
Code: Select all
;$1B6F
LDA #$01 : STA a2B
LDA #$63 : STA a2C
LDA #$2F : STA a2D ; $2F63 pointer to alien data
; currentLevel is 0 based
LDA currentLevel
BEQ b1B8B ; current level 0 so skip $2F63 increment
TAX ; transfer level to X
b1B80
JSR NextLevelAlienData ; Get next alien data byte
BNE b1B80 ; !=0 get next byte until it reaches 0
DEX ; Decrement level
BNE b1B80 ; loop back
JSR NextLevelAlienData ; This byte is the start of the level data
b1B8B ; A contains first byte of alien data
; ...
Code: Select all
;------------------------------------------------
; NextLevelAlienData
;------------------------------------------------
NextLevelAlienData
INC a2C ; Data starts at $2F63 for level 0
BNE b29BE ; != 0 skip if not reached 0
INC a2D ; increment high byte
b29BE
LDY #$00 ; Read next byte in a2C
LDA (a2C),Y ; Get aliens data
RTS
This is the first 3 levels and last one 19
Code: Select all
L2F63 ; Aliens Attack Data, each level terminated by $00 ?
; End marker defined as $FF
; Level 1 (NB : level is 0 based)
.BYTE $02,$04,$04,$02,$06,$04,$02,$06
.BYTE $04,$02,$04,$02,$02,$04,$01,$09
.BYTE $02,$01,$02,$04,$01,$00
; Level 2
.BYTE $02,$06,$04,$06,$04,$02,$06,$04
.BYTE $02,$06,$04,$02,$09,$01,$01,$02
.BYTE $04,$01,$02,$04,$05,$03,$02,$01
.BYTE $00
; Level 3
.BYTE $03,$04,$06,$02,$04,$04,$02,$06
.BYTE $04,$06,$04,$02,$03,$02,$02,$04
.BYTE $01,$03,$02,$04,$04,$02,$04,$03
.BYTE $02,$04,$02,$09,$02,$01,$02,$04
.BYTE $01,$00
...
; Level 19
.BYTE $0A,$06,$02,$03,$06,$04,$06,$04
.BYTE $01,$06,$04,$01,$0B,$06,$01,$09
.BYTE $06,$01,$04,$04,$04,$07,$01,$06
.BYTE $05,$08,$01,$03,$02,$01,$03,$02
.BYTE $01,$03,$02,$01,$03,$02,$01,$09
.BYTE $06,$01,$04,$02,$01,$0B,$02,$01
.BYTE $0A,$08,$01,$07,$01,$04,$02,$04
.BYTE $01,$03,$04,$01,$06,$06,$01,$09
.BYTE $04,$01,$0A,$08,$01,$00
; End Markers
.BYTE $FF,$FF,$FF,$FF
This is level 1's first block, not sure what the first byte does yet.
Code: Select all
$02 - Unknown yet
$04 - How many aliens per wave, 4 aliens
$04 - Waves per block
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
Still slowly wading through the disassembly for the alien attack data, but I did implement my own version of the particle clear screen, and have also added a game front end with level select
Alpha version 2 if you want to look
Alpha version 2 if you want to look
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
Been dissembling Hellgate further and managed to work out the alien data
This video shows a couple of levels with the aliens moving around
https://youtu.be/eqHi0iWP3zM
It's struggling a bit as it's trying to push 4 ships, 20 bullets and 32 alien sprites around the screen, so it needs a lot more optimisation
Also need to workout the special aliens next the move differently to the standard aliens
This video shows a couple of levels with the aliens moving around
https://youtu.be/eqHi0iWP3zM
It's struggling a bit as it's trying to push 4 ships, 20 bullets and 32 alien sprites around the screen, so it needs a lot more optimisation
Also need to workout the special aliens next the move differently to the standard aliens
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
Added alien movement for alien 5 (spoke like alien)
Added animation to all the alien (each now have 3 frames, apart from the spinner which has
https://youtu.be/HQfR3z5CSuQ
Added animation to all the alien (each now have 3 frames, apart from the spinner which has
https://youtu.be/HQfR3z5CSuQ
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
- marcusjambler
- Posts: 1150
- Joined: Mon May 22, 2017 12:20 pm
- Location: Bradford
- Contact:
Re: Hellgate
Looking good Fizgog.... Is it another Jeff Minter?
Re: Hellgate
Yep another Minter classic coming to the Beeb, it stalled for a while, while I was working long hours at work.
Just got my head around 6502 again, and I’ve managed to disassemble the alien attack code, next up is to code the alien and player kill code
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
Following added (no test build though)
Added user defined keys to the mode 7 loader
Optimised the collision detection routines
Added players ships killed if touched by aliens
Added shield depletion if touched by aliens
Aliens can now be killed
Was also playing around with the AI generator and came up with this image (Mode 1 or Mode 2)
Not sure which one to use or maybe a completely different image
Still to do in no particular order
Game over message
Highscore entry
2 player mode
More Sound effects
More optimisations
Added user defined keys to the mode 7 loader
Optimised the collision detection routines
Added players ships killed if touched by aliens
Added shield depletion if touched by aliens
Aliens can now be killed
Was also playing around with the AI generator and came up with this image (Mode 1 or Mode 2)
Not sure which one to use or maybe a completely different image
Still to do in no particular order
Game over message
Highscore entry
2 player mode
More Sound effects
More optimisations
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
I'm not usually a fan of MODE 2, but that looks great
Re: Hellgate
Thanks, I did toy with the idea of a Mode 0 image
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
New video with following changes
Added loader image
Added user defined keys
Moved colour cycling title into interrupt
Added shield protection
Added Ship destroyed collision detection
Added Alien destroyed collision detection
Added Game Over message
Added Overheat if ships are not moving but still fireing missiles (Ships are destroyed)
https://youtu.be/Zom7BFiXeWE
Added loader image
Added user defined keys
Moved colour cycling title into interrupt
Added shield protection
Added Ship destroyed collision detection
Added Alien destroyed collision detection
Added Game Over message
Added Overheat if ships are not moving but still fireing missiles (Ships are destroyed)
https://youtu.be/Zom7BFiXeWE
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
Re: Hellgate
Was planning on getting this released for xmas, but work had other ideas , so have not touched it for a bit.
I did manage to collaborate on updating BeebSpriter that will be released soon though with some nifty new features
Hopefully I can get this game finished in the new year, when work calms down.
This is the current list of things outstanding
Goat giving a bonus if not hit
Enemy spinner shooting zappers
Highscore entry
Joystick support
Remaining Sound Effects
Bug fixes
Anyway Merry xmas to all
I did manage to collaborate on updating BeebSpriter that will be released soon though with some nifty new features
Hopefully I can get this game finished in the new year, when work calms down.
This is the current list of things outstanding
Goat giving a bonus if not hit
Enemy spinner shooting zappers
Highscore entry
Joystick support
Remaining Sound Effects
Bug fixes
Anyway Merry xmas to all
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad