|
Subject: [stella] Sprite Animation Help! From: "J Parlee" <lost_monkey@xxxxxxxxxxxx> Date: Sun, 4 Aug 2002 12:41:32 -0400 |
Greetings all... I have decided to finally come forward and admit that I have hit a wall.... (big surprise!) I started working on a couple of Stella programming projects back in November 2001, but when I started up a home business in February, I found I didn't have time to work on them anymore... Now things have settled to a comfortable level and I can get back to work... I have attached the source to a game that I was working on back in February, where I got stuck on the animation of Player 2. Player 2 starts off correctly (except for some garbage at the bottom of the sprite) but as soon as P2 starts to move, the locations the sprite data are being pulled from goes "off". I have NO background in programming, I am learning all of this "as I go"... but here is what I *think* is happening. I am thinking that when the character is "moving" the address is "out of range" (>128 bytes away?).. but I have tried moving the sprite data around and it doesn't help things... Any help on this would be appreciated... Any guesses on what the game is (intended) to be? BTW: The code contains snippets from Eckard Stohlberg's "Big Move" demo, Cracker's "...Another" demo and David Crane's "Pitfall" ( amazingly interpreted Thomas Jentzsch) Thanks Jason
;01/21/02 Begin the title screen of Sxxxx Sxxxx Bxxx. using code from ES Big Move Demo
;01/21/02 Title screen works 40x40 baby! need to work on placing it better and a PF outline
;01/21/02 Began work on sprite conversion from other roms. About half done
;01/22/02 Change some colours, finish sprites, added Mario PF
;02/02/02 Removed title screen code, to be added back later...
;02/02/02 Changed the loop of the kernel. gone is the main loop and replaced with a
; straight through approach, with a couple JMPs instead of JSR RTS
; The result, is that the screen looks a little different, due to the timing.
; Next project is to start the counting. I would like to get the code to work on a
; real vcs before going any further.
;02/02/02 The quest to design a new kernel begins.
; 1st time counting is complete...added a well placed wsync and the BG is good...characters are
; taking too long to draw though...damn cycles!
;02/03/02 The character pointers are complete. Need to create a routine to select preset matches
;02/04/02 P1 is getting sprite info from the wrong location once it starts animating.. why?
processor 6502
include vcs.h
; ES RIOT registers
Swacnt = $0281
Swbcnt = $0283
; ROM definitions
;
RomStart = $F000
RomEnd = $FFFF
IntVectors = $FFFA
;####################################################################################################
;####################################################################################################
;Game Constants
;####################################################################################################
;X constants
ScreenWide = 160 ;width of playfield
XLeft = 8 ;players leftmost possible position
XRight = 152 ;players rightmost possible position
;length of a jump
JumpLength = 30 ;once this is implemented it can be adjusted
;####################################################################################################
;Y constants
;screen objects sizes
P0Height = 24
P1Height = 24
ScoreHeight = 8
;pre-defined y positions (ground and 2 platform heights)
Ground = 108 ;this is how far the player is from the top of the screen when on the ground
Platform1 = 81 ;this is how far the player is from the top of the screen when on the 1st platform
Platform2 = 65 ;this is how far the player is from the top of the screen when on the 2nd platform
;P0 Pattern Ids these are going to be set up as Mario and Harry at first (P0 Mario) (P1 Harry)
P0Standing = 0
P0Running1 = 1
P0Running2 = 2
P0Running3 = 3
P0Running4 = 4
P0Running5 = 5
P0Jumping = 6
P1Standing = 0
P1Running1 = 1
P1Running2 = 2
P1Running3 = 3
P1Running4 = 4
P1Running5 = 5
P1Jumping = 6
; game variables
s1 = $80 ; from ES Bigmove
s2 = $82 ; from ES Bigmove
s3 = $84 ; from ES Bigmove
s4 = $86 ; from ES Bigmove
s5 = $88 ; from ES Bigmove
s6 = $8A ; from ES Bigmove
DelayPTR = $8C ; from ES Bigmove
LoopCount = $8E ; from ES Bigmove
TopDelay = $8F ; from ES Bigmove replaces TOP
YPos0 = $90 ;This is the starting Y position of sprite 0
YPos1 = $91 ;This is the starting Y position of sprite 1
ScanLine = $92 ;This is a Scanline counter
P0Size = $93 ;This is how many scanlines sprite 0 is
P1Size = $94 ;This is how many scanlines sprite 1 is
BLKSIZE = $95 ;This is the size of a playfield block
BLOCK = $96 ;This is the block # (blksize*(block+1)=192)
VCOUNT = $97 ;this is the counter for calculating where the baby is vertically
BottomDelay = $98 ;ES bigmove replaces BOTTOM
MoveCount = $99 ;ES bigmove
Temp = $9A ;ES bigmove replaces FIRE
Mode = $9B ;0=loading screen, 1=title screen 2=game play
LoadingUD = $9C ;0=loading goes down 1= loading goes up
StopCount = $9D ;stopping animation for P0
P0Move = $9E ;Value for player 0 movement
P1Move = $9F ;value for player 1 movement
LoopCount1 = $A0
P0PatPtr = $A1 ;Pointer to P0 patterns
P1PatPtr = $A3 ;Pointer to P1 patterns
P0PatId = $A5 ;id of current animation frame P0
P1PatId = $A7 ;id of current animation frame P1
;##################################################################
; The following bits are lifted from Eckhard Stolberg's Bigmove demo
; My goal is to incorporate this into the opening screen and then modify the
; code to suit my purposes. Thanks to Eckhard for this code
; CODE (MOSTLY) REMOVED for now
; Program initialization
;
ORG RomStart
Cart_Init:
SEI ; Disable interrupts.:
CLD ; Clear "decimal" mode.
LDX #$FF
TXS
LDA #$00
Zero: STA $00,X ;zero out all addresses
DEX
BNE Zero
LDA #75
STA YPos0 ;set up the starting vertical position of sprite 1
STA YPos1 ;set up the starting vertical position of sprite 2
LDX #P0Standing
STX P0PatId ; 3
LDA MarioPtrTab,x ; 4
STA P0PatPtr ; 3
LDA #>Mario1 ; 2
STA P0PatPtr+1 ; 3
LDX #P1Standing
STX P1PatId ; 3
LDA PitPtrTab,x ; 4
STA P1PatPtr ; 3
LDA #>Pit1 ; 2
STA P1PatPtr+1 ; 3
LDA #5
STA LoopCount
STA LoopCount1
LDA #8
STA StopCount
vertb: LDA #$02
STA WSYNC
STA WSYNC
STA WSYNC
STA VSYNC
STA WSYNC
STA WSYNC ;
STA HMOVE ;
LDA #44 ;
STA TIM64T ;set timer
LDA #$00 ;
STA CXCLR ;clear collision registers
LDA #191 ;reset the Scanline counter to 191
STA ScanLine
LDA #24 ;reset the number of sprite lines.. this is the height of P0.
STA P0Size
STA P1Size
LDA #0
STA WSYNC
STA VSYNC
scrnvar: LDA #$75 ;0+2=[2] set background colour blue
STA COLUBK ;2+3=[5]
LDA #$01 ;5+2=[8] set this to 1
STA CTRLPF ;8+3=[11] to reflect the playfield
; LDA #$06
; STA COLUPF
draw: LDA INTIM ;11+3=[14]
BNE draw ;14+3=[17]
STA WSYNC ;0
STA VBLANK ;0
load: LDX BLOCK ;0+3=[3] 3+3=[6]< from newblk
LDA MarioPF0,X ;3+4=[7] 6+4=[10]
STA PF0 ;7+3=[10] 10+3=[13]
LDA MarioColPFL,X ;10+4=[14] 13+4=[17]
STA COLUPF ;14+3=[17] 17+3=[20]
LDA MarioPF1,X ;17+4=[21] 20+4=[24]
STA PF1 ;21+3=[24] 24+3=[27]
LDA MarioPF2,X ;24+4=[28] 27+4=[31]
STA PF2 ;28+3=[31] 31+3=[34]
grfx1: DEC ScanLine ;31+3=[34] 5+3=[8] <grfx2 34+3=[37]
LDA YPos0 ;34+3=[37] 8+3=[11] 37+3=[40]
CMP ScanLine ;37+3=[40] 11+3=[14] 40+3=[43]
BPL sprite1 ;40+2=[42]< 14+2=[16]< 43+2=[45]< if not taken
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
grfx2: STA WSYNC ; If not then draw then scanline
BEQ newblk ; 0+2=[2]* or is it time for a new block? THIS DOESN'T MAKE ANY SENSE!
JMP grfx1 ; 2+3=[5] get ready for next scanline
sprite1: LDY P0Size ;42+3=[45] 19+3=[22] 45+3
BEQ nosprt1 ;45+2=[47]* 22+2=[24]* 48+2* See if we're finished drawing the sprite.
LDA (P0PatPtr),Y ;47+5=[52] 24+5=[29] 50+5 If not then load the sprite data.
STA GRP0 ;52+3=[55] 29+3=[32] 55+3
LDA MarioCol,Y ;55+4=[59] 32+4=[36] 58+4
STA COLUP0 ;59+3=[62] 36+3=[39] 62+3 set up sprite colours P0
DEC P0Size ;62+3=[65] 39+3=[42] 65+3 get set up for next sprite line
LDY P1Size ;65+3=[68] 42+3=[45] 68+3
BEQ nosprt2 ;68+2=[70]* 45+2=[47]* 71+2* See if we're finished drawing the sprite.
LDA (P1PatPtr),Y ;70+5=[75] 47+5=[52] 73+5 If not then load the sprite data.
STA GRP1 ;75+3=[78] 52+3=[55] 78+3
LDA PitCol,Y ;78+4=[82] 55+4=[59] 81+4
STA COLUP1 ;82+3=[85] 59+3=[62] 85+3 set up sprite colours P0
DEC P1Size ;85+3=[88] 62+3=[65] 88+3 get set up for next sprite line
JMP grfx2 ;88+3=[91]< 65+3=[68]< 91+3=[94]< go draw current scanline
nosprt1: LDA #$00 ;47+2=[49] 24+2=[26] 50+2 if we're finished with the sprite then
STA GRP0 ;49+3=[52] 26+3=[29] 52+3 just fill the sprite with zeros.
JMP grfx2 ;52+3=[55]<< 29+3=[32]<< 55+3=[58]<< add some NOPs here?
nosprt2: LDA #$00 ;70+2=[72] 47+2=[49] 73+2 if we're finished with the sprite then
STA GRP1 ;72+3=[75] 49+3=[52] 75+3 just fill the sprite with zeros.
JMP grfx2 ;75+3=[78]<<< 52+3=[55]<<< 78+3=[81]<<< then draw the scanline.
newblk: LDA BLOCK ;5+3=[8] check to see if we've finished drawing the screen
BEQ clear ;8+2=[10]*
DEC BLOCK ;10+3=[13] get ready for the next playfield block
LDA #$02 ;13+2=[15]
STA BLKSIZE ;15+3=[18]
STA WSYNC ; added 020202 YEAH! now the PF is finally level!
JMP load ;18+3=[21]
clear: LDA #$02 ;10+2=[12] all done the screen.
STA WSYNC
STA VBLANK
oscan:
joy0: LDA #$00 ;set player move value to zero
STA GRP0
STA GRP1
STA PF0
STA PF1
STA PF2
STA P0Move
LDA SWCHA ;
ASL
BCC P0Right
ASL
BCC P0Left
ASL
BCC P0Up
ASL
BCC P0Down
LDX #03 ;attempt to have player revert to standing position after movement is done - works
STX P0PatId
LDA MarioPtrTab,x
STA P0PatPtr
LDA StopCount
BPL SameFrame0
LDX #00 ;attempt to have player revert to standing position after movement is done - works
STX P0PatId
LDA MarioPtrTab,x
STA P0PatPtr
P0Up: JMP P0Read
P0Down: JMP P0Read
P0Right: LDA #$00
STA REFP0 ;this is a good speed for player 0
LDA #$f0 ;set horizontal motion register to one pixel right
STA P0Move ;load to player move variable
LDA LoopCount
BPL SameFrame0
LDA #8
STA StopCount
LDA #5
STA LoopCount
LDX P0PatId
INX
STX P0PatId
LDA MarioPtrTab,x ; 4
STA P0PatPtr ; 3
LDA #5
CMP P0PatId
BEQ ResetPtr0R
JMP P0Read
P0Left: LDA #$08
STA REFP0 ;this speed is okay for player 0
LDA #$10 ;set horizontal motion register to one pixel left
STA P0Move
LDA LoopCount
BPL SameFrame0
LDA #5
STA LoopCount
LDA #8
STA StopCount
LDX P0PatId
INX
STX P0PatId
LDA MarioPtrTab,x ; 4
STA P0PatPtr ; 3
LDA #5
CMP P0PatId
BEQ ResetPtr0L
JMP P0Read
SameFrame0:
JMP P0Read
NoButton0: LDA #$45
STA COLUBK
JMP P0Read
ResetPtr0R: LDA #$00
STA P0PatId
JMP P0Read
ResetPtr0L: LDA #$00
STA P0PatId
JMP P0Read
P0Read: LDA P0Move
STA HMP0 ;moves P0 depending on the direction pressed on joystick
joy1: LDA #$00 ;set player move value to zero
STA P1Move
LDA SWCHA ;
ASL
ASL
ASL
ASL
ASL
BCC P1Right
ASL
BCC P1Left
ASL
BCC P1Up
ASL
BCC P1Down
LDX #00 ;attempt to have player revert to standing position after movement is done - works
STX P1PatId
LDA PitPtrTab,x
STA P1PatPtr
; LDA INPT5 ;read the button- no implementation yet
; BMI NoButton1
JMP P1Read
P1Up:
JMP P1Read
P1Down:
JMP P1Read
P1Right: LDA #$00
STA REFP1 ;face player right
LDA #$F0 ;set horizontal motion register to one pixel right
STA P1Move ;this is a good speed for player 1
LDA LoopCount1 ;check to see if it is time to draw a new frame...
BPL SameFrame1 ;if not - - go on with same
LDA #5 ;if so - reset loopcount1
STA LoopCount1
LDX P1PatId ;load the value of player1 pattern id to x
INX ;increase x by one
STX P1PatId ;store the value of x to player1 pattern id
LDA PitPtrTab,x ;load the xth value of PitPtrTab to A
STA P1PatPtr ;store the value in player1 pattern pointer
LDA #5
CMP P1PatId
BMI ResetPtr1R
JMP P1Read
P1Left: LDA #$08
STA REFP1 ;this speed is okay for player 1
LDA #$10 ;set horizontal motion register to one pixel left
STA P1Move
LDA LoopCount1
BPL SameFrame1
LDA #5
STA LoopCount1
LDX P1PatId
INX
STX P1PatId
LDA PitPtrTab,x ; 4
STA P1PatPtr ; 3
LDA #5
CMP P1PatId
BEQ ResetPtr1L
JMP P1Read
SameFrame1:
JMP P1Read
NoButton1: LDA #$45
STA COLUBK
JMP P1Read
ResetPtr1R: LDA #00
STA P1PatId
JMP P1Read
ResetPtr1L: LDA #00
STA P1PatId
JMP P1Read
P1Read: LDA P1Move
STA HMP1 ;moves P1 depending on joystick 2
DEC LoopCount
DEC LoopCount1
DEC StopCount
; LDA #$06 ;reset the variables.
; STA BLKSIZE ;and other stuff.
LDA #30
STA BLOCK
LDX #$1E
waste: STA WSYNC
DEX
BNE waste
JMP vertb
ORG $F300
;#######################################################################################
;Playfield Data
;#######################################################################################
MarioPF0: .byte $E0,$E0,$E0,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
MarioPF1: .byte $FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
MarioPF2: .byte $FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FE,$00
.byte $00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
MarioColPFL .byte $44,$44,$44,$44,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E
.byte $4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E
MarioColPFR .byte $44,$44,$44,$44,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E
.byte $4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E,$4E
PFLColor .byte $19,$19,$19,$19,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F
PFRColor .byte $7F,$7F,$7F,$7F,$7D,$60,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10
ORG $F500
;#######################################################################################
;Player Data
;#######################################################################################
;Adventure Characters and items
Bat1: .byte $00,$66,$5A,$FF,$C3,$C3,$81,$81,$81,$42 ;wings up
Bat2: .byte $00,$81,$81,$C3,$66,$5A,$3C,$81,$00,$81 ;wings down
Rhindle1: .byte $00,$00,$3F,$E1,$8F,$08,$3C,$FF,$C7,$C3,$C3,$E3,$7F,$3F,$1E,$04,$04,$0E,$FE,$F3,$0F,$06,$00,$00 ;22 tall, normal pose
Rhindle2: .byte $E0,$80,$F8,$08,$1C,$3E,$7F,$7F,$7F,$7F,$3F,$1E,$8E,$44,$24,$1E,$0E,$0B,$1F,$26,$40,$80,$00,$00 ;bite pose
Rhindle3: .byte $7E,$42,$6E,$20,$78,$7E,$FE,$FE,$FC,$80,$CE,$7F,$1B,$0E,$0C,$0C,$0C,$00,$00,$00,$00,$00,$00,$00 ;dead pose
Square: .byte $7C,$7C,$7C,$7C,$7C,$7C ; 6 tall
Sword: .byte $20,$40,$FF,$40,$20 ; 5 tall
Magnet: .byte $C3,$C3,$C3,$C3,$C3,$E7,$7E,$3C ; 8 tall
;#######################################################################################
;Asteroids animations
Ast1: .byte $00,$00,$00,$00,$00,$00,$10,$10,$38,$38,$7C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; facing down
Ast2: .byte $00,$00,$00,$00,$00,$00,$20,$30,$38,$3C,$30,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; rotate right one
Ast3: .byte $00,$00,$00,$00,$00,$00,$40,$30,$3C,$18,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Ast4: .byte $00,$00,$00,$00,$00,$00,$40,$3E,$1C,$0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Ast5: .byte $00,$00,$00,$00,$00,$00,$04,$1C,$FC,$1C,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Ast6: .byte $00,$00,$00,$00,$00,$00,$0C,$1C,$3E,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Ast7: .byte $00,$00,$00,$00,$00,$00,$10,$18,$3C,$30,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Ast8: .byte $00,$00,$00,$00,$00,$00,$30,$3C,$38,$30,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Ast9: .byte $00,$00,$00,$00,$00,$00,$7C,$38,$38,$10,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Ast10: .byte $80,$04,$A2,$00,$20,$81,$22,$10,$04 ; blow up sprite
Ast11: .byte $38,$44,$54,$44,$38 ; Shield on!
;#######################################################################################
;Circus Sprites
Circus1: .byte $00,$82,$44,$38,$10,$10,$38,$54,$92,$38,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;10 high standing pose
Circus2: .byte $00,$82,$44,$38,$12,$14,$38,$50,$90,$38,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;animation
Circus3: .byte $00,$22,$24,$38,$90,$50,$38,$14,$12,$38,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Circus4: .byte $00,$28,$28,$38,$92,$54,$38,$10,$10,$38,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Circus5: .byte $00,$FF,$FF,$10,$10,$38,$44,$82,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;7 high death animation
Circus6: .byte $00,$FF,$FF,$14,$12,$38,$44,$82,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; death cont
Circus7: .byte $00,$FF,$FF,$50,$90,$38,$24,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Still more death!
Circus8: .byte $00,$FF,$FF,$54,$92,$38,$28,$28,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Dead!
;#######################################################################################
;Combat Sprites
Tank1: .byte $00,$FC,$FC,$38,$3F,$38,$FC,$FC,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;7 high facing right
Tank2: .byte $00,$1C,$78,$FB,$7C,$1C,$1F,$3E,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;8 high rotate right
Tank3: .byte $00,$19,$3A,$7C,$FF,$DF,$0E,$1C,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;rotate right some more
Tank4: .byte $00,$24,$64,$79,$FF,$FF,$4E,$0E,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;rotate right some more
Tank5: .byte $00,$08,$08,$6B,$7F,$7F,$7F,$63,$63,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;face down
Tank6: .byte $00,$24,$26,$9E,$FF,$FF,$72,$70,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Tank7: .byte $00,$98,$5C,$3E,$FF,$FB,$70,$38,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Tank8: .byte $00,$38,$1E,$DF,$3E,$38,$F8,$7C,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
;#######################################################################################
ORG $F800
;Mario!
Mario1: .byte $00,$3B,$36,$36,$36,$3E,$3E,$3E,$3E,$DE,$DF,$7D,$3C,$18,$3C,$7E,$70,$57,$5E,$50,$18,$7E,$38,$18 ;23 high standing
Mario2: .byte $00,$00,$80,$80,$E7,$FF,$3D,$3C,$0E,$6F,$6F,$7D,$3C,$18,$3C,$7E,$70,$57,$5E,$50,$18,$7E,$38,$18 ;Running 1
Mario3: .byte $00,$18,$33,$33,$37,$0E,$1E,$06,$3A,$3A,$24,$3C,$3C,$18,$3C,$7E,$70,$57,$5E,$50,$18,$7E,$38,$18 ;Running 2
Mario4: .byte $00,$47,$46,$06,$0E,$1C,$3C,$3C,$3C,$DC,$DC,$F8,$78,$30,$78,$FC,$E0,$AE,$BC,$A0,$30,$FC,$70,$30 ;Running 3
Mario5: .byte $00,$00,$00,$80,$80,$F0,$FF,$3B,$3D,$DD,$DC,$FE,$7F,$19,$3D,$7E,$70,$57,$5E,$50,$18,$FC,$70,$30 ;running 4
Mario6: .byte $00,$18,$33,$33,$37,$0E,$1E,$06,$3A,$3A,$24,$3C,$3C,$18,$3C,$7E,$70,$57,$5E,$50,$18,$7E,$38,$18 ;Running 2 repeat
Mario7: .byte $00,$00,$00,$36,$36,$3E,$3E,$3E,$3E,$DE,$DF,$7D,$3C,$18,$3C,$7E,$70,$57,$5E,$50,$18,$7E,$38,$18 ;jumping
MarioCol: .byte $22,$22,$72,$72,$72,$72,$72,$72,$45,$45,$45,$45,$45,$45,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$72,$72,$72
;#######################################################################################
;Pitfall Harry 21 tall
Pit1: .byte $00,$18,$10,$1C,$18,$18,$18,$18,$18,$18,$18,$18,$18,$1C,$1E,$1A,$18,$18,$10,$18,$18,$18,$00,$00 ;Stand
Pit2: .byte $00,$00,$00,$00,$00,$00,$33,$72,$DA,$1E,$1C,$18,$58,$58,$7C,$3E,$1A,$18,$10,$18,$18,$18,$00,$00 ;jump/kneel
Pit3: .byte $00,$00,$02,$43,$44,$74,$14,$1C,$1C,$18,$18,$18,$3C,$3E,$3A,$38,$18,$18,$10,$18,$18,$18,$00,$00 ;run4
Pit4: .byte $00,$00,$08,$28,$28,$3E,$0A,$0E,$1C,$18,$18,$1C,$1C,$18,$18,$18,$18,$18,$10,$18,$18,$18,$00,$00 ;run3
Pit5: .byte $00,$00,$20,$22,$24,$34,$32,$16,$1E,$1C,$18,$18,$1C,$1C,$18,$18,$18,$18,$10,$18,$18,$18,$00,$00 ;run2
Pit6: .byte $00,$00,$80,$80,$C3,$62,$62,$36,$3E,$1C,$18,$18,$3C,$3E,$3A,$38,$18,$18,$10,$18,$18,$18,$00,$00 ;run1
Pit7: .byte $00,$00,$00,$00,$00,$00,$00,$63,$F2,$F6,$DC,$C0,$C0,$C0,$C0,$C0,$F0,$D0,$90,$D0,$D0,$C0,$00,$00 ;swing
PitCol: .byte $00,$C4,$C4,$C4,$C4,$C4,$C4,$C4,$C4,$C4,$C4,$C4,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$3F,$3F,$23,$00,$00
;#######################################################################################;Ms PacMan
MsPac1: .byte $00,$00,$00,$00,$00,$00,$5C,$BE,$77,$57,$77,$63,$63,$41,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;facing up open mouth
MsPac2: .byte $00,$00,$00,$00,$00,$00,$5C,$BE,$77,$57,$77,$77,$63,$63,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00
MsPac3: .byte $00,$00,$00,$00,$00,$00,$5C,$BE,$7F,$5F,$7F,$7F,$7F,$7F,$3E,$1C,$00,$00,$00,$00,$00,$00,$00,$00 ;facing up closed
MsPac4: .byte $00,$00,$00,$00,$00,$00,$1C,$38,$78,$70,$60,$60,$70,$68,$B8,$5C,$00,$00,$00,$00,$00,$00,$00,$00 ;facing right wide open
MsPac5: .byte $00,$00,$00,$00,$00,$00,$1C,$3E,$7E,$78,$60,$60,$78,$6E,$BE,$5C,$00,$00,$00,$00,$00,$00,$00,$00 ;facing right part closed
MsPac6: .byte $00,$00,$00,$00,$00,$00,$1C,$3E,$7F,$7F,$7F,$7F,$7F,$6F,$BE,$5C,$00,$00,$00,$00,$00,$00,$00,$00 ;facing right closed
MsPac7: .byte $00,$00,$00,$00,$00,$00,$00,$00,$82,$C6,$C6,$EE,$EA,$EE,$7D,$3A,$00,$00,$00,$00,$00,$00,$00,$00 ;facing down open mouth
MsPac8: .byte $00,$00,$00,$00,$00,$00,$00,$44,$C6,$C6,$EE,$EE,$EA,$EE,$7D,$3A,$00,$00,$00,$00,$00,$00,$00,$00 ;facing down part closed
MsPac9: .byte $00,$00,$00,$00,$00,$00,$38,$7C,$FE,$FE,$FE,$FE,$FA,$FE,$7D,$3A,$00,$00,$00,$00,$00,$00,$00,$00 ;facing down closed
MsPac10: .byte $00,$00,$00,$00,$00,$00,$38,$1C,$1E,$0E,$06,$06,$0E,$16,$1D,$3A,$00,$00,$00,$00,$00,$00,$00,$00 ;left wide open
MsPac11: .byte $00,$00,$00,$00,$00,$00,$38,$7C,$7E,$1E,$06,$06,$1E,$76,$7D,$3A,$00,$00,$00,$00,$00,$00,$00,$00 ;left part closed
MsPac12: .byte $00,$00,$00,$00,$00,$00,$38,$7C,$FE,$FE,$FE,$FE,$FE,$F6,$7D,$3A,$00,$00,$00,$00,$00,$00,$00,$00 ;left closed
;#######################################################################################
;Pacman
Pac1: .byte $00,$00,$00,$00,$00,$00,$38,$7C,$FE,$FE,$FE,$6C,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pac2: .byte $00,$00,$00,$00,$00,$00,$38,$7C,$FE,$E0,$FE,$6C,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pac3: .byte $00,$00,$00,$00,$00,$00,$38,$7E,$E0,$C0,$E0,$6C,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pacdie1: .byte $00,$00,$00,$00,$00,$00,$3C,$7E,$C3,$C3,$E7,$66,$24,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pacdie2: .byte $00,$00,$00,$00,$00,$00,$18,$3C,$7E,$E7,$E7,$C3,$C3,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pacdie3: .byte $00,$00,$00,$00,$00,$00,$3C,$7E,$E7,$C3,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pacdie4: .byte $00,$00,$00,$00,$00,$00,$FF,$7E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pacdie5: .byte $00,$00,$00,$00,$00,$00,$14,$08,$14,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Pacdie6: .byte $00,$00,$00,$00,$00,$00,$14,$22,$00,$41,$00,$41,$00,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Eyes: .byte $E7,$A5,$E7
;#######################################################################################
;Yar 8 tall
Yar1: .byte $00,$00,$00,$00,$00,$00,$24,$18,$24,$24,$7E,$5A,$DB,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;down,wings down
Yar2: .byte $00,$00,$00,$00,$00,$00,$20,$30,$ED,$47,$2C,$3F,$17,$36,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;down right, wings down
Yar3: .byte $00,$00,$00,$00,$00,$00,$02,$0E,$99,$67,$67,$99,$0E,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;right, wings down
Yar4: .byte $00,$00,$00,$00,$00,$00,$36,$17,$3F,$2C,$47,$ED,$30,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;up right, wings down
Yar5: .byte $00,$00,$00,$00,$00,$00,$3C,$DB,$5A,$7E,$24,$24,$18,$24,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;up, wings down
Yar6: .byte $00,$00,$00,$00,$00,$00,$24,$99,$A5,$E7,$18,$18,$18,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;down , wings up
Yar7: .byte $00,$00,$00,$00,$00,$00,$20,$37,$EC,$44,$2C,$FF,$87,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;down right, wings up
Yar8: .byte $00,$00,$00,$00,$00,$00,$38,$08,$99,$67,$67,$99,$08,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;right, wings up
Yar9: .byte $00,$00,$00,$00,$00,$00,$06,$87,$FF,$2C,$44,$EC,$37,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;up right, wings up
Yar10: .byte $00,$00,$00,$00,$00,$00,$3C,$18,$18,$18,$E7,$A5,$99,$24,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;up, wings up
;#######################################################################################
;#######################################################################################
;Player Pointer Tabs
MarioPtrTab:
.byte <Mario1
.byte <Mario2
.byte <Mario3
.byte <Mario4
.byte <Mario5
.byte <Mario6
.byte <Mario7
;#######################################################################################
PitPtrTab:
.byte <Pit1
.byte <Pit2
.byte <Pit3
.byte <Pit4
.byte <Pit5
.byte <Pit6
.byte <Pit7
;#######################################################################################
AstPtrTab:
.byte <Ast1
.byte <Ast2
.byte <Ast3
.byte <Ast4
.byte <Ast5
.byte <Ast6
.byte <Ast7
;#######################################################################################
CircusPtrTab:
.byte <Circus1
.byte <Circus2
.byte <Circus3
.byte <Circus4
.byte <Circus2
.byte <Circus6
.byte <Circus7
;#######################################################################################
TankPtrTab:
.byte <Tank1
.byte <Tank2
.byte <Tank3
.byte <Tank4
.byte <Tank5
.byte <Tank6
.byte <Tank7
;#######################################################################################
MsPacPtrTab:
.byte <MsPac4
.byte <MsPac5
.byte <MsPac6
.byte <MsPac5
.byte <MsPac4
.byte <MsPac5
.byte <MsPac6
;#######################################################################################
PacPtrTab:
.byte <Pac1
.byte <Pac2
.byte <Pac3
.byte <Pac1
.byte <Pac2
.byte <Pac3
.byte <Pac2
;#######################################################################################
YarPtrTab:
.byte <Yar1
.byte <Yar2
.byte <Yar3
.byte <Yar1
.byte <Yar2
.byte <Yar3
.byte <Yar2
;#######################################################################################
RhindlePtrTab:
.byte <Rhindle1
.byte <Rhindle2
.byte <Rhindle3
.byte <Rhindle1
.byte <Rhindle2
.byte <Rhindle3
.byte <Rhindle2
P0PtrTab:
.word <MarioPtrTab ;1
.word <PitPtrTab ;2
.word <MsPacPtrTab ;3
.word <PacPtrTab ;4
.word <YarPtrTab ;5
.word <AstPtrTab ;6
.word <TankPtrTab ;7
.word <CircusPtrTab ;8
.word <RhindlePtrTab ;9
P1PtrTab:
.word <MarioPtrTab ;1
.word <PitPtrTab ;2
.word <MsPacPtrTab ;3
.word <PacPtrTab ;4
.word <YarPtrTab ;5
.word <AstPtrTab ;6
.word <TankPtrTab ;7
.word <CircusPtrTab ;8
.word <RhindlePtrTab ;9
ORG IntVectors
NMI .word Cart_Init
Reset .word Cart_Init
IRQ .word Cart_Init
Attachment:
smash0803.bin
Description: Binary data
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [stella] Ideal settings for mak, Erik Eid | Thread | Re: [stella] Sprite Animation Help!, Thomas Jentzsch |
| Re: [stella] Ideal settings for mak, Erik Eid | Date | Re: [stella] Sprite Animation Help!, Thomas Jentzsch |
| Month |