A82: VAT problems (help me)
[Prev][Next][Index][Thread]
A82: VAT problems (help me)
Ok, here is the story. I have ported Joe W.'s Breakout game to the
TI-82. It works perfectly except for the EXTERNAL LEVEL selector
routine. You know, searches the vat for stuff and loads the level, kind
of like penguins. Well, I can't get it to work. After I play a game,
then quit, the next button I press crashes the calc, your typical VAT
crash. If you can help me fix it, then porting this and Diamonds v1.5
will be a snap. Both of those games use the same external level routine.
And I bet more games made by Joe will, so I would love to get this
ported!
Here is the code below, with comments:
;close to the very beginning of the game.
prmenu:
ld hl,levels
ld (file),hl
ld hl,(VAT_START) ;THIS IS THE PROBLEM!!
;in the 83 version this line is ld hl,(fat)
;yes folks, (fat), not a typo.
;I need to find the appropiate substitute for 'fat'
ld (curwrld),hl
.......
<snip>
;Deleted more code that IN NO WAY has any effect on the level selection.
........
;Start of level select routine, I didn't have to change anything when
;I ported it. Please take a look and see what my problem is.
;---------- Change World ----------
; the level data is set up as follows in the level sets:
; -"Breakout v1.0 by Joe W" (22 bytes)
; -number of byte to start of level
; -level name
; -$00
; -number of bytes in the level name (including the zero)
; -high score (2 bytes)
; -number of levels
; -start of levels (33 bytes each)
chgwrld:
xor a
ld (startlev),a
ld hl,(curwrld) ;loads that (fat) addr here.
chgwlp:
ld (temp),hl ; in case a program is found
ld a,(hl) ; but no good.
and %00011111
cp 0x06
jr z,cwchck
cp 0x05
jr z,nogood2 ; a program, but not protected
cp 0x01 ; (using an unprotected program
jr z,list ; could be dangerous)
cp 0x0D
jr z,list
jp prmenu
cwchck:
dec hl ; move to ptr (skip var type)
push hl
ld b,(hl)
dec hl
ld c,(hl)
ld h,c
ld l,b
inc hl ; skip file length (2 bytes, but see below)
ld de,name-1
ld b,22 ; "Breakout v1.0 by Joe W"
ckprog:
inc hl ; file length is 2 bytes so we save one byte!
inc de ; skip the string length (we know it already!)
ld c,(hl)
ld a,(de)
cp c
jr nz,nogood
djnz ckprog
inc hl
ld c,(hl) ; 24th byte of file is added to ptr to get
ld b,0x00 ; the start of level data
add hl,bc
inc hl
ld (file),hl
pop hl
dec hl
dec hl
ld b,(hl) ; length of name
inc b ; move to next program as well in case the
skprog:
dec hl ; user doen't want this world
djnz skprog
ld (curwrld),hl
jp menu
nogood2:
; push something so we can safely pop!
push hl ; anything will work but.....
nogood:
pop hl ; who cares (not needed)
ld hl,(temp)
list:
dec hl ; lists enter here to be skipped
dec hl
dec hl
ld b,(hl)
nogdlp:
dec hl ; not the fastest, but is the smallest!
djnz nogdlp
dec hl ; next item
jp chgwlp
There is all the suff. All the variables you see are stored in TEXT_MEM
(in case your wondering) Please, Crash_Man, Dines, Thomas, Adamman, Evil
Same, anyone who has any knowledge of the VAT please tell me why this
doesn't work. Thanks a lot. If you need more info please email me. I
will release Breakout, even if I can never get this level selection to
work, all the levels then will just have to be in the game.
~Ilya