Subject: [stella] Help! Technical problem! From: Jake Patterson <jpatters@xxxxxxxxxxx> Date: Sun, 9 Sep 2001 15:51:20 -0400 (EDT) |
Attached you will find a file named baubles2.asm. For some reason, when I try to assemble it with DASM in MPW, I get an error type 2, and MPW "unexpectidly quits". After that happens, in order to get DASM to assemble anything at all, I have to do three things: throw away the MPW preferences, replace the DASM tool in the MPW folder with an uncorrupted copy, and restart my Powerbook. It will then work normally for other asm files, but my latest version of baubles will make it go boom. After it crashes, if I attempt to assemble a different (valid) file, I get: ### MPW Shell - Unable to load code fragment "dasm" of "Ryoga Hibiki:Metrowerks CodeWarrior 6.0:CodeWarrior MPW:MPW:Tools:dasm". # Fragment container format unknown (OS error -2806) unless I have first performed the three steps above. Now, I don't think I did anything particularly weird in baubles2, but I am obviously inexperienced at this, and I could use some other eyes on that code. Any help that you folks can provide would be much appreciated.
; Baubles, a game ; by Jake Patterson, September 2001 ; This has *not* been tested on actual hardware ; ; parts copied and pasted from: ; How to Draw A Playfield. ; by Nick Bensema 9:23PM 3/2/97 ; processor 6502 include vcs.h org $F000 black = $00 Temp = $80 Selectstate = $90 Colorcounter = $91 Selectpressed = $92 Selectionmade = $93 Start SEI ; Disable interrupts, if there are any. CLD ; Clear BCD math bit. LDX #$FF TXS ; Set stack to beginning. LDA #0 B1 STA 0,X DEX BNE B1 ; ***************************************************************************** SplashLoop ; ***************************************************************************** JSR VerticalBlank ;Execute the vertical blank. JSR SplashCheckSwitches ;Check Console Switches. JSR SplashDrawScreen ;Draw the screen JSR OverScan ;Do more calculations during overscan LDA Selectionmade ; Only keep repeating splashscreen if and only BEQ SplashLoop ; if no selection has been made. LDA Selectstate ; Did the user ask for help? CMP #%00000011 BEQ HelpLoop JMP GameLoop ; Apparantly not, so lets go on to the game! ; ***************************************************************************** HelpLoop ; ***************************************************************************** JSR VerticalBlank JSR HelpCheckSwitches JSR HelpDrawScreen JSR OverScan LDA Selectstate BEQ SplashLoop JMP HelpLoop ; ***************************************************************************** GameLoop ; ***************************************************************************** JSR VerticalBlank JSR GameCheckSwitches JSR GameGameCalc JSR GameDrawScreen JSR OverScan LDA Selectstate BEQ SplashLoop JMP GameLoop ; ***************************************************************************** VerticalBlank ; ***************************************************************************** LDX #0 LDA #2 STA WSYNC STA WSYNC STA WSYNC STA VSYNC ;Begin vertical sync. STA WSYNC ; First line of VSYNC STA WSYNC ; Second line of VSYNC. LDA #44 STA TIM64T LDA #0 STA CXCLR STA WSYNC ; Third line of VSYNC. STA VSYNC ; (0) RTS ; ***************************************************************************** SplashCheckSwitches ; Select changes selection mode, controler rl indicates selection made ; ***************************************************************************** LDA #$0000 STA PF0 STA PF1 STA PF2 STA COLUPF STA COLUBK LDA SWCHA AND #%11001100 CMP #%11001100 BEQ NoStart INC Selectionmade RTS NoStart LDA SWCHB ; look at switches. AND #%00000010 ; we only care about select at this point. BNE NoSelect ; is select pressed? LDA Selectpressed ; was select pressed on the previous frame? BNE StillSelect ; if so, we are done. LDX Selectstate ; increment Selectstate by one. INX TXA AND #%00000011 ; there are only four possible Selectstates. STA Selectstate LDA #$01 ; select is pressed now. STA Selectpressed JMP StillSelect ; we are done. NoSelect LDA #$00 ; select is not pressed. STA Selectpressed StillSelect RTS ; ***************************************************************************** HelpCheckSwitches ; Select should go immediately back to splash, controler rl move to next screen ; ***************************************************************************** LDA #$0000 STA PF0 STA PF1 STA PF2 STA COLUPF STA COLUBK LDA SWCHA AND #%11001100 CMP #%11001100 BEQ NoMove LDA #%0000001 STA Selectstate RTS NoMove LDA SWCHB AND #%00000010 BNE HelpStayPut LDA #%0000000 STA Selectstate LDA #%0000001 STA Selectpressed HelpStayPut RTS ; ***************************************************************************** GameCheckSwitches ; Select should go immediately back to splash, controlers to be read elsewhere ; ***************************************************************************** LDA #$0000 STA PF0 STA PF1 STA PF2 STA COLUPF STA COLUBK LDA SWCHB AND #%00000010 BNE GameStayPut LDA #%0000000 STA Selectstate LDA #%0000001 STA Selectpressed GameStayPut RTS ; ***************************************************************************** SplashDrawScreen ; ***************************************************************************** ; *************************************** 0th through 51st scanlines (52 total) LDY #48 TopLines LDA #black STA COLUBK STA COLUPF STA PF0 STA PF1 STA PF2 STA WSYNC DEY ; [0] + 2 BNE TopLines ; [2] + 3 ; ************************************* 53rd through 128th scanlines (76 total) LDY #76 ; [5] + 2 TopSplash DEY ; [54] + 2 TYA ; [56] + 2 LSR ; [58] + 2 divide by 4 LSR ; [60] + 2 TAX ; [62] + 2 STA WSYNC ; [64] LDA TopSplashColorData,X ; [0] + 4 STA COLUPF ; [4] + 3 LDA TopSplashPF0Data,X ; [7] + 4 STA PF0 ; [11] + 3 LDA TopSplashPF1Data,X ; [14] + 4 STA PF1 ; [18] + 3 LDA TopSplashPF2Data,X ; [21] + 4 STA PF2 ; [25] + 3 LDA TopSplashPF3Data,X ; [28] + 4 STA PF0 ; [32] + 3 LDA TopSplashPF4Data,X ; [35] + 4 STA PF1 ; [39] + 3 LDA TopSplashPF5Data,X ; [42] + 4 STA PF2 ; [46] + 3 TYA ; [49] + 2 BNE TopSplash ; [51] + 3 STA WSYNC ; [53] ; ************************************ 129th through 144th scanlines (16 total) LDY #16 MidLines LDA #black STA COLUBK STA COLUPF STA PF0 STA PF1 STA PF2 STA WSYNC DEY ; [0] + 2 BNE MidLines ; [2] + 3 ; ************************************ 145th through 208th scanlines (64 total) LDY #64 ; [5] + 2 LDA Colorcounter ; [7] + 2 STA Temp ; [9] + 3 BaublesSplash DEY ; [57] + 5 TYA ; [62] + 2 LSR ; [64] + 2 divide by 8 LSR ; [66] + 2 LSR ; [68] + 2 TAX ; [70] + 2 STA WSYNC ; [72] LDA Temp ; [0] + 2 STA COLUPF ; [2] + 3 LDA BaublesSplashPF0,X ; [5] + 4 STA PF0 ; [9] + 3 LDA BaublesSplashPF1,X ; [12] + 4 STA PF1 ; [16] + 3 LDA BaublesSplashPF2,X ; [19] + 4 STA PF2 ; [23] + 3 LDA BaublesSplashPF3,X ; [26] + 4 STA PF0 ; [30] + 3 LDA BaublesSplashPF4,X ; [33] + 4 STA PF1 ; [37] + 3 LDA BaublesSplashPF5,X ; [40] + 4 INC Temp ; [44] + 5 STA PF2 ; [49] + 3 TYA ; [52] + 2 BNE BaublesSplash ; [54] + 3 STA WSYNC ; [53] INC Colorcounter ; ************************************ 209th through 244th scanlines (36 total) LDA #black STA COLUBK STA COLUPF STA PF0 STA PF1 STA PF2 STA WSYNC STA WSYNC STA WSYNC STA WSYNC STA WSYNC LDY #28 SelectLoop DEY ; [54] + 2 TYA ; [56] + 2 AND #%11111100 ; [58] + 2 ORA Selectstate ; [60] + 3 TAX ; [63] + 2 STA WSYNC ; [65] LDA SelectDataColor,X ; [0] + 4 STA COLUPF ; [4] + 3 LDA SelectDataPF0,X ; [7] + 4 STA PF0 ; [11] + 3 LDA SelectDataPF1,X ; [14] + 4 STA PF1 ; [18] + 3 LDA SelectDataPF2,X ; [21] + 4 STA PF2 ; [25] + 3 LDA SelectDataPF3,X ; [28] + 4 STA PF0 ; [32] + 3 LDA SelectDataPF4,X ; [35] + 4 STA PF1 ; [39] + 3 LDA SelectDataPF5,X ; [42] + 4 STA PF2 ; [46] + 3 TYA ; [49] + 2 BNE SelectLoop ; [51] + 3 STA WSYNC LDA #black STA COLUPF STA COLUBK STA WSYNC STA WSYNC RTS ; ***************************************************************************** HelpDrawScreen ; ***************************************************************************** ; *************************************** 0th through 51st scanlines (52 total) LDY #52 TopLines LDA #black STA COLUBK STA COLUPF STA PF0 STA PF1 STA PF2 STA WSYNC DEY ; [0] + 2 BNE TopLines ; [2] + 3 ; ************************************ 52nd through 243rd scanlines (192 total) LDA Selectstate AND #%00000010 BNE HelpFirstPage JMP HelpSecondPage HelpFirstPage ; ************************************************************* LDY #168 HFPFirstLoop DEY TYA LSR LSR TAX STA WSYNC LDA HelpPageColors, X STA COLUPF LDA HelpFirstPagePF0, X STA PF0 LDA HelpFirstPagePF1, X STA PF1 LDA HelpFirstPagePF2, X STA PF2 LDA HelpFirstPagePF3, X STA PF0 LDA HelpFirstPagePF4, X STA PF1 LDA HelpFirstPagePF5, X STA PF2 TYA BNE HFPFIrstLoop LDY #28 HFPSecondLoop DEY TYA LSR LSR TAX STA WSYNC LDA HelpPageColors, X STA COLUPF LDA HBottFirstPagePF0, X STA PF0 LDA HBottFirstPagePF1, X STA PF1 LDA HBottFirstPagePF2, X STA PF2 LDA HBottFirstPagePF3, X STA PF0 LDA HBottFirstPagePF4, X STA PF1 LDA HBottFirstPagePF5, X STA PF2 TYA BNE HFPSecondLoop HelpSecondPage ; ************************************************************* LDY #168 HSPFirstLoop DEY TYA LSR LSR TAX STA WSYNC LDA HelpPageColors, X STA COLUPF LDA HelpSecondPagePF0, X STA PF0 LDA HelpSecondPagePF1, X STA PF1 LDA HelpSecondPagePF2, X STA PF2 LDA HelpSecondPagePF3, X STA PF0 LDA HelpSecondPagePF4, X STA PF2 LDA HelpSecondPagePF5, X STA PF3 TYA BNE HSPFIrstLoop LDY #28 HSPFSecondLoop LDA #black STA COLUBK STA COLUPF STA PF0 STA PF1 STA PF2 STA WSYNC DEY ; [0] + 2 BNE HSPFSecondLoop ; [2] + 3 ; ***************************************************************************** RTS ; ***************************************************************************** GameDrawScreen ; ***************************************************************************** ; *************************************** 0th through 51st scanlines (52 total) LDY #48 TopLines LDA #black STA COLUBK STA COLUPF STA PF0 STA PF1 STA PF2 STA WSYNC DEY ; [0] + 2 BNE TopLines ; [2] + 3 ; ***************************************************************************** RTS ; ***************************************************************************** OverScan ; ***************************************************************************** LDX #30 KillLines STA WSYNC DEX BNE KillLines RTS ; ***************************************************************************** ; Graphics Data ; ***************************************************************************** org $FC00 ; 19 x 7 + 6 x 7 = 175 bytes in this page so far, max = 256 HBottFirstPagePF0 .byte $02, $04, $06, $08, $0A, $0C, $0E HBottFirstPagePF1 .byte $02, $04, $06, $08, $0A, $0C, $0E HBottFirstPagePF2 .byte $02, $04, $06, $08, $0A, $0C, $0E HBottFirstPagePF3 .byte $02, $04, $06, $08, $0A, $0C, $0E HBottFirstPagePF4 .byte $02, $04, $06, $08, $0A, $0C, $0E HBottFirstPagePF5 .byte $02, $04, $06, $08, $0A, $0C, $0E TopSplashPF0Data ; 19 bytes .byte %10000000, %10000000, %10000000, %10000000, %10000000, %00000000 .byte %00000000, %00000000, %00000000, %00000000, %00000000, %00000000 .byte %00000000, %00000000, %00000000, %00000000, %00000000, %00000000 .byte %00000000 TopSplashPF1Data ; 19 bytes .byte %00010101, %10011001, %01010101, %01010101, %10011001, %00000000 .byte %00000000, %00000000, %00010001, %00010000, %00101000, %00101000 .byte %01000101, %00000000, %01110111, %01000100, %01100100, %01000100 .byte %01110100 TopSplashPF2Data ; 19 bytes .byte %10011011, %10100000, %10010001, %10001000, %10110011, %00000000 .byte %00000000, %00000000, %00111011, %01000001, %00110001, %00001001 .byte %01110011, %00000000, %00101110, %10100010, %01100110, %10100010 .byte %00101110 TopSplashPF3Data ; 19 bytes .byte %10110000, %10000000, %10010000, %10000000, %10110000, %00000000 .byte %00000000, %00000000, %01110000, %00100000, %00100000, %00100000 .byte %01110000, %00000000, %10010000, %10000000, %10000000, %10000000 .byte %11010000 TopSplashPF4Data ; 19 bytes .byte %00100100, %00100100, %01100100, %10100100, %00101110, %00000000 .byte %00000000, %00000000, %01100100, %10010100, %10010101, %10010110 .byte %01100100, %00000000, %00101001, %00110010, %00101010, %00101010 .byte %10110001 TopSplashPF5Data ; 19 bytes .byte %00010011, %00000100, %00000010, %00010001, %00000110, %00000000 .byte %00000000, %00000000, %00000010, %00000011, %00000010, %00000010 .byte %00000010, %00000000, %00000001, %00000010, %00000010, %00000010 .byte %00000001 TopSplashColorData ; 19 bytes .byte $38, $36, $34, $32, $30, $00, $00, $00, $8A, $88 .byte $86, $84, $82, $00, $8A, $88, $86, $84, $82 BaublesSplashPF0 ; 7 bytes .byte %00000000, %11100000, %00100000, %00100000 .byte %11100000, %00100000, %00100000, %11100000 BaublesSplashPF1 ; 7 bytes .byte %00000000, %00100010, %10100010, %10100010 .byte %00111110, %10100010, %10010100, %00001000 BaublesSplashPF2 ; 7 bytes .byte %00000000, %11001110, %01010001, %01010001 .byte %11010001, %01010001, %01010001, %11010001 BaublesSplashPF3 ; 7 bytes .byte %00000000, %10010000, %10100000, %10100000 .byte %10010000, %10100000, %10100000, %10010000 BaublesSplashPF4 ; 7 bytes .byte %00000000, %11101111, %00001000, %00001000 .byte %00001110, %00001000, %00001000, %00001111 BaublesSplashPF5 ; 7 bytes .byte %00000000, %00011100, %00100010, %00100000 .byte %00011100, %00000010, %00100010, %00011100 ; ***************************************************************************** org $FD00 ; 7 x 28 + 42 = 238 bytes in this page so far, max = 256 HelpPageColors ; 6 x 7 = 42 bytes .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E SelectDataColor .byte $0E, $0E, $0E, $0E .byte $0C, $0C, $0C, $0C .byte $0A, $0A, $0A, $0A .byte $08, $08, $08, $08 .byte $06, $06, $06, $06 .byte $04, $04, $04, $04 .byte $02, $02, $02, $02 SelectDataPF0 ; 4 x 7 = 28 bytes ; 1P STK 2P STK 1P PDL HELP .byte %00000000, %00000000, %00000000, %00000000 .byte %01100000, %01100000, %01100000, %01100000 .byte %01000000, %01000000, %01000000, %01000000 .byte %01100000, %01100000, %01100000, %01100000 .byte %00100000, %00100000, %00100000, %00100000 .byte %01100000, %01100000, %01100000, %01100000 .byte %00000000, %00000000, %00000000, %00000000 SelectDataPF1 ; 4 x 7 = 28 bytes .byte %00000000, %00000000, %00000000, %00000000 .byte %11011010, %11011010, %11011010, %11011010 .byte %10010000, %10010000, %10010000, %10010000 .byte %11010000, %11010000, %11010000, %11010000 .byte %10010010, %10010010, %10010010, %10010010 .byte %11010000, %11010000, %11010000, %11010000 .byte %00000000, %00000000, %00000000, %00000000 SelectDataPF2 ; 4 x 7 = 28 bytes .byte %00000000, %00000000, %00000000, %00000000 .byte %00010111, %00010111, %00010111, %10110101 .byte %00010010, %00010010, %00010010, %10010101 .byte %00110010, %00110100, %00110010, %10110111 .byte %01010011, %01010101, %01010011, %10010101 .byte %00110010, %00110010, %00110010, %10110101 .byte %00000000, %00000000, %00000000, %00000000 SelectDataPF3 ; 4 x 7 = 28 bytes .byte %00000000, %00000000, %00000000, %00000000 .byte %10110000, %10110000, %10110000, %01010000 .byte %10010000, %10010000, %10010000, %01000000 .byte %10010000, %10010000, %10010000, %11000000 .byte %10010000, %10010000, %10010000, %01000000 .byte %10010000, %10010000, %10010000, %11000000 .byte %00000000, %00000000, %00000000, %00000000 SelectDataPF4 ; 4 x 7 = 28 bytes .byte %00010000, %00010000, %00010000, %00000000 .byte %01010110, %01010110, %01010100, %00000000 .byte %01010010, %01010010, %01010100, %00000000 .byte %10010110, %10010110, %10010110, %00000000 .byte %01010100, %01010100, %01010101, %10000000 .byte %10010110, %10010110, %10010110, %00000000 .byte %00010000, %00010000, %00010000, %00000000 SelectDataPF5 ; 4 x 7 = 28 bytes .byte %00000000, %00000000, %00000000, %00000000 .byte %01010010, %01010010, %01100110, %00000000 .byte %01010010, %01010010, %00101010, %00000000 .byte %00110010, %00110010, %00101010, %00000000 .byte %01010010, %01010010, %00101010, %00000000 .byte %01010111, %01010111, %00100110, %00000000 .byte %00000000, %00000000, %00000000, %00000000 ; ***************************************************************************** org $FE00 ; 0 bytes in this page so far, max = 256 HelpSecondPagePF0 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpSecondPagePF1 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpSecondPagePF2 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpSecondPagePF3 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpSecondPagePF4 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpSecondPagePF5 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E ; ***************************************************************************** org $FF00 ; 0 bytes in this page so far, max = 252 HelpFirstPagePF0 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpFirstPagePF1 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpFirstPagePF2 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpFirstPagePF3 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpFirstPagePF4 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E HelpFirstPagePF5 .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E .byte $02, $04, $06, $08, $0A, $0C, $0E ; ***************************************************************************** org $FFFC .word Start .word Start org $FF00
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [stella] Outlaw is driving me n, Roger Williams | Thread | Re: [stella] Help! Technical probl, B. Watson |
Re: [stella] Outlaw is driving me n, Roger Williams | Date | Re: [stella] First steps, Glenn Saunders |
Month |