| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Berzek for C64
Hello... I recently recieved assembler source code for Berzerk video game. I was told that I would have to use CCS65 to compile it. However, I am quickly realizing that I have no idea how to do this in CCS65. Can some one help me our compile this for me with CCS65 if I sent the source code? All help is appreciated, I'd love to get a port of this classic on the C64.
|
|
| |
Scout
Registered: Dec 2002 Posts: 1570 |
*LOL*
So you actually think that compiling the sourcecode of a 1981 arcade/atari 2600 game with CC65 will result in a runnable game?
Intruder alert Intruder alert Intruder from Lemon64 alert
Humanoid!
EDIT: The sourcecodes (http://www.mameworld.net/maws/mamesrc/src/mame/drivers/berzerk.c) you found are drivers for MAME. Not the actual gamecode. |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Different source code... Than that one... Those are the MAME source. I have a 6502 assembler source as well that I found...
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
If you email me the sources I'll have a look at getting them building for you, but nothing is guaranteed because I'm sure the machine used a Z80 not a 6502. |
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Quote:
...I'm sure the machine used a Z80 not a 6502.
That's correct.
|
| |
T.M.R Account closed
Registered: Dec 2001 Posts: 749 |
Quote: Different source code... Than that one... Those are the MAME source. I have a 6502 assembler source as well that I found...
You don't seem to be getting the point... you can't just take the 6502 source code for one platform and assemble it for another, 8-bit computers don't work like that. At most the core logic can be taken apart and perhaps used but the display engine will be machine specific and at best may serve as a reference if whoever is doing the work (and yes, it's a lot of work what i'm describing rather briefly here) knows the original platform well enough to use it that way.
The code for the original coin-op will be written in Z80 since that's what the machine has but again that's custom hardware driving everything so even if it were 6502 the same "rules" apply. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Hmm if they're definitely 6502 sources (not Z80) then it might be from one of the Atari versions.
In that case it might be simpler with the 6502/6507 version to let all of the code run in memory and have an IRQ/NMI come along and translate the stores to what it thinks are hardware registers (relocated into harmless memory from the source code) into something the C64 can display instead.
Sort of like running a virtualised machine inside the C64. :) |
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Better is to start from scratch.
The graphics are easy to make and the Evil Otto samples are available on the net.
Creating a virtual machine is also creating a lot of problems for yourself and after a while you are only coding workarounds.
Documentation about the original gameplay (including quirks) are easy to find.
My advice, if you plan to do a port, use that info rather than the original sourcecode. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Of course it creates problems, that's part of the joy in programming solutions. :) The difficulty depends on which Atari if the sources come from the Atari version.
Starting from scratch and maybe possibly reusing some of the old code is certainly one way to go and also has its own joys.
|
| |
Marauder/GSS Account closed
Registered: Jul 2006 Posts: 224 |
"Berzerk was the first video game known to have been involved in the death of a player. In January 1981, 19-year-old Jeff Dailey died of a heart attack soon after posting a score of 16,660 on Berzerk.[1] In October of the following year, Peter Burkowski made the Berzerk top-ten list twice in fifteen minutes, just a few seconds before also dying of a heart attack at the age of 18."
(source Wikipedia)
so better watch out when doing a port or playing the game, hehe... *gg* (c; |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
It is 6502 source from an atari platform... I will send you the source as requested. I appreciate the offer of help... It is not from the arcade machine, it is the 6502 source from an atari version. |
| |
Bregalad Account closed
Registered: Jul 2008 Posts: 42 |
Well, I I'm studying how to port a NES game to the C64, taking advantage of the fact both machines are 6502.
I guess the core of the game engine will look pratically unchanged, exept for player input, which will be slightly different.
However I'll have to do completely different sound driver and graphics handlers, obviously. The biggest pain is the redution to only 3 sound channels (altough the channels themselves are superior), the fact that the screen is less tall but wider so I should adapt the level to fit the new screen, and the fact that in multi-color mode the resolution is halfed resulting in crap graphics.
The fact that the code has originally be written by me should help of course because if it's by someone else you'd first have to figure exactly what piece of code does what and this is very hard to do if you only have a dissasembly. The graphics&sound handler are the only part that are easy to figure out because they work with known registers, not only with abstract variables. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
well... the Atari800 Version, or more precise, the 5200 version should be possible.
as it does not use any hardware sprites (like f.e. multiplexing etc) it uses so called "Antic E" screen which is 160x192x4 so the common MCM.
so...in theory you would do the suggested "virtual machine". I have done a similar thing when porting MetaLlamas from VIC20 to A800. the actual VIC-code is running and I patched or used the VBL to read the $900x stuff and translated that into suitable registers.
so... I guess really not a real issue.
START/SELECT/OPTION/JOYSTICK could be translated to F1,F3,F7 etc.
only thing which might need a rewrite or a patch is the actual put sprite routine as it uses a linear 40x192 byte buffer for the high res screen while the C64 one differs a little bit...
but the 5200 version really does not use any kind of "special trick" of the hardware.
|
| |
d0c
Registered: Apr 2006 Posts: 186 |
if trip6 is the same person, Arkhan on lemon64. then it looks like this is an abandoned project...
http://www.lemon64.com/forum/viewtopic.php?t=24128&postdays=0&p..
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
well... maybe I will give a shot... with help of TMR... ;)
but I am full with other "side projects" beneath Beyond Evil coding...f.e. Super Amok! port.
but could be really quickly done... imho.
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
hmmm... just had a quick look on the XL version... it uses ram $0000-$3fff and $8000-$bfff. and uses hardware sprites (not sure for what exactly but could be player and could be otto).
so gfx wise there should be not an issue, maybe the soft sprite routine needs to be adjusted as 1,79 mhz vs 0,9 but as there is room for unrolled loops... still possible.
hmmm....
but I guess the first thing to solve will be how to mimic the 40x192 linear vram...
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Gremlins & Zone Ranger might give a clue as both have an Atari counter part which are based on high res. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: if trip6 is the same person, Arkhan on lemon64. then it looks like this is an abandoned project...
http://www.lemon64.com/forum/viewtopic.php?t=24128&postdays=0&p..
Yes, I have a look at the source from trip6. It quickly became apparent that the C code (yes, C) was an attempted fan remake of the game by someone else, but the code didn't contain anything like proper AI, level progression or anything like what would be considered game play. Since the code was not the original code I didn't see much point converting it to the C64 since it would be just as quick to code the game from scratch. About the only reusable bit of code was the screen creation code, but again this did not appear to be based on original code so porting it wouldn't have resulted in an authentic conversion. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Martin,
so...why not take the DIS6502 file of the Atari Version and have a go from there?
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Martin,
so...why not take the DIS6502 file of the Atari Version and have a go from there?
While I like a good coding challenge working from undocumented disassembly is definitely a task for when I have more energy. :)
|
| |
d0c
Registered: Apr 2006 Posts: 186 |
me *pray* that Martin Piper will do c64 berzerk.... |
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Quote: me *pray* that Martin Piper will do c64 berzerk....
Get real.
Fun thread tho; a little cute space for Lemon64 users on csdb.
|
| |
T.M.R Account closed
Registered: Dec 2001 Posts: 749 |
Fungus was talking about doing it a while back and i did a bitmap logo - if anyone gets working code going, get in touch if y'want it. =-) |
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Quote: Fungus was talking about doing it a while back and i did a bitmap logo - if anyone gets working code going, get in touch if y'want it. =-)
I hope the code is for an Atari 2600, developed in C and using hardware sprites?
(lol) |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Scout... I joined this discussion simply because I have done some conversions (f.e. Venus Express from Aleksi Eben with the well documented sources) and Metagalactic Llamas from VIC20 to Atari800).
And I am coding my RPG with soft sprite routines since two years (ok...what a progress... ;)) but since for few weeks I switched from bitmap modus on A800 to "c64"-like custom font model for the later port...
and because of researches I made regarding soft sprite routines (Zone Ranger, Gremlins, Bubble Bobble etc) I tend to say that it is more likely that you can get over the Atari Version of Berzerk to C64 as it seems to use not much complicated Atari chipset related stuff...
So... I am not kidding here...
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Martin,
so...why not take the DIS6502 file of the Atari Version and have a go from there?
I had a spare chunk of time, DIS6502 is quite good as long as I ignore the terrible UI :). At least it helps find graphics and separate data and code blocks. The disassembly is only 2235 lines long of code mixed with data. Hmm...
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
oh. that's cool. DIS6502 is very handy esp. when labeling stuff. you can double click on the label and jump through the code forwards and backwards.
but yes...GUI sux... ;) but more sux that there is no page up/down in the windows possible.
did you make a memory snapshot? or did you load the cart-image? because you have to be carefull as the .PRG files out there might be packed so there are more file segments included... (as Atari can simply link several files into one file...not like the 4 byte header c64 ones).
|
| |
Peiselulli
Registered: Oct 2006 Posts: 81 |
I used this
http://www.hex-rays.com/idapro/
to disassemble "boulder dash" for this release
Boulder Dash DTV final + Source
I tested DIS6502 too, but I thought IDA was better to handle ...
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
IDA certainly is the best :) |
| |
iAN CooG
Registered: May 2002 Posts: 3193 |
Quote: oh. that's cool. DIS6502 is very handy esp. when labeling stuff. you can double click on the label and jump through the code forwards and backwards.
but yes...GUI sux... ;) but more sux that there is no page up/down in the windows possible.
did you make a memory snapshot? or did you load the cart-image? because you have to be carefull as the .PRG files out there might be packed so there are more file segments included... (as Atari can simply link several files into one file...not like the 4 byte header c64 ones).
There are no such things as "segments" on C64 prgs or carts, it's only an exact dump of linear memory beween 2 addresses, so linked parts must be already at the right address or relocated at runtime. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: I used this
http://www.hex-rays.com/idapro/
to disassemble "boulder dash" for this release
Boulder Dash DTV final + Source
I tested DIS6502 too, but I thought IDA was better to handle ...
I agree IDAPro is the best, but my licensed copy is on a different PC that is currently somewhere on a boat in the Pacific being transported to my new home.
That said, the disassembly produced by DIS6502 has let me get the Berzerk code up and running on a C64 with the code reloacted to a suitable memory address and it not trying to change ZP$01 all the time. :) So right now the Berzerk code appears to be running in a tight loop updating lots of locations in ZP to about $0380. Interestingly the loop it is running in uses very little stack stack, about five bytes. This memory access is of course being displayed by telling VIC to display the "screen" starting at $0000. :)
Next step is to hook the places where they display the screen and sprite data.
Would anyone like the code produced so far posted on Codebase?
|
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Quote:Would anyone like the code produced so far posted on Codebase?
Codebase isn't a SVN.
Put it there when you actually finished the game.
If you really want to have ppl to track the progress, start a blog (like the creator of XeO3 does). |
| |
Fungus
Registered: Sep 2002 Posts: 686 |
I did work on this game at one time. I thought to include the samples of the arcade speech using a similar dictionary system to keep the memory required for the samples to a minimum, and also coded the sprite multiplexer I put on codebase for this game.
I also made a way to compress the screens to 3 bytes each, by analyzing the arcade screens and determining the size of each wall, it actually only takes 22 bits, with 2 bits left over to tell the game which doorway the player entered on the next screen so the door can be closed. In this way the screens can be generated at run time in a random matter, 3 bytes only with top 2 bits masked for doorway entry of course.
I might have the paperwork somewhere left for that... dunno.
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
I am refering to this version:
http://www.atarimania.com/detail_soft.php?MENU=8&VERSION_ID=596
when entering the monitor in Atari800win (F8) and typing DLIST you get the display list. it shows that the screen seems to start at $2028 and will probably go to $2028+7680 (40x192 bytes). ignore the char mode lines in the middle of the screen which are the Berzerk logo.
so the game uses a linear "Antic e" screen which is 160x192x4.
so don't wonder why $2028 as this is an Atari friendly starting when using a >4k screen. (Antic can only adress 4096 bytes in a linear matter without reloading the adress counter "LMS = Load Memory Scan).
Maybe Berzerk uses double buffering but I have to look later in the code more proper.
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
I've been working from the Atari 2600 version. :) http://www.atariage.com/software_page.html?SoftwareID=866
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
iiii... ;) i love the 2600 version but let's see how far you get as the 2600 is a damned beast with it's "kernel" stuff...
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Yes, I had to remind myself how Stella works.
Then I cried.
Then I found an excellent emulator and debugger. http://stella.sourceforge.net/
And have been happier since then.
My first stage is to annotate and tweak the source sufficiently that I can assemble it with ACME and still have the game working on the 2600. Then I can feel confident that when I add extra code to interface the access to the 2600 hardware with suitable C64 calls to support functions I know that will be working as intended. Luckily the Berzerk code doesn't make that much use of RESP0, RESP1, RESM0, RESM1, RESBL. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
ah. ok... but the 2600 version misses some tweaks like diagonal shooting of the robots plus speech... ;)
if I would be more familiar with c64 I would try to get the A8 version over instead of the 2600 one...
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Yes true. This is pure 100% geek curiosity of porting old Atari 2600 code, it's not intended to make it the best Berzerk version possible on the C64. :)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
well...comments to the A8 version.
it uses 1 hardware sprite for the player. and hardware missles for the shots of the player & robots... interesting... I thought that they were softsprites...
$8716ff. is the sprite handling plus draw routine
$8763 ff. is the draw robot routine. this would be need to adjusted to c64 bitmap layout. $8b,$8c are pointers to correct screen position so this tables need to be adjusted. $9e,$9f pointer to the sprite data (shifted to each pixel pos.), this routine looks very compact and not optimised so room here for improvements.
$b700 ff. are the samples plus sample playback...standard 4bit samples. $c4,$c5 is the pointer to the sample data.
well... so it looks more and more doable.
Jesus, if I understand the draw_sprite routine correct... it shifts the sprite data on the fly... unbelievable. Did I say "compact"?
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
so. I have read stuff regarding the bitmap modes on c64. before I start to reinvent the wheel twice... all VIC20 and c64 veterans surely wrote soft sprites routines based on the bitmap modes already.
so...does anybody have a handy routine which only copies an 8x8 sprite into the desired adress space based on $2000 bitmap mode and the 40x25 layout? I am interested esp. in the look up tables organisation.
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
you would do this by making 2 lookup tables. one for y, to adress the leftmost byte "column" of the bitmap, and one for x, for adressing horizontally.
ldy y
ldx x
lda ytablow,y
clc
adc xtablow,x
sta $fc
lda ytabhi,y
adc xtabhi,x
sta $fd
lda $fc
clc
adc #$08
sta $fe
lda $fd
adc #$00
sta $ff
lda spritesource1,x
sta $f0
lda spritesource2,x
sta $f2
ldy #$07
lda ($f0),y
ora ($fc),y
sta ($fc),y
lda ($f2),y
ora ($fe),y
sta ($fe),y
dey
bpl -
somehow like this.. to give you an idea.. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
koesz.
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
ok... got it... I wrote my first c64 basic code ever:
0 for i=1024 to 1024+999:poke i,1:next i
1 poke 53265,peek(53265) or 32
2 poke 53272,peek(53272) or 8
3 for i=8192 to 8192+8191
4 poke i,0
5 next i
10 x=rnd(0)*320
20 y=rnd(0)*200
30 c=int(x/8)
40 r=int(y/8)
50 poke 8192+c*8+r*320,255
60 goto 10
so thanks Oswald, now I know how to prepare my lookup tables... I thought it is same trickery like the weird Apple II screenlayout...
Yes, I know...this is for high res but should be no problem to adapt to MCM. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
of course Oswald, your code fragment does not care about "clipping" across different cells.
Can you remember our conversation regarding my sprite routines in Beyond Evil?
I guess here I have to deal with "split draw" as well as f.e. an 8x16 sprite occupies different cells which are not align together like the
ADG
BEH
CFI
"font modes"...
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
splitting across rows:
tya
tax
ldy specytable1,x
lda ($f0),y
ora ($fc),y
sta ($fc),y
lda ($f2),y
ora ($fe),y
sta ($fe),y
dey
bpl -
$fe=$fe+$140
$fc=$fc+$140
ldy specytable2,x
lda ($f0),y
ora ($fc),y
sta ($fc),y
lda ($f2),y
ora ($fe),y
sta ($fe),y
dey
bpl -
from the top of my head again... sprite data should be indexed with abs,x and the code adjusted to that tho.. |
| |
Fungus
Registered: Sep 2002 Posts: 686 |
First off, there is no need to use bitmap mode... char mode is fine, and hi-res too. The game doesn't use any multicolor graphics.
You can even use built in char set to make the walls.
Use sprites, they are there, use them. There is plenty of easy to understand/use multiplexers which can have 24 sprites on screen quite easy.
The only problem I encountered was the collision detection, so that the bullet can still pass through the players "neck".
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
if the goal is to reuse 90% of the Atari code... then why should I use sprite multiplexor? c64 has mcm, atari has...only difference is the organisation.
so imho could be easy task.
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
My God, the Atari 2600 version takes nearly a whole C64 frame to execute one frame. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
hehehe...why not... are the c64 and the 2600 not nearly the same cpu speed?
|
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Umm, the 2600 generates the display manually, so everything takes a whole frame regardless of complexity. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
that's why I found it hard to take the 2600 version with it's "hardcoded" gfx kernel interleaved with game logic approach.
so... I will give a shot on the A8 version instead. But question... when porting Metallamas from VIC20 to A8 I used following way of patching
ORG patch_adress
insert new_code
ORG patch_adress2
insert new_code2
...
as A8 can have multiple file segments...so first Atari loaded the original game file into memory and then the other small patches which overwrote the wanted parts of the VIC20 code.
but what would be the practical way of doing that with C64???
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Umm, the 2600 generates the display manually, so everything takes a whole frame regardless of complexity.
It generates the display manually but the 2600 can do a store to WSYNC which pauses the processor until the start of the next raster. Obviously the store WSYNC doesn't pause the CPU until the next raster on the C64 so I was expecting the actual frame time to be much less than discovered. On the C64 each store WSYNC translates to a "jsr ScanCalc" which keeps track of the virtual scanline and the PF/PL status to keep track of what to really draw on the C64 screen.
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
the 2600 is slightly faster, so the same thing will take more time for the c64, also I guess you counted in the code which does nothing but builds up the screen. to sum it up 90% is pretty realistic.
heaven, bet you can patch code like that in an xasm . why waste diskspace for code that will be overwritten all the time anyway :P :) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
It is when, as I found out, during the actual game rendering the code to draw each scanline actually takes two scanlines. i.e. A store to WSYNC happens half as often and the code itself uses most of the available cycle times for two scanlines.
During the title screen, which is simpler, it takes about 40% of a frame.
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
ok. startet the process of going through the DIS6502 output and as more as I got into the soures as more I see the port.
the A8 Berzerk does even have a PAL/NTSC detection inside.
So as my general "patching" method will not be possible I will produce a DASM compatible source of the A8 version and will try to compile that first. When done I will start the C64 porting. |
| |
d0c
Registered: Apr 2006 Posts: 186 |
thanks Heaven for making a c64 port of berzerk :) |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
well...the complicated thing will start when I am moving to C64... as I am not a c64 geek... ;) but Oswald & TMR might help here...
but look, the game uses zero pages $80-$ff so it is even more system friendly... ;)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
I just had to worry about VSYNC and VBLANK being at $00 and $01. Not fun locations to be splatting values to. :)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
well... I heard of 0,1 not being fun... ;)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
It depends. :) If interrupts are disabled and you don't want to use SID/VIC/BASIC/KERNAL then you're fine. :) |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: It depends. :) If interrupts are disabled and you don't want to use SID/VIC/BASIC/KERNAL then you're fine. :)
@Martin: not entierly correct since the values of $00 will affect the values of $01. F.e. if you set all lines to output in $00 any read of $01 will result in #$ff. iirc. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
oh yes, and that too. :)
But what I meant was that in the context of Stella locations 0 and 1 are write only so without needing to do any reads and with interrupts off (plus no ROM or IO access) writing to 0 and 1 you're fine.
Except the tape motor... :)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
ok. we have now a DASM compileable source code with help of the guys at atariage. you have to be registered to download the file:
http://www.atariage.com/forums/index.php?showtopic=131224&st=0&..
so... now we can get into the next stage and get the stuff over to c64... ;)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
small update made as I am able now to reassemble the source. found:
- init chipset
- digispeech playback procedere
- set soft sprite routine
- set player hardware sprite
- console key check (start,select,option)
now I am searching for the init_highres screen plus draw_maze routines. when found I can start to port over to c64...
custom font at $ac00 for the score panel, it's charmode here (2 lines).
I messed around with the gfx routine, found the lookup table for the screen calculations and as it seems, the collision detection is based on hardware check instead of software checks. Same for the shots, they are hardware sprites, when they are disabbled ("missles off") you hear the shot sound but no shots and no exploding robots...
I personally found the code not very "friendly" written... I would guess "it works as designed"... ;)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
last comment. when you are going through the Atari800 source you will recognise that it is not really using a lot of hardware related stuff which can not be used on c64 side:
- 160x200x4 screen
- digi speech 4bit samples in $0x,$x0 order
- hardware sprites for the player plus shots
- robots are soft sprites
- sound fx could be reproduced by SID
- start/option/select --> F7,F3,F1
- no hardware scrolling used
- one screen/dlist only
- 3 DLIs which easily can be transfered to raster IRQs
- 2 graphics modes mixed (Antic E (bitmap) plus Antic 4 (font)) but can be reproduced easily via VIC
so... should be doable.
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
another morning another try...
the scrolling in y-direction is done by adding +40 to the screen adress and inserting blank scanlines into the display list.
the scrolling in x-direction is done by adding +/-1 to the LMS commands of the display list and (probably) clearing the bitmap collums.
so... the scrolling needs to be recoded. I do not like the lame blocky and flickering scrolling anyway and I found it good enough to switch the screens when leaving to new room. see like in Super Amok! on VIC.
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
ok...took few hours to find out where the damned Berzerk logo is painted on screen... it seems that it is packed as the code to copy the logo into VRAM:
LA0FE: lda #$8D
sta L00A0
lda #$B0
sta L00A1
lda #$44
sta L009D
LA10A: jsr LA0BC
ldy #$FF
LA10F: iny
tya
asl
sta L00A2
ldx #$01
lda (L00A0),Y
sta L00A3
LA11A: lda #$00
asl L00A3
bcc LA123
ora LA0AA
LA123: asl L00A3
bcc LA12A
ora LA0AB
LA12A: asl L00A3
bcc LA131
ora LA0AC
LA131: asl L00A3
bcc LA138
ora LA0AD
LA138: ldy L00A2
and L00A4
sta (L008B),Y
inc L00A2
dex
beq LA11A
tya
lsr
tay
cmp #$08
bne LA10F
lda L00A0
clc
adc #$09
sta L00A0
bcc LA155
inc L00A1
LA155: inc L009D
lda L009D
cmp #$6B
bne LA10A
rts
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
and finally the joystick routine is found, too...
so all main procederes to get started are found. so... maybe this afternoon I will transfer the code to C64 and look what happens... ;)
first task will be the mimic the bitmap screen & draw maze/logo stuff.
So question:
the game uses $0000-$3fff for RAM, where the bitmap screen is at $2028ff. display list at $1000 and lookup tables at $10d0 ff. Hardware sprite at $1400-$17ff and $1800-$1fff again game lookup tables.
So, how would you structure the c64 memory layout?
in a perfect world I would like to have bitmap at $2000 and the screen ram at $4000 but I guess that is not possible as they are different VIC banks... so what about using $4000-$7fff for bitmap screen, font and sprites?
this would leave $2000-$3fff free for custom c64 routines.
what do you think?
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
I've uploaded the Atari 2600 version with C64 code tweaks (along with other improvement to the multiplexor and compression code) to the large archive at http://codebase64.org/doku.php?id=projects:resurrection
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
thanks Martin, for sharing...
esp. I like the sprite multiplexor in the archive... ;)
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
I dont think codebase is a place for that. It's about programming infos, and not about 5% converted game's sources. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Well the source file is but one of the many in that archive because it's part of the user projects section. It seemed a bit silly to do a code update of the compression and multiplexor parts and leave out the project.
|
| |
Burglar
Registered: Dec 2004 Posts: 1101 |
I think the User Projects space on codebase is an excellent place for things like this. I cannot think of a single reason why it shouldn't.
Keep it up! |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: and finally the joystick routine is found, too...
so all main procederes to get started are found. so... maybe this afternoon I will transfer the code to C64 and look what happens... ;)
first task will be the mimic the bitmap screen & draw maze/logo stuff.
So question:
the game uses $0000-$3fff for RAM, where the bitmap screen is at $2028ff. display list at $1000 and lookup tables at $10d0 ff. Hardware sprite at $1400-$17ff and $1800-$1fff again game lookup tables.
So, how would you structure the c64 memory layout?
in a perfect world I would like to have bitmap at $2000 and the screen ram at $4000 but I guess that is not possible as they are different VIC banks... so what about using $4000-$7fff for bitmap screen, font and sprites?
this would leave $2000-$3fff free for custom c64 routines.
what do you think?
Yes, given the memory layout restrictions you have then using $4000-$7fff for graphics seems sensible. Or get the code compiling to such a state that you can move the Atari graphics/code/data around to anywhere you like. :)
I'm glad you like the multiplexor, it's heavily tweaked (to add more sprites and make it more like a general purpose extensible library) from a version found on codebase.
PS. Thanks Burglar. :)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
ok. small update.
i jut found the last puzzle to start getting the code over - the maze draw routine.
why did it take so long? because I need to learn how the game was written...imho not very "readable" and not very slim and optimised or not even common "tricks" are used. That could be the reason why I haven't spottet the importantant routine at a first glance... well... it looks like my first games or demos written back in the glory days ('it works...don't ask how but it does...' ;))
So I have to assume that it was a kind of novice doing the game... interesting that he was able to do digi speech but no proper sprite routine... ;) the lookup table routine for the scanline start adresses takes more than 60 lines of code alone! and there are tons of LDA ADC STA LDA ADC #0 STA sequenzes etc etc...
question... (I raised that already in #osg) would you rewrite the stuff or try as much as possible to run the original code?
if I run the original code there is a chance that the game slowes down as 1,77 MHz vs 0,99 MHz plus non-linear vram calculations on top...
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
If you can disable as much of the redundant drawing code. I found even after hacking out a lot of frame drawing code that wasn't needed the game code still took several C64 frames.
But you get extra bonus points if the source can be used to build and run the original version on the Atari. :)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
well... next step will be disabling all hardware related stuff.
GTIA = $D0xx ;sprites plus colours
ANTIC = $D40x ;graphic mode handling
POKEY = $D20x ; sound
I guess all conflicting with C64 chipset somehow... ;)
then the next will be in throwing custom routines for VIC-init.
and yes, Martin, it's good to be able to assemble Atari version and C64 version with DASM. So I can change bits and pieces and see what happens in the game...
Monitoring in Atari800win would be much more difficult... It really helps of being able compiling the original game.
|
| |
Shadow Account closed
Registered: Apr 2002 Posts: 355 |
A bit off-topic:
What's strange with the sequence "LDA ADC STA LDA ADC #0 STA", seems like an addition of 8 bit value to 16 bit value, nothing peculiar, or? |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: A bit off-topic:
What's strange with the sequence "LDA ADC STA LDA ADC #0 STA", seems like an addition of 8 bit value to 16 bit value, nothing peculiar, or?
Assuming zero page for the loBye/hiBye if it is:
lda loByte
adc #foo
sta loByte
lda hiByte
adc #0
sta hiByte
16 Cycles 12 Bytes
Then this is slightly quicker and uses less bytes:
lda loByte
adc #foo
sta loByte
bcc .over
inc hiByte
.over
15 (+1 less often) Cycles 10 Bytes
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Martin is right...
assuming that the game depends a lot on the horse power of the CPU for rendering the software sprites... you find a lot of (!)
ldy #0
CLC
LDA zp,y
adc var1
sta zp,y
lda yp+1,y
adc #0
sta yp+1,y
...
or the
CLC
lda var1
adc #val
sta var1
lda var1+1
adc #0
sta var1+1
...
which all can heavily optimised...
I don't want to blame the guy(s) who wrote the game but look at his lookup table generator:
; ----------------------------------------------------------------------------
;lookup table generator for each scanline
;$AE98,$AE99 start adress of Antic E bitmap screen
;$10d0 lookup table for scanline begin
;format lo,hi,lo+40,hi, lo+80,hi etc lo=$10d0+i*2 hi=$10d0+i*2+1
L856C: lda #$02
sta $9C
lda #$D0
sta $8B
lda #$10
sta $8C
;calc first half
ldy #$00
clc
lda LAE98
adc #$01
sta ($8B),y
iny
lda LAE99
sta ($8B),y
dey
L8589: clc
lda ($8B),y
adc #$28
iny
iny
sta ($8B),y
dey
lda ($8B),y
iny
iny
adc #$00
sta ($8B),y
lda $9C
cmp #$64
bne L85C1
;2nd half of the screen
dey
clc
lda LABBA
adc #$01
sta ($8B),y
iny
lda LABBB
sta ($8B),y
clc
dey
tya
adc $8B
sta $8B
lda $8C
adc #$00
sta $8C
ldy #$01
lda $9C
L85C1: inc $9C ;scanline counter
cmp #$b0 ;176 lines?
beq L85CB
dey
jmp L8589
; ----------------------------------------------------------------------------
L85CB: rts
`
aehm... the output is a 176 bytes lookup table.
and best... it is interleaved... so the index needs to be ASL (*2)...
|
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Fantastic progress you guys are making on this... Thanks for all the efforts and keep up the good work... I have no doubt soon we'll have a great C64 conversion of Berzerk. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
and here is the mentioned setsprite routine.
this must be rewritten to the c64 bitmap architecture but imho not a major issue:
(looks "tightly" written for these small sprites)
;set robots on screen
;soft sprite handling
L8716: lda $183A
beq L872A
sta $8F
ldx #$01
stx $86
dex
clc
L8723: jsr L872F
dec $8F
bne L8723
L872A: lda #$00
sta $86
rts
; ----------------------------------------------------------------------------
L872F: lda $0F00,x
sta $9C
lda $0F01,x
sta $9D
lda $0F02,x
sta $9E
lda $0F03,x
sta $9F
lda $0F04,x
sta $8B
lda $0F05,x
sta $8C
lda $0F06,x
sta $A0
asl
sta L00A2
txa
clc
adc #$07
sta $FF
lda #$09
sbc L00A2
sta $A3
ldy #$00
L8763: lda ($8B),y
sta $8D
iny
lda ($8B),y
sta $8E
sty $A1
ldy $9C
dey
sty $A5
sty $A6
L8775: ldy $A5
lda ($9E),y
sta $A4
ldx L00A2
beq L8794
ldx $A3
L8781: asl
dex
bne L8781
ldy $A6
iny
eor ($8D),y
sta ($8D),y
lda $A4
ldx L00A2
L8790: lsr
dex
bne L8790
L8794: ldy $A6
eor ($8D),y
sta ($8D),y
dec $A6
dec $A5
bpl L8775
dec $9D
beq L87B1
clc
lda $9C
adc $9E
sta $9E
ldy $A1
iny
jmp L8763
; ----------------------------------------------------------------------------
L87B1: ldx $FF
rts
in the end it should look like this:
http://de.youtube.com/watch?v=g8m4nBy7ayI
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
the berzerk logo of the start screen is ripped off and converted from atari bitmap format into c64 one...
now I am just need to get the bitmap into c64 to get familiar with that mode... ;)
|
| |
d0c
Registered: Apr 2006 Posts: 186 |
keep up the good work :) looking forward to a preview when its possible... |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
I have the logo on c64 screen plus rasters running... ;) so many years atari experience and so less on c64... should have touched the commie more often instead of vic-20... ;)
i always forget to setup the colour ram... ;)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
with the help of the guys at #c-64 I have the atari code running on the c64...
here is one of the first pics..
http://www.atariage.com/forums/index.php?showtopic=131873
it assembles fine and correct now for c64 so i can add and rewrite routines... next will be the atari2c64 bitmap screen calculations...
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
You're getting there :) |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
yup. but unfortunatly i have only time to work on the stuff at weekends... so next build will be somewhere on sundays. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
ok... something to think about it... does anybody have some ideas regarding remapping atari screen adresses to c64 one?
the issue is following... assume a linear screen ram... so actually the walls for the rooms are drawn in this way:
; ----------------------------------------------------------------------------
L9A59: lda $A3
sta $9C
L9A5D: clc
lda $9C
asl
bcs L9A6E
adc #$D0
sta $9E
lda #$10
adc #$00
jmp L9A77
; ----------------------------------------------------------------------------
L9A6E: clc
adc #$D0
sta $9E
lda #$10
adc #$01
L9A77: sta $9F
ldy #$00
clc
lda ($9E),y
adc $A0
sta $8B,y
iny
lda ($9E),y
adc #$00
sta $8B,y
ldy $A1
lda $A5
dey
ora ($8B),y
sta ($8B),y
dey
bmi L9AA6
beq L9AA0
lda $A4
L9A9B: sta ($8B),y
dey
bne L9A9B
L9AA0: lda $A6
ora ($8B),y
sta ($8B),y
L9AA6: lda $9C
clc
adc #$01
sta $9C
cmp L00A2
bcc L9A5D
beq L9A5D
rts
$10d0,$10d1 etc is the lookup table for the start adress of each scanline in the bitmap (screen, screen+40, screen+80, etc... in lo, hi format)
$a0 is the offset in that line, $a1 is the length of the wall, $a3 the y-position, $a5 the right side bitmap value and $a4 the middle of the bitmap and $a6 the left edge.
so...actually this is how I understand the stuff:
ABBBBBBBBC
ABBBBBBBBC
ABBBBBBBBC
...
or
C
C
C
C
C
so...what I want to do at a first step is not to rewrite the whole algorithm but maybe a clever "remap" routine... i would like to take the $8b,$8c pointer and try to calc the desired c64 screenpos?
the bad thing would be ok, it slows down the drawing but the good would be that I could take the original code without rewriting the draw routine for the static elements on screen.
any cleaver ideas?
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
change the bitmap line start addies into c64 ones, then:
; ----------------------------------------------------------------------------
L9A59: lda $A3
sta $9C
L9A5D: clc
lda $9C
asl
bcs L9A6E
adc #$D0
sta $9E
lda #$10
adc #$00
jmp L9A77
; ----------------------------------------------------------------------------
L9A6E: clc
adc #$D0
sta $9E
lda #$10
adc #$01
L9A77: sta $9F
ldy #$00
clc
ldx $a0 ;
lda ($9E),y
adc mul8lo,x ;
sta $8B,y
iny
lda ($9E),y
adc mul8hi,x ;
sta $8B,y
ldy $A1
lda mul8lo,y ;
clc ;
adc $8b ;
sta $8b ;
lda mul8hi,y ;
adc $8c ;
sta $8c ;
lda $A5
secmacro ;
dey
ora ($8B),y
sta ($8B),y
secmacro ;
dey
bmi L9AA6
beq L9AA0
lda $A4
L9A9B: sta ($8B),y
secmacro ;
dey
bne L9A9B
L9AA0: lda $A6
ora ($8B),y
sta ($8B),y
L9AA6: lda $9C
clc
adc #$01
sta $9C
cmp L00A2
bcc L9A5D
beq L9A5D
rts
secmacro lda $8b
sec
sbc #$08
sta $8b
bcs *+4
dec $8c
I have marked each line added by me with ";" there's only new lines added, no original lines changed. it generally does what you have asked for :) converting the bitmap addy straight would be more painful imho. instead I have changed the logics to move in c64 steps.
edit: oops, dey fucks up my new adressing scheme, well you can change it to X reg nicely and keep Y 0 :) |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Koesz Oswald,
at a first glance it looks good. let me fire up my dev kit and see what happens... ;)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Oswald... well.. at least it draws the first room... ;) but the horizontal lines are not put perfect on screen
http://www.atariage.com/forums/index.php?showtopic=131873&st=0&..
btw. can i send you the DASM file so you can play around?
if so...to which email adress?
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
here is the bug free version:
lL9A59: stx lllll+1
lda $A3
sta $9C
lL9A5D: clc
lda $9C
asl
bcs lL9A6E
adc #$D0
sta $9E
lda #$10
adc #$00
jmp lL9A77
; ----------------------------------------------------------------------------
lL9A6E: clc
adc #$D0
sta $9E
lda #$10
adc #$01
lL9A77: sta $9F
ldy #$00
clc
ldx $a0 ;
lda ($9E),y
adc mul8lo,x ;
sta $8B,y
iny
lda ($9E),y
adc mul8hi,x ;
sta $8B,y
ldx $A1
lda mul8lo,x ;
clc ;
adc $8b ;
sta $8b ;
lda mul8hi,x ;
adc $8c ;
sta $8c ;
lda $8b
sec
sbc #$08
sta $8b
bcs *+4
dec $8c
lda $A5
dex
ldy #0
ora ($8B),y
sta ($8B),y
lda $8b
sec
sbc #$08
sta $8b
bcs *+4
dec $8c
dex
bmi Ll9AA6
beq Ll9AA0
Ll9A9B: lda $A4
sta ($8B),y
lda $8b
sec
sbc #$08
sta $8b
bcs *+4
dec $8c
;
dex
bne Ll9A9B
Ll9AA0: lda $A6
ora ($8B),y
sta ($8B),y
Ll9AA6: lda $9C
clc
adc #$01
sta $9C
cmp L00A2
bcc llll
beq llll
lllll ldx #0
rts
llll jmp lL9A5D
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
what caused the bug? remember such forum code posts are "from the top of my head" stuff, not granted to work, but a guideline :) happy to see you got it right afterall.
edit: btw in the sprite routines you wont get away with such patches, imho they have to be optimized for speed, and the c64 bitmap format will be painful :) |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
the sprite routines will be replaced... ;) i am 100% sure that these one can be optimised little bit... ;) even when running in c64 bitmap mode:
;set robots on screen
;soft sprite handling
L8716: lda $183A ; 8716 AD 3A 18 .:.
beq L872A ; 8719 F0 0F ..
sta $8F ; 871B 85 8F ..
ldx #$01 ; 871D A2 01 ..
stx $86 ; 871F 86 86 ..
dex ; 8721 CA .
clc ; 8722 18 .
L8723: jsr L872F ; 8723 20 2F 87 /.
dec $8F ; 8726 C6 8F ..
bne L8723 ; 8728 D0 F9 ..
L872A: lda #$00 ; 872A A9 00 ..
sta $86 ; 872C 85 86 ..
rts ; 872E 60 `
; ----------------------------------------------------------------------------
L872F: lda $0F00,x ; 872F BD 00 0F ...
sta $9C ; 8732 85 9C ..
lda $0F01,x ; 8734 BD 01 0F ...
sta $9D ; 8737 85 9D ..
lda $0F02,x ; 8739 BD 02 0F ...
sta $9E ; 873C 85 9E ..
lda $0F03,x ; 873E BD 03 0F ...
sta $9F ; 8741 85 9F ..
lda $0F04,x ; 8743 BD 04 0F ...
sta $8B ; 8746 85 8B ..
lda $0F05,x ; 8748 BD 05 0F ...
sta $8C ; 874B 85 8C ..
lda $0F06,x ; 874D BD 06 0F ...
sta $A0 ; 8750 85 A0 ..
asl ; 8752 0A .
sta L00A2 ; 8753 85 A2 ..
txa ; 8755 8A .
clc ; 8756 18 .
adc #$07 ; 8757 69 07 i.
sta $FF ; 8759 85 FF ..
lda #$09 ; 875B A9 09 ..
sbc L00A2 ; 875D E5 A2 ..
sta $A3 ; 875F 85 A3 ..
ldy #$00 ; 8761 A0 00 ..
L8763: lda ($8B),y ; 8763 B1 8B ..
sta $8D ; 8765 85 8D ..
iny ; 8767 C8 .
lda ($8B),y ; 8768 B1 8B ..
sta $8E ; 876A 85 8E ..
sty $A1 ; 876C 84 A1 ..
ldy $9C ; 876E A4 9C ..
dey ; 8770 88 .
sty $A5 ; 8771 84 A5 ..
sty $A6 ; 8773 84 A6 ..
L8775: ldy $A5 ; 8775 A4 A5 ..
lda ($9E),y ; 8777 B1 9E ..
sta $A4 ; 8779 85 A4 ..
ldx L00A2 ; 877B A6 A2 ..
beq L8794 ; 877D F0 15 ..
ldx $A3 ; 877F A6 A3 ..
L8781: asl ; 8781 0A .
dex ; 8782 CA .
bne L8781 ; 8783 D0 FC ..
ldy $A6 ; 8785 A4 A6 ..
iny ; 8787 C8 .
eor ($8D),y ; 8788 51 8D Q.
sta ($8D),y ; 878A 91 8D ..
lda $A4 ; 878C A5 A4 ..
ldx L00A2 ; 878E A6 A2 ..
L8790: lsr ; 8790 4A J
dex ; 8791 CA .
bne L8790 ; 8792 D0 FC ..
L8794: ldy $A6 ; 8794 A4 A6 ..
eor ($8D),y ; 8796 51 8D Q.
sta ($8D),y ; 8798 91 8D ..
dec $A6 ; 879A C6 A6 ..
dec $A5 ; 879C C6 A5 ..
bpl L8775 ; 879E 10 D5 ..
dec $9D ; 87A0 C6 9D ..
beq L87B1 ; 87A2 F0 0D ..
clc ; 87A4 18 .
lda $9C ; 87A5 A5 9C ..
adc $9E ; 87A7 65 9E e.
sta $9E ; 87A9 85 9E ..
ldy $A1 ; 87AB A4 A1 ..
iny ; 87AD C8 .
jmp L8763 ; 87AE 4C 63 87 Lc.
; ----------------------------------------------------------------------------
L87B1: ldx $FF ; 87B1 A6 FF ..
rts ; 87B3 60 `
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Quote: what caused the bug? remember such forum code posts are "from the top of my head" stuff, not granted to work, but a guideline :) happy to see you got it right afterall.
edit: btw in the sprite routines you wont get away with such patches, imho they have to be optimized for speed, and the c64 bitmap format will be painful :)
loading the byte to put on screen was put before the sec-macro so it trashed the accu therefor put garbage on screen.
the x-register needs to be rescued and as you have already written... y-register must stay #0 and we need to use the x-reg for counting instead.
so nothing major issues... ;)
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
well... the sprite routine seems a little bit more tricky. the screen calculations are done somewhere else and i need to find the table setting for the sprites before I change the code...
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Woo definitely getting there. :)
I'd be tempted to find out where the monster/player/bullet positions are stored and using them directly for hardware sprites with a multiplexor.
The tricky thing with that is the pixel accurate collision detection. On a real C64 it's not a big problem (the collision registers can be read during the multiplexor) but some emulators have distinct problems with accurate collision registers. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
you want to spread your 48 sprite multiplexor... ;)
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
I'd go for soft sprites. |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
Quote: I'd go for soft sprites.
yup. me, too.
as the engine is build around that... |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: you want to spread your 48 sprite multiplexor... ;)
I am not that much of a whore. ;)
|
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Any progress on this or is it at an impasse? You guys haven't posted in a while so I thought that I would ask... |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
I was bussy with personal & business stuff so I have not touched Berzerk for a while. But I have some days off so I will progress soon... ;)
|
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
I understand... I am just excited that Berzerk for C64 will finally come to fruition... I might even make a bootleg cart version when the code is finished, if its 16k or less in size when compiled, so that it fits on a standard cart rom(s) without complicated bank switching... If not a disk version will still be much appreciated by all I am sure... |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
at the moment I am thinking about how to handle the softsprites in a good way...
but it is not so complicated...
ABC
XYZ
so... actually I might come away with reorganising the sprite data to a c64 way so not vertical slices but in c64 bitmap mode way.
unfortunatly the code in Berzerk is bad written so it does not use preshifted data which I could reorganise. So I am trying to get to know where the x,y positions of the robots are stored so I can write my own soft sprite routine instead of patching the existing one...
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
allright...small progress in code analysis.
0870,0880 are pointers to sprite adresses. they point to
07a0,07a1 ff. which hold in lo,hi,lo,hi the start adress in video ram of each robot... so when starting the game you find exact 11*2 adresses in the array which point into the video ram. and there are 11 robots at the beginning.
$9991 is the "random routine" while $1804 holds the random number. maybe I will hunt now the $1804 and see where it is used to store the positions at the beginning of each room.
|
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
$83e0 ff. sets the random positions for each robot
$04-$8c xp position)
ok...got more and more regarding the robots... $850,$860 are holding xpos, ypos in pixel positions. so we will never see more than 16 robots on screen.
so further I found the init of the first robot on the main screen. so actuall this helps to determinate the other variables.
ldx #$00 ; 9F57 A2 00 ..
;sprite shape #
;$0c = standing robot
;$0d = walking robot left
;$0e = walking robot right
;$0f = walking robot top
;$10 = walking robot down
lda #$0C ; 9F59 A9 0C ..
sta $0810,x ; 9F5B 9D 10 08 ...
;move direction
;0 = standing
;1 = move right
;2 = move left
;3 = move up
;4 = move down
lda #$00 ; 9F5E A9 00 ..
sta $0820,x ; 9F60 9D 20 08 . .
sta $0830,x ; 9F63 9D 30 08 .0.
sta $0840,x ; 9F66 9D 40 08 .@.
lda #$01 ; 9F69 A9 01 ..
sta $0800,x ; 9F6B 9D 00 08 ...
sta $08F0,x ; 9F6E 9D F0 08 ...
sta $08E0,x ; 9F71 9D E0 08 ...
lda #$80 ; 9F74 A9 80 ..
sta $08B0,x ; 9F76 9D B0 08 ...
lda #$01 ;first robot on main screen ; 9F79 A9 01 ..
sta $C1 ; 9F7B 85 C1 ..
lda #$2A ;$6a ; 9F7D A9 6A .j
sta $0860,x ; 9F7F 9D 60 08 .`.
lda #$89 ; 9F82 A9 89 ..
sta $0850,x ; 9F84 9D 50 08 .P.
jsr L8349 ; 9F87 20 49 83 I.
jsr L87B4 ; 9F8A 20 B4 87 ..
lda #$04 ; 9F8D A9 04 ..
sta $CE ; 9F8F 85 CE ..
jsr L85CC ; 9F91 20 CC 85 ..
jsr L8902 ; 9F94 20 02 89 ..
rts ; 9F97 60 `
some more miracles solved:
robot_shape_id equ $0810
robots_xpostab equ $0850
robots_ypostab equ $0860
|
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Has this died? Any progress... I am looking forward to a working C64 version... |
| |
d0c
Registered: Apr 2006 Posts: 186 |
Quote: Has this died? Any progress... I am looking forward to a working C64 version...
how is it going with berzerk? any playable demo? |
| |
Heaven Account closed
Registered: Jul 2008 Posts: 102 |
@ all
no, it has not died. But real life caught me and I am returning to it this christmas... :)
|
| |
d0c
Registered: Apr 2006 Posts: 186 |
good news :) |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
I can appreciate that... Thanks for your efforts and let us know how its going when you get a chance... Happy Holidays!!! |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Quote: @ all
no, it has not died. But real life caught me and I am returning to it this christmas... :)
Any status on this? I am hoping like heck this doesn't die... I would be so awesome to have an accurate port of this game...
|
| |
d0c
Registered: Apr 2006 Posts: 186 |
i am waiting for some updates to this very interesting project also :) |
| |
uneksija
Registered: Jan 2002 Posts: 45 |
I had never heard of this game before reading this thread. I tried the arcade version of the game on M.A.M.E. Quite fun and atmospheric for such a simple game, at least for the short while I played it. The speech sounds especially are really amazing! And have even been sampled by Aphex Twin etc., so I've heard some of that speech-stuff before. Good luck with the C64-version! |
| |
d0c
Registered: Apr 2006 Posts: 186 |
i guess this project is dead now? |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Dead, like a can of Spam.
It is the curse of Berzerk where the programmer is chased by robots. I was able to escape it by releasing the source.
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
you can find heaven on atariage.com at the 8 bit forums to ask. |
| |
chancer
Registered: Apr 2003 Posts: 347 |
reminds me of another game I used to play years ago, that was probably inspired by it
"the hall of things" c64 version exists , but I used to play it on the speccy. Also reminds me a bit of smash tv, and that had loads of onscreen enemies if I recall
|
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
OK here it is... I will offer a $100 USD bounty to anyone who can deliver a complete D64 conversion of the Atari 5200 version like Heaven (unless he wants to resume with the new incentive, I'll give him the first option.) was doing. An extra $50 is offered for anyone who would spruce it up with a retro \ modern version and a trainer. That is a menu option to play the original atari 5200 conversion version and another option for a more modernized version with spruced up graphics showing off the 64's capabilities while adhering to the gameplay aspect of the original game. The trainer should allow you to change tthe number of lives, turn auto-fire on off, change run speed, and turn on invincibility. The D64 should be posted here and will need to be play tested on all levels (so a trainer\level skipper may help to) to ensure bug free operation before the bounty is awarded. I will pay it via paypal, or another method if necessary. This offer expires June 30, 2009 if no one claims the bounty by then. If multiple versions are produced by different people to top rated version will recieve the bounty. Good Luck. I hope that somebody collects this. A good demo coder could probably create this in a month... |
| |
1BM
Registered: Nov 2002 Posts: 48 |
testing all levels, 64000 that is. |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Any takers thus far? |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Just a reminder the bounty is soon to expire for this (June 30,2009)... Hope that someone claims it... |
| |
d0c
Registered: Apr 2006 Posts: 186 |
it looks like no one is interested sadly... |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: it looks like no one is interested sadly...
I will code something over the weekend and release the source as per usual. I'm a bit busy but should be able to knock something out that will be Berzerk-like. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
So far:
Found the samples from the MAME version, I'll be buggered if I'm going to write a LPC decoder for the 6502. :)
Verified I can multiplex while playing those samples at either 8Khz or 4Khz using an NMI.
Tested a routine to draw various maze rooms with at least one exit able to be reached from the previous exit door.
Drawn some of the sprites by copying them from screen shots of the arcade version.
Game play next... |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
OK Dokey, it is time for dinner now so nothing more to be done this evening, but here it is so far:
http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.prg
Some tweaks are needed on the game play. But not bad for a few hours work. :)
|
| |
iAN CooG
Registered: May 2002 Posts: 3193 |
Quote: OK Dokey, it is time for dinner now so nothing more to be done this evening, but here it is so far:
http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.prg
Some tweaks are needed on the game play. But not bad for a few hours work. :)
thumbs up =) |
| |
Jazzcat
Registered: Feb 2002 Posts: 1044 |
Awesome!!!
Nice work
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
yeah, looks nice :) no idea wtf those samples are trying to say though =D |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
I've uploaded a slightly tweaked version with a bit of level progression and to fix the collision where you could shoot your feet if you shot downwards and chased the bullet. ;) The download is from the same link above.
OK, definitely time to get back to proper work now. :)
Yes the samples are a bit scratchy, LPC compression combined with 4 bit samples at 4Khz don't dound so good. |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
not so clear samples were also a nuisance of enhanced atari 2600 version. evil otto could be a little faster. awesome conversion though \o/ |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
Highly playable! Really good ! |
| |
Steppe
Registered: Jan 2002 Posts: |
Wow, nice! Is it a bug or a feature that the robots you ought to shoot disappear at random? Sometimes I'm having a hard time even finding one left to shoot before the cowards disappear into nothingness. ;-) |
| |
plagueis Account closed
Registered: Dec 2007 Posts: 48 |
@Martin: Really great job!!! The look, sound, and gameplay of this port really made me feel like I was playing one of the original Berzerk games, or even the 1979 Stern version!
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Wow, nice! Is it a bug or a feature that the robots you ought to shoot disappear at random? Sometimes I'm having a hard time even finding one left to shoot before the cowards disappear into nothingness. ;-)
I'm happy it's been received so well given it's only a quick attempt. :)
The samples will be improved in the next version to use 6Khz instead of 4Khz. This doesn't leave a lot of memory free for flashy title screens but they are a lot clearer at 6Khz. And well the arcade version didn't have flashy graphics either. ;)
The robots will also try to avoid walls a bit better than they currently do. It is a fine line between the quite stupid robots in the arcade and making them seem too intelligent. |
| |
FATFrost Account closed
Registered: Sep 2003 Posts: 211 |
Great work Martin! Those enemies seem really sneaky! i can't wait for the final version! |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
New version up: http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.prg
The title screen will show V0.2 in the bottom left to show you have downloaded the new version.
The robots are less stupid.
The game starts off easy and gets harder according to the score. Every thousand points there is a new robot type up to the light blue robots.
The speech quality has been improved.
The missing chars for the room display have been fixed.
Bonus for killing all the robots in a room.
|
| |
Endurion
Registered: Mar 2007 Posts: 73 |
Very nice. The missing robot bit seems to happen, when two bots walk onto the same spot. You seem to use XOR for them. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
No XOR on C64 sprites. ;) When two robots collide they are meant to explode. |
| |
Endurion
Registered: Mar 2007 Posts: 73 |
Hmm, I could swear i had invisible shots hitting mere, so I thought the bots would occupy the same spot. |
| |
Scout
Registered: Dec 2002 Posts: 1570 |
Being very skeptic on seeing a C64 port of this game, I must give a thumb up.
Nice work! |
| |
plagueis Account closed
Registered: Dec 2007 Posts: 48 |
I just played the latest version on my NTSC c64 and it works great. I was especially impressed with the sound, but the gameplay is really fast paced, which is great. I've played pretty much all the ports -- including the Vectrex version, and this is one of the best ones outside of the arcade original! In my opinion it blows away the old Atari 5200 version.
*edit* I definitely had some invisible shots hitting me as well, or perhaps an invisible robot. I'll do more play testing and see if I can replicate the event in a reliable manner. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Wow, it works on NTSC? Cool, I didn't test on that at all! Thank you for the testing!
A new version has been uploaded to the same place. V0.3 has changes to the collision detection code. Please let me know if the invisible bullet problem has been fixed for you. It should be, I've played several levels and not seen it happen now. |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
close to perfection now even if less challenging than arcade. in what format do you store fx? if you don't have memory for sampled zzaps and explosions, maybe i would give a helping hand with sid sounds resembling the original ones :) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
plays quite well now, congrats! |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: close to perfection now even if less challenging than arcade. in what format do you store fx? if you don't have memory for sampled zzaps and explosions, maybe i would give a helping hand with sid sounds resembling the original ones :)
The non-sampled effects, player shoot, robot shoot, extra life and robot death are all edited in SEUCK because I have the source for a sound engine that plays that file format. I use two channels triggered together for the robot shoot and death. I'll be releasing te source on codebase pretty soon now since this release is almost ready.
It is a little easier than the arcade partly due to the larger screen area. It is also because the robots have been told not to fire until a short while after the player spawns. This is to give the player some time to react to where the robots are, rather than the arcade version that just zaps the player without warning. ;)
Wait until you reach 15,000 points with the light blue robots though. ;) |
| |
d0c
Registered: Apr 2006 Posts: 186 |
great work martin piper, could you put in a highscore saver??
now a loading screen of the arcade art and a remix of the samples with a great tune to go with it would rock! |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Maybe :) It depends if I have enough space to resurrect the IRQ loader. :) |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
A hi-score saver would be nice I agree |
| |
T.M.R Account closed
Registered: Dec 2001 Posts: 749 |
If y'want it, the Berzerk logo i drawed previously is here as a Koala bitmap:
http://cosine.org.uk/temp/berzerk_logo.prg |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
V0.4 is now a D64 with a hi-score saver. The 1541 disk routine is quite a lot of newish code so it'll need testing for a while.
The title screen also looks much better now. Thank you Zeldin. :)
The link:
http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.d64
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: If y'want it, the Berzerk logo i drawed previously is here as a Koala bitmap:
http://cosine.org.uk/temp/berzerk_logo.prg
Sorry, Zeldin beat you to it. :)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
You'll need to turn on VICE "true drive" if you want hi-score saving to work. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
mmmmh... now a custom charset (possibly more close to how the arcade looks) would fit really well (somehow stuff using the rom font always looks a bit cheap =P) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
I'm rubbish at drawing, especially charsets. ;) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
is there none in the original arcade rom that could be ripped? |
| |
bugjam
Registered: Apr 2003 Posts: 2589 |
I fully agree on the charset.
Tested it briefly, and have to say: cool stuff! Never knew the original, as I always owned a C64 only! ;)
For the logos: both are great, and I would like to suggest that you try to use T.M.R´s as well, maybe in the highscore table? Definitely deserves a proper release I think! |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
does someone have a link to the arcade romset by any chance? |
| |
d0c
Registered: Apr 2006 Posts: 186 |
you can grab the romset for mame here....
http://romhustler.net/rom/mame/430/berzerk-set-1
http://romhustler.net/rom/mame/431/berzerk-set-2 |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
The charset is in rom 5c-5 but it is nine pixels high. :) Not a surprise considering how the arcade's hardware works.
|
| |
Marauder/GSS Account closed
Registered: Jul 2006 Posts: 224 |
absolutly great stuff Martin! remembers me playing it on stern/atari 2600 back in the days :) great port! thumbs up!
now only a cover of Buckner & Garcia's "Goin' Berzerk" is missing as title tune, hehe (c;
keep on, can't wait for the final release! :) Berzerk rocks! |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Glad you like it Marauder. I was a bit hesitant making a true conversion to begin with because I wasn't sure how people would accept the simplistic graphics. But of course game play and nostalgia win in the end. ;)
I was playing the preview a bit last night and a thought came into my head that the scoring mechanism might possibly be better with something like a "shot bonus", I'll explain. At the moment each robot is 50 points. However lets say I shoot one robot and then without missing with my next show I kill another I could get a bonus of 10 points, so the second robot is 60 points. If I then kill a third robot without missing a shot I would get 70 points. Maybe the shot bonus can be capped at 100 points meaning that I have not missed a robot kill for 11 robots.
Do you all think that kind of score bonus would add something to the game? If yes I can add it.
|
| |
Marauder/GSS Account closed
Registered: Jul 2006 Posts: 224 |
sure I like it! well, better simplistic grafix and a nice gameplay then having stunning grafix and a bad game like it's often these days. I prefer the first one... nostalgia rulez!
The score-idea isn't bad, why not give it a try... and after finishing a level, the screen should move like the original (just watch the stern on youtube or so), hehe and a highscore table with 10 entries would be nice... :)
did you read that about Berzerk - arcade-history? guess so...
anway, your conversion definitly rocks! |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Quote: V0.4 is now a D64 with a hi-score saver. The 1541 disk routine is quite a lot of newish code so it'll need testing for a while.
The title screen also looks much better now. Thank you Zeldin. :)
The link:
http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.d64
May I be so bold as to suggest using tried and tested drive code?
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
what magervalp said :) i also strongly recommend aiming for a onefiled release, unless you want to see some halfassed "cracked" version =P |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: May I be so bold as to suggest using tried and tested drive code?
I looked at it but I want to be able to have sprites, NMI samples and raster effects active while loading and that code breaks with any of those three active. ;)
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
i have ripped the charset and shrunk it to fit into 8 pixel height.... god its butt ugly (but imho fits the feeling of the whole thing quite well....) http://hitmen.c02.at/temp/berzerk.chr
its still in its original order, what order would you prefer? i'll fix some more pixels then too, and try to align it better.... is it a problem that it now uses all 8 pixels in height? (will look shitty if you print text in consecutive lines, else it wont matter much)
edit: apropos, did you rip the other gfx from the roms too or did you draw them with screenshots as reference? i could rip them aswell if not (maybe improves the anim of the humanoid? =P) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Oooh cheers!
When I get home I'll post up the charset with the char ordering I'm using at the moment. Plus the sprites. I copied the sprites from the Mame version pixel by pixel so the humanoid sprite running animation is fixed now. :)
|
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Quote: I looked at it but I want to be able to have sprites, NMI samples and raster effects active while loading and that code breaks with any of those three active. ;)
Ah, sprites and raster effects work fine (wouldn't be much of an IRQ loader otherwise :), but NMI while loading requires a different protocol. Fortunately ULoad handles that as well, just not the released version - PM me and I'll make a snapshot for you.
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
V0.5 is uploaded now, same link as before.
Just some graphics tweaks for the humanoid and minor bug fixes. |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
V0.4 is still mentionned ;-) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Just downloaded it from there, it says 0.5 ;) Try clearing your cache. |
| |
d0c
Registered: Apr 2006 Posts: 186 |
i think the start screen would be looking better if the hiscore was above the logo.... arcade games usually had the hiscore at top.... |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
I've never played Berzerk before - it's highly addictive. I don't know if this is close to the arcade or not, but nevertheless, it's a great game Martin. VERY good work lad. Keep it up! :) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
updated anim looks much better \o/
JA: you should try the arcade if you can :) (this c64 version is probably the best port in existance now =P) |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
Quote: updated anim looks much better \o/
JA: you should try the arcade if you can :) (this c64 version is probably the best port in existance now =P)
:D:D:D imho it beats even the stern's original as it's far more passable even though less berzerk in nature ;) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Quote:even though less berzerk in nature ;)
you know the story about it supposedly beeing the only video game that killed people in real life? =D |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
Quote: Quote:even though less berzerk in nature ;)
you know the story about it supposedly beeing the only video game that killed people in real life? =D
yeah i know. but i guess not the only one - don't let chinese play any mmorpg, eh, eh ;) |
| |
Marauder/GSS Account closed
Registered: Jul 2006 Posts: 224 |
Martin, while playing v0.5 it seems I've found a bug in the hit-detection of a robots shot.
There's a position where the player won't die, just have a look at the screenshots (yes, it's also called...hehe)
anyway, really can't wait to play/see the final version with musix, a nice loading screen etc. It's definitly the best port imho.
btw, the logo is great Zeldin (and also T.M.R)!
keep it up! your berzerk rulez! :) |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
Quote: Martin, while playing v0.5 it seems I've found a bug in the hit-detection of a robots shot.
There's a position where the player won't die, just have a look at the screenshots (yes, it's also called...hehe)
anyway, really can't wait to play/see the final version with musix, a nice loading screen etc. It's definitly the best port imho.
btw, the logo is great Zeldin (and also T.M.R)!
keep it up! your berzerk rulez! :)
it's supposed to be like that! :D original arcade behaves in the same way :D |
| |
Marauder/GSS Account closed
Registered: Jul 2006 Posts: 224 |
really? didn't know that... hehe :P |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Wow, great comments. :) Thank you. :)
It's called the "bullet-proof bowtie" isn't it? I had to keep that in there for nostalgia.
The weekend is fast approaching so plenty of tweaks to get added to the game yet. :) |
| |
LOGAN Account closed
Registered: Aug 2003 Posts: 71 |
Cool thing but whats the purpose of the 'fastloder'?
BTW if I were you I would try to make an 100% authentic port and then a 'redux' deluxe version with all your own adaption/improvements, like the scoring etc. Maybe that one could have improved graphics as well :D |
| |
enthusi
Registered: May 2004 Posts: 677 |
Martin: do you need a tapeloader? :) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
INTRUDER ALERT ! INTRUDER ALERT! GET THE HUMANOID ! |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
Great work indeed.
my 2 cents: it would help playability if pressing the fire button wont stop the movement of the protagonist. (ie. check dir bits and fire bits seperately) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
that would change gameplay though (not necessarily making it easier either) |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
may be a matter of taste, but most shooters dont stop movement when you press fire button, so I assumed most ppl are used to that. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
the point is that you can hold fire and then move the joystick rapidly in all directions to shoot without moving .... which is very much needed in this game when it gets harder :) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Cool thing but whats the purpose of the 'fastloder'?
BTW if I were you I would try to make an 100% authentic port and then a 'redux' deluxe version with all your own adaption/improvements, like the scoring etc. Maybe that one could have improved graphics as well :D
At the moment the loader is there just to make it easier to save hi-score data without having to bank in the kernal. You're right, I will keep this version as close as possible to the arcade and other versions. Only later on in the delux version will the loader be used for background streaming in more data, like better graphics, samples and music.
enthusi> I have a tape loader, thank you for anyway. :)
Oswald> The player pausing while shooting is part of the game play of the arcade version, I could remove it but then it wouldn't be authentic. :) The idea being that while you're shooting you are a bit vulnerable, or you can spin around on the spot and shoot which is important in later levels (like Groepaz says).
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
V0.6 is up: http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.d64
The robots are less suicidal.
New charset, thanks Groepaz.
There was about 7K of memory saved so more speech and music was added. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: V0.6 is up: http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.d64
The robots are less suicidal.
New charset, thanks Groepaz.
There was about 7K of memory saved so more speech and music was added.
Super nice! Nothing less expected otoh. One little quirk (never played the original so I dunno if it's correct or not!), when you die you always start from the left, even if you entered the room from another direction. Is this correct behaviour? |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
looks really great now \o/
edit: may i request classic attract mode including "money in pocket!" sample? <3 |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: looks really great now \o/
edit: may i request classic attract mode including "money in pocket!" sample? <3
It says "Coins detected in pocket" each time the title screen is displayed. OK It sounds more like "cunz dedecked im docket" but I blame the 4 bit samples. ;)
Although I want to add a bit of special sauce to the attact mode :)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Super nice! Nothing less expected otoh. One little quirk (never played the original so I dunno if it's correct or not!), when you die you always start from the left, even if you entered the room from another direction. Is this correct behaviour?
Yes, checked this with the arcade. It is a bit weird by hey ho, ours is not to reason why and all that. ;)
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
oh its really that sample.... seems like i remember it differently =) |
| |
WVL
Registered: Mar 2002 Posts: 902 |
So... did trip6 send over those $100 yet? ;) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
apropos, someone noticed me: in the original there are never areas on the map that are completely closed/unreachable. sounds worth improving the map generator like that :) |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
Did someone played it on a real 64??? Look at the drive's Red Led during play ! |
| |
iAN CooG
Registered: May 2002 Posts: 3193 |
Quote: Did someone played it on a real 64??? Look at the drive's Red Led during play !
Vice emulates the led dimming aswell. |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
Not as impressive as on th real thing I'm sure ;-) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
impressive.... puh. isnt it the first thing anyone does when trying to do drive code? =P |
| |
iAN CooG
Registered: May 2002 Posts: 3193 |
Quote: Not as impressive as on th real thing I'm sure ;-)
I remember it on diskdemon, and the wow factor was really high when I saw it the 1st time 20 years ago, but it's nothing new to me anymore =) |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
Reminds me of the Cylons in Galactica (The old serie) and it adds to the feeling of this game! As of coding, sys64738 was my only atemps back in the 80s and today too! |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Did someone played it on a real 64??? Look at the drive's Red Led during play !
I've just had an idea regarding that. Thank you. :) (I'm not saying what yet...)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: So... did trip6 send over those $100 yet? ;)
trip6 "This offer expires June 30, 2009 if no one claims the bounty by then. If multiple versions are produced by different people to top rated version will recieve the bounty."
The deadline hasn't expired yet and there might someone else who produces another version. ;)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: apropos, someone noticed me: in the original there are never areas on the map that are completely closed/unreachable. sounds worth improving the map generator like that :)
Yeah, it is on my todo list. |
| |
Richard
Registered: Dec 2001 Posts: |
Quote: Martin: do you need a tapeloader? :)
Just saw your latest update of the game Martin (As I was not online yesterday). Progress is very good. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
V0.8 Same place as before
No more haxxor bots, they cannot walk out of the room. ;)
Better high score table.
The 1541 drive light is a robot danger indicator.
|
| |
Deev
Registered: Feb 2002 Posts: 206 |
Nice work. I'd not played the arcade version before, but tried it in Mame and so can now appreciate what a good conversion this is. |
| |
LOGAN Account closed
Registered: Aug 2003 Posts: 71 |
nice progress. Can you please look at the decruncher by setting colors to black or something so the decrunch would not dump the whole screen to display random letters and symbols? (Would improve the presentation a bit) |
| |
Richard
Registered: Dec 2001 Posts: |
I saw a youtube video of the original arcade version of the game and Atari version.
http://www.youtube.com/watch?v=gb4gWvqbsYA&feature=PlayList&p=0..
There are parts where the robots move diagonally, but in the C64 version they don't seem to do that. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
mmmh, one thing i am missing - instead of the "loading berzerk" there should be a nice loading screen! :)
so, i spent some time searching for such pictures from other versions that could be converted, but couldnt find one... does anyone have an idea if that exists?
other than that, i am playing around with converting the atari box art, looks semi-doable, not the best material for conversion.... =P we'll see :)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: I saw a youtube video of the original arcade version of the game and Atari version.
http://www.youtube.com/watch?v=gb4gWvqbsYA&feature=PlayList&p=0..
There are parts where the robots move diagonally, but in the C64 version they don't seem to do that.
Oh my gosh, how come this has not been spotted before now?! :)
This is definitely going to have to be fixed.
*Puts on thinking hat*
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: mmmh, one thing i am missing - instead of the "loading berzerk" there should be a nice loading screen! :)
so, i spent some time searching for such pictures from other versions that could be converted, but couldnt find one... does anyone have an idea if that exists?
other than that, i am playing around with converting the atari box art, looks semi-doable, not the best material for conversion.... =P we'll see :)
You're right there should be a loading screen. :)
But there is zero space left in the main prg for 8K of graphics data, even compressed, so it won't be a single file anymore. :( I have about 2K of unallocated memory after the samples and before the music and maybe another 2K if I strip out unused chars.
But hey, it's a loading screen so it should be displayed while loaidng, right? ;)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: nice progress. Can you please look at the decruncher by setting colors to black or something so the decrunch would not dump the whole screen to display random letters and symbols? (Would improve the presentation a bit)
V0.9 removes the flashing border, it was only in there for debugging anyway. :)
Richard, this also adds diagonal robot movement. Or rather, I removed the code that stopped their diagonal movement. :)
http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.d64
|
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
Cabinet side art and bezel:
http://www.localarcade.com/arcade_art/details.php?image_id=544
http://www.ggdb.com/Picture.aspx?c=Coin-Op&s=Arcade&vid=309&p=7..
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Blue, red and background black only! Wow, no colour clashing problems for bitmap mode. ;)
|
| |
Richard
Registered: Dec 2001 Posts: |
Thanks, Much better! :) Very good stuff.
I'm glad the visible screen mess (during decrunch) has also gone.
What you could do (if the game was to be one file) is to link the loading picture to the game (before decrunching the game of course) as a single file, using a transfer routine :) This is something that I did for the disk versions of some games.
Seeing that your main game file is 124 blocks. That could easily be picture linked :) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
I thought about picture linking it with the main prg but then it would just be a screen displayed once after the load and before the long decompress. Which would be just another button press before getting to the game and then I thought "oh bother". :) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
nice, diagonal moving robots finally make it as hard as it should be =) |
| |
LOGAN Account closed
Registered: Aug 2003 Posts: 71 |
Quote: Blue, red and background black only! Wow, no colour clashing problems for bitmap mode. ;)
Well unless you do the graphic in hires mode, then I dunno if a color would be restricted to one char tile.
Do I see correct that in the original arcade the evil smiley is indeed... yellow?
|
| |
d0c
Registered: Apr 2006 Posts: 186 |
if any loading screen we should have this cool one...
the whola picture...
http://hg101.classicgaming.gamespy.com/berzerkfrenzy/berzerk520..
cut to fit c64...
http://www.atariprotos.com/8bit/Berzerk.jpg
:)
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
yeah thats the one i am playing with, not quite satisfied with the result though :) |
| |
LOGAN Account closed
Registered: Aug 2003 Posts: 71 |
not 320x200 anymore!? |
| |
d0c
Registered: Apr 2006 Posts: 186 |
another cool loading screen could be from this one...
atari box cover
http://www.vgmuseum.com/scans/scans2/berzerk.jpg
high resolution...
http://spyhunter007.com/Images/berzerk_art.jpg
:) |
| |
Zeldin
Registered: Apr 2002 Posts: 33 |
I'm also working on a title/loading screen a.t.m.... |
| |
Richard
Registered: Dec 2001 Posts: |
That'd be cool Zeldin. Hope Martin will import the picture into the loader :) |
| |
Zeldin
Registered: Apr 2002 Posts: 33 |
I'm already pixeling. 80% finished... |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Gosh, while I've been asleep you've been busy! :) Zeldin has just sent an excellent loading screen. Time to squeeze it all together. :) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Release candidate 1!
http://www.replicanet.com/CustomerPrivateArea/BerzerkRedux.d64
"Loading" screen - Picture linked.
Attract mode updated.
|
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
great. i have mixed feelings about title tune though ;) should be more cybernetic :D |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
This music editor was used so anyone who sends me improved music using that editor can get the credit. ;)
http://codebase64.org/doku.php?id=base:element_114_music_editor
For Berzerk the "game" file can just be loaded and run without needing to go through the disk boot loader etc...
|
| |
bugjam
Registered: Apr 2003 Posts: 2589 |
Great! And I do like the music, kinda driving and exciting, fitting the game well IMO. Still hoping that TMR´s logo will be used somewhere as well. Suggestion for an alternative version: how about fixing the quirks like starting always from the left (instead of where you walked in) after dying, and include also that idea with the bonus points for consecutive robot killings without missing inbetween (in fact, I really like that idea!); and maybe remove the "bulletproof bowtie" - so you would have a version as close to the arcade as possible, and one with some enhancements? That could also include overlay sprites, animated multicolour background, multispeed ingame music and... ooops, getting a bit carried away here I think! ;-) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
personally i could live without all the enhancements.... but the map generator bug is somewhat annoying (makes "perfect" runs impossible, which sucks). |
| |
d0c
Registered: Apr 2006 Posts: 186 |
i have been playing berzerk a bit now and i must agree with Groepaz, the map generator bug must be fixed. another thing maybe spacebar as pause button?... can come in handy when you must have a piss break hehe... |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
Agree with you guys for the maze bug. It's frustrating to see a robot surrounded by walls (can't get bonus when this happens!) |
| |
NoRi
Registered: Oct 2004 Posts: 24 |
Really nice and addictive. Congrats. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Agree with you guys for the maze bug. It's frustrating to see a robot surrounded by walls (can't get bonus when this happens!)
OK I'll fix it.
The maze will still have blocked off areas because I like the little side rooms it can generate. But I'll make it so that the robots are only placed where the player can walk. :)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
V1.1 Only places robots where the player can walk, no more inaccessible rooms with robots hiding in them. |
| |
enthusi
Registered: May 2004 Posts: 677 |
Wicked and nice mood!
Well done, to me it has all the design it needs visually. |
| |
grennouille
Registered: Jul 2008 Posts: 222 |
Thanks alot Martin!
BTW the music is good like that! Rock and stressing music fits with this game.
What else are you planning to do before the final release? Seems already perfect to me! |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Thanks alot Martin!
BTW the music is good like that! Rock and stressing music fits with this game.
What else are you planning to do before the final release? Seems already perfect to me!
The music was originally composed by Alan (back in 1992) for a top down scrolling city type of game (a lot like Citadel Citadel +9DH ) we were working on, the working title was actually "Citadel II" *ahem*. So the music was composed to fit with the rushing around corridors with robots chasing you, so I thought it would fit this game too. :)
If there are nasty bug reports then I'll fix those, otherwise this version is very nearly "the one". Then I'll release the source on codebase. |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Very nice Martin... Thanks for your work... So far no other versions have been submitted. I believe I have your e-mail address from our previous conversation. If (more like when)you win the bounty for the original conversion, should I paypal the amount to that e-mail address or would you like payment mailed to you? Do you plan to work on an enhanced version to release beyond the deadline with trainers and advanced re-worked graphics to collect any of the additional bounties? If I recall you are in the UK, correct? I will play test this on a real C64 tomorrow evening, I encourage others here to do the same on a real C64. Once verified... I will pay the bounty as promised. We must then talk about a limited catridge run of the original version once you judge that it is 100% complete and ready for primetime or maybe a psychotronic release. We'll have to figure out if we'll need any licensing (I'll make some inquiries), which I'll finance if necessary to get this out there for the community. Thanks again, Great work and I look forward to play testing tomorrow.
Kevin
(Trip6) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
I'm glad you like it. To help the community I'd actually prefer if the bounty were donated to help with the running costs of this site through this link: http://noname.c64.org/csdb/donate.php
I'll PM you my email address through the Lemon forums so we can talk about the other things. :)
|
| |
WVL
Registered: Mar 2002 Posts: 902 |
Quote: I'm glad you like it. To help the community I'd actually prefer if the bounty were donated to help with the running costs of this site through this link: http://noname.c64.org/csdb/donate.php
I'll PM you my email address through the Lemon forums so we can talk about the other things. :)
Martin Piper, new hero of CSDb :D
_/-\o_ _o/-\_ |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Whatever your wishes are I will honor them... No other versions were submitted besides yours, I will play test tonight and award the bounty... Thanks again Martin... |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Play testing complete... All I can say is magnificent... Bounty Paid 100 Euros to CSDB... |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Excellent, I'm really glad you like it. :)
-Edit- Berzerk Redux
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
too bad we dont have a "featured release" type of thing at csdb yet ... =)
great work, thumbs up! |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Ok... Now for the adavanced version with suped up graphics and sound that Martin is planning... We will need to elicit some help... We need a Graphics guy to do the enhanced graphics and we need a sound guy to do enhanced sounds and a sid tune. I am going to try and contact Martin Galway to see if he would help us with the project for the sid tune, but others are welcome to submit... Martin Piper will have final say in what graphics and sounds he likes \ uses, this is his creation, I am just trying to solicit some help for him... |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Although I need to do the programming first to find out what extras are needed. ;)
|
| |
Marauder/GSS Account closed
Registered: Jul 2006 Posts: 224 |
great work, now waiting for the deluxe version...hehe (c:
btw, nice move with the donation! |
| |
Sixx
Registered: May 2005 Posts: 229 |
Damn, i wish i saw this release a little bit earlier than in the middle of the night, now i'm stuck. The speed of the C64 version really adds alot to the gameplay... "Just one more time". THANKS to all involved for this amazing game! |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
I have contacted bothe Stern and Atari... If either one grants permission we are golden for publishing this as a Psytronic release... I will keep you up to date on developements regarding licensing... Its probably best off to keep the codebase for the enhanced version separate from the original arcade port at this time... This way the advanced version could be released if there are licensing problems with the ported version... An we could just change the name and some of the character aspects. I have contacted via e-mail, Lars Verhoeff and Martin Galway to see if they would help with Graphics and sounds... If anyone else is interested please contact Martin Piper... |
| |
Richard
Registered: Dec 2001 Posts: |
The final production release of this game is magnificent. Martin has done a brilliant job. I will be looking forward to the deluxe version of the game :) |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
I talked to Gary Stern who owns the Berzerk IP and I think something can be worked out as far as publishing on the C64 and emulators... But I think Psytronic needs to be involved in the next conversation to get this thing published officially... But the things Gary said were encouraging... Are you on board with this Martin? Would you like to be included in the next converstaion? If so, PM me your contact info on Lemon64. |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Yup! |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Just got an e-mail from Lars Verhoeff aka Mirage, thought that I would share the body of it with you guys to keep the train rolling on this project:
Lars wrote:
Hi,
Sounds like a nice project, and I liked the redux versionÂ… What exactly is it you want me to do? Sprites and background tiles?
Cheers,
Lars.
I still have yet to hear back from Martin Galway about doing a SID tune...
I am so impressed how the scene is rallying around this project...
|
| |
1BM
Registered: Nov 2002 Posts: 48 |
i'd love a cartridge version. and the sounds from the vectrex version http://www.youtube.com/watch?v=gzf3obuzslI :) |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
The sources have now been uploaded to Codebase64.
http://codebase64.org/doku.php?id=projects:resurrection
|
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Looks like Martin Galway is out as far as help for the audio portion , but I have contacted Jeoron Tel, hopefully I'll get a reply from him...
Here is what Martin had to say:
Martin sent you a message.
Re: Commodore 64 Project
"Kevin, I can't help you personally on the C64 audio, but I will have a think about who is still working on it and get back to you. -MG"
|
| |
LOGAN Account closed
Registered: Aug 2003 Posts: 71 |
I already was afraid MG would be a no go. Jeroen Tel was one of the first names on my mind, maybe he can do some nice tunes that also include the samples :) Hmm so no 8-bit samples? hehe. |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
I am working on getting the licensing for a commercial release sorted out, but Gary Stern is turning out to be a tough nut to crack. When he realized this wasn't going to be huge money maker, he has grown somewhat apathetic about it. I have to find a way to get him something that he will value out of it. I have an idea, we'll see if he bites. I am thinking if I can get him some advertisement and\or an interview in Retro Gamer for Stern electronics, I might be able to entice him further into a licensing agreement for a commercial release of Berzerk. These things just take time unfortunately. |
| |
jailbird
Registered: Dec 2001 Posts: 1578 |
Quote:When he realized this wasn't going to be huge money maker, he has grown somewhat apathetic about it Are you fucking kiddin' me? This Stern guy actually wants to profit from the remake of a semi-retarded game, made for a 27 year old computer?
Seriously makes me wonder if he lives in the same world as the rest of us. |
| |
Heavy Stylus
Registered: Apr 2007 Posts: 62 |
Sorry for digging up this ancient thread, but I'd like to have another go at contacting Gary Stern. Any idea how I can contact trip6 to see how far he got with this? |
| |
trip6 Account closed
Registered: Jan 2007 Posts: 51 |
Gary said it was ok to do the c64 version as long as it was not sold commercially. If sold commercially whether it was 1 copy or 2,000 copies. He wanted a $5000 licensing fee plus royalties for each copy sold. He still owns the IP and it is still active. I told him I projected it would only sell 250 units. He said it was not worth his time to license it for that few. That is why Martin Piper released it into the public domain. You can hit me up on lemon or here if you want to chat more. Martin Piper was planning on doing an enhanced version and lars was going to do the tiles and graphics but it fell through with the licensing deal. I was even talking to Martin Galway about doing original sid tunes for the enhanced version. Heavy, you myself and Kenz should team up I usually offer game bounties each year for C64 conversions... I was going to anounce another this June for Sinistar including the digitized speech. I am working on the permission to do this as we speak RJ Michal (from Amiga fame) was one of the original programmers on this game. |
| |
Heavy Stylus
Registered: Apr 2007 Posts: 62 |
Wow. That's quite an incredible sum, considering the size of the market. I wouldn't even expect to sell more than 100! What kind of royalties was he expecting? 50% of any profit made? Doesn't he understand that none of us are actually in it for the money? I could understand if it was an iOS port, but the C64?! Really?
Ok, so Berzerk looks to be a non starter from a commercial perspective (I have still promised to make myself and Martin a cartridge of it), but I wonder what other IP may be potentially available at a more reasonable price?
I've already sent a message to Jay Smith's son about potentially selling TRSi's Vectrex conversions with their permission. I'll be interested to hear what they say.
Trip6, send us your details via the Lemon PM system and lets have a chat about Sinistar :) |