Hellgate

developing/porting a new game or gaming framework? post in here!
Post Reply
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Hellgate

Post by fizgog »

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

Hellgate Alpha 0.01.ssd
(5.25 KiB) Downloaded 44 times

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
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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

Hellgate.pdf
(270.68 KiB) Downloaded 33 times

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.

HellG1.png
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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

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
User avatar
TobyLobster
Posts: 618
Joined: Sat Aug 31, 2019 7:58 am
Contact:

Re: Hellgate

Post by TobyLobster »

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?
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

TobyLobster 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?
Definitely go with a better one :lol:
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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.

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		
Seems there is only 19 levels and not 20 as the inlay card suggests?

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
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.

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
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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

Screenshot 2023-07-14 at 17.39.59.png

Alpha version 2 if you want to look

Hellgate Alpha 0.02.ssd
(7 KiB) Downloaded 32 times
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

Been dissembling Hellgate further and managed to work out the alien data

Screenshot 2023-11-17 at 23.48.03.png

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
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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 8)

https://youtu.be/HQfR3z5CSuQ
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
User avatar
marcusjambler
Posts: 1147
Joined: Mon May 22, 2017 12:20 pm
Location: Bradford
Contact:

Re: Hellgate

Post by marcusjambler »

Looking good Fizgog.... Is it another Jeff Minter?
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

marcusjambler wrote: Tue Nov 21, 2023 3:34 pm Looking good Fizgog.... Is it another Jeff Minter?

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
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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
HellgateMode1.png
HellgateMode1.png (33.23 KiB) Viewed 3070 times
HelgateMode2.png
HelgateMode2.png (26.31 KiB) Viewed 3070 times

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
User avatar
tricky
Posts: 7698
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Hellgate

Post by tricky »

I'm not usually a fan of MODE 2, but that looks great :)
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

tricky wrote: Mon Dec 04, 2023 11:47 am I'm not usually a fan of MODE 2, but that looks great :)
Thanks, I did toy with the idea of a Mode 0 image

HellGateMode0.png
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
User avatar
tricky
Posts: 7698
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Hellgate

Post by tricky »

I like that one too :)
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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
Pitfall, Gridrunner, Matrix: Gridrunner 2, LaserZone, AcornViewer, AcornPad
User avatar
fizgog
Posts: 618
Joined: Thu Jun 17, 2021 3:18 pm
Location: Nottinghamshire
Contact:

Re: Hellgate

Post by fizgog »

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 :D

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
Post Reply

Return to “new projects in development: games”