Page 3 of 6
Posted: Mon Apr 20, 2009 6:43 am
by nbla000
ral-clan wrote:Okay, thanks. I am beginning to understand this.
So, what memory blocks does this program work with (I'm thinking the standard $A0 and $20?). What if a cartridge only uses one of these blocks, will that be a problem?
Normally they just use block #5 ($A000-$BFFF) btw you may dump all blocks and then we will check which file images are required.
I've an easy alternative method to save memory blocks, please follow this table:
Code: Select all
Block # Hex Address Poke 43,x Poke 44,x Poke 45,x Poke 46,x
5 $a000-bfff x = 0 x = 160 x = 0 x = 192
3 $6000-7fff x = 0 x = 96 x = 0 x = 128
2 $4000-5fff x = 0 x = 64 x = 0 x = 96
1 $2000-3fff x = 0 x = 32 x = 0 x = 64
This is an example on how to save block 2:
Code: Select all
POKE43,0:POKE44,64:POKE45,0:POKE46,96
SAVE"IMAGENAME-40",8,1
Posted: Mon Apr 20, 2009 7:40 am
by Mayhem
Yeah, I think NBLA's method is how I dumped Key Quest and Frogman...
Posted: Mon Apr 20, 2009 7:44 am
by Mike
nbla000 wrote:I've an easy alternative method to save memory blocks, ...
Which, I'd like to add, will screw up a running BASIC program.
I've put those (only slightly more complicated) routines into the ROM calls thread, because they not only work when used in direct mode, but also from within a program without the necessity of those weird constructions like:
Code: Select all
IFA=0THENA=1:LOAD"<some ML code>",8,1
IFA=1THENA=2:LOAD"<some more ML code>",8,1
[etc.]
just because the LOAD inadvertently (read: without being asked for) diverts control flow back to the start of the BASIC program.
Likewise, if you save a block of memory with the POKE43..46,...:SAVE method, you'll relocate the pointer to start of variables. If used inside a program this will lead to a crash.
Michael
Posted: Mon Apr 20, 2009 11:49 am
by Mike
O.K., I've cooled down a bit.
Since this question tends to crop up every now, and then, anyway... I'd like to present:
EASYDUMP, and EASYRUN.
Just press any of the keys '1', '2', '3', or '5' to dump the respective BLK:
Code: Select all
10 POKE55,0:POKE56,30:CLR
11 PRINT"{CLR}VIC-20 CARTRIDGE DUMP"
12 INPUT"NAME";N$:N$=LEFT$(N$,12)
13 PRINT"PRESS 1,2,3, OR 5 TO SAVE"
14 PRINT"THE CORRESPONDING BLOCK."
15 GETA$
16 IFA$="1"THENS=32:E=64:S$="2000":GOSUB21
17 IFA$="2"THENS=64:E=96:S$="4000":GOSUB21
18 IFA$="3"THENS=96:E=128:S$="6000":GOSUB21
19 IFA$="5"THENS=160:E=192:S$="A000":GOSUB21
20 GOTO15
21 PRINT"SAVING BLK"A$" ..."
22 SYS57809(N$+S$),8,1:POKE193,0:POKE194,S
23 POKE780,193:POKE781,0:POKE782,E:SYS65496
24 RETURN
25 :
26 REM ** EASYDUMP
The second program just blindingly tries to load every possible suffix (it doesn't stop if one of these isn't there, just make sure the whole cartridge contents have been dumped):
Code: Select all
10 POKE55,0:POKE56,30:CLR
11 PRINT"{CLR}VIC-20 CARTRIDGE RUN"
12 INPUT"NAME";N$:N$=LEFT$(N$,12)
13 S$="2000":GOSUB16:S$="4000":GOSUB16
14 S$="6000":GOSUB16:S$="A000":GOSUB16
15 SYS64802
16 SYS57809(N$+S$),8,1:POKE780,0:SYS65493
17 RETURN
18 :
19 REM ** EASYRUN
Greetings,
Michael
Posted: Mon Apr 20, 2009 2:56 pm
by nbla000
Great job Mike, thanks a lot from all the community
I know, I took myself too serious
Posted: Mon Apr 20, 2009 3:23 pm
by Mike
I didn't know you had the Trademark on the EASY... prefix.
Posted: Tue Apr 21, 2009 6:03 am
by ral-clan
dragos wrote:I am truly at a loss to understand why on earth you would volunteer to do something and possess none of the knowledge required to do it....
1) When the original poster asked for volunteers I explained that while I have the equipment and have dumped cartridges before, there were people on Denial far more qualified than me to do this - but that I would dump them as a last resort (because I would need help). Read my post in this thread from March 16th.
2) No one else offered to dump the cartridges so the original poster approached me to do it.
3) If I don't do it, it won't get done at all.
4) Denial members have kindly answered my questions about dumping cartridges and now I can do it.
5) It's called co-operation.
Posted: Tue Apr 21, 2009 9:22 am
by nbla000
ral-clan wrote:It's called co-operation.
Yeah, I love this community
Posted: Wed Apr 22, 2009 10:43 am
by ral-clan
Thanks guys. So far it's working and I'm dumping them as we speak. I'll post the binaries when done.
Posted: Wed Apr 22, 2009 2:55 pm
by ral-clan
Here are the dumped cartridges:
http://www3.sympatico.ca/clarke-santin/ ... rchive.zip
Grab this archive while you can, it won't be up long. I took detailed photos of the cartridges too, but they made the archive too big (however, there are some good photos posted earlier in this thread).
The only cartridges that seemed a little different were the two versions of GORF. When dumps of these cartridges are started in VICE, this credit screen appears a few seconds after the title screen is displayed and stays on screen until the game is started:
Although strangely when the same cartridges are plugged into a real VIC-20, this screen does not show up and the game goes into demo mode after a few seconds.
I am interested in hearing the results of binary comparison.
Posted: Thu Apr 23, 2009 3:33 am
by Luzur
wasnt Bill Wade boss of the programmers for awhile?
i recognise the name but he isnt mentioned in On The Edge so i must have read about him somewhere else.
Posted: Thu Apr 23, 2009 6:44 am
by nbla000
ral-clan wrote:Here are the dumped cartridges:
...
I am interested in hearing the results of binary comparison.
I've just downloaded files, i will compare them asap, maybe a couple of hours
Posted: Thu Apr 23, 2009 7:08 am
by nbla000
ral-clan wrote:The only cartridges that seemed a little different were the two versions of GORF.
Ok for both Gorf versions you need just the a000 file because it uses just 8k on blk5.
The file gorf-apra000 is exactly the same of the final commercial version that you may download from zimmer:
http://www.zimmers.net/anonftp/pub/cbm/ ... k/Gorf.prg
The file gorfeproma000 is a little bit different so i will investigate futher for differences but the credit screen page is the same, tonight/tomorrow i will also check with the 6502dude's NV-RAM cart for lacking credit screen page on real hardware.
Stay tuned
Posted: Thu Apr 23, 2009 8:05 am
by nbla000
OK, here there are the differences between the final commercial version and the gorfeproma000 file version.
Code: Select all
Final commercial version:
b7b6 A0 FF LDY #$FF
b7b8 60 RTS
b7b9 AD 50 1D LDA $1D50
b7bc C5 7D CMP $7D
b7be 90 F6 BCC $B7B6
b7c0 A5 7E LDA $7E <--
b7c2 CD 4A 1D CMP $1D4A
b7c5 F0 09 BEQ $B7D0
b7c7 B0 ED BCS $B7B6
gorfeproma000 version:
b7b6 A0 FF LDY #$FF
b7b8 60 RTS
b7b9 AD 50 1D LDA $1D50
b7bc C5 7D CMP $7D
b7be 90 F6 BCC $B7B6
b7c0 A5 00 LDA $00 <--
b7c2 CD 4A 1D CMP $1D4A
b7c5 F0 09 BEQ $B7D0
b7c7 B0 ED BCS $B7B6
Final commercial version:
b925 C9 08 CMP #$08
b927 D0 04 BNE $B92D
b929 A9 46 LDA #$46
b92b D0 0E BNE $B93B
b92d C9 10 CMP #$10
b92f D0 0D BNE $B93E
b931 A9 FF LDA #$FF <--
b933 99 3C 03 STA $033C,Y
b936 99 24 1D STA $1D24,Y
b939 A9 35 LDA #$35
b93b 99 56 03 STA $0356,Y
b93e A6 BF LDX $BF
b940 FE 24 1D INC $1D24,X <--
b943 60 RTS
b944 30 02 BMI $B948
b946 C6 31 DEC $31
b948 C9 FF CMP #$FF
b94a D0 07 BNE $B953
gorfeproma000 version:
b925 C9 08 CMP #$08
b927 D0 04 BNE $B92D
b929 A9 46 LDA #$46
b92b D0 0E BNE $B93B
b92d C9 10 CMP #$10
b92f D0 0D BNE $B93E
b931 A9 00 LDA #$00 <--
b933 99 3C 03 STA $033C,Y
b936 99 24 1D STA $1D24,Y
b939 A9 35 LDA #$35
b93b 99 56 03 STA $0356,Y
b93e A6 BF LDX $BF
b940 70 24 BVS $B966 <-- it seems a bug
b942 1D 60 30 ORA $3060,X
..
b944 30 02 BMI $B948
b946 C6 31 DEC $31
b948 C9 FF CMP #$FF
b94a D0 07 BNE $B953
Final commercial version:
bae0 A5 A4 LDA $A4
bae2 18 CLC
bae3 69 0E ADC #$0E
bae5 85 A4 STA $A4
bae7 A9 0A LDA #$0A
bae9 85 A3 STA $A3
baeb D0 E5 BNE $BAD2
baed A9 0A LDA #$0A
baef 85 BE STA $BE <--
baf1 20 8E B9 JSR $B98E
baf4 C6 BE DEC $BE
baf6 D0 F9 BNE $BAF1
baf8 60 RTS
gorfeproma000 version:
bae0 A5 A4 LDA $A4
bae2 18 CLC
bae3 69 0E ADC #$0E
bae5 85 A4 STA $A4
bae7 A9 0A LDA #$0A
bae9 85 A3 STA $A3
baeb D0 E5 BNE $BAD2
baed A9 0A LDA #$0A
baef 85 00 STA $00 <--
baf1 20 8E B9 JSR $B98E
baf4 C6 BE DEC $BE
baf6 D0 F9 BNE $BAF1
baf8 60 RTS
from bb02 there are just data
Final commercial version:
bbd0 20 60 fb a0 ec fb a0 ec a0 20 a0 a0 20 60 cc 8f
gorfeproma000 version:
bbd0 20 60 00 a0 ec 00 a0 ec a0 20 a0 a0 20 60 cc 8f
Thus just few bytes are different, my opinion is that gorfeproma000 file version is a pre-release version with some bug after fixed with the approved version, nothing else, no strange messages or ram protection, nothing so exacting
The byte on $b940 seems really a bug, i may investigate further on $B98E and check on $1D4A location but i really don't think to find something but just some small fixes.
Btw this is my opinion, someone wants to investigate further ?
I will check the other file images...
Posted: Thu Apr 23, 2009 8:13 am
by nbla000
For Omega Race you need just the a000 file because it uses just 8k on blk5.
The file omegaracea000 is exactly the same of the final commercial version that you may download from zimmer:
http://www.zimmers.net/anonftp/pub/cbm/ ... e-orig.prg
It is the ram protected version of course.