SHOW:
|
|
- or go back to the newest paste.
1 | ;HEADER, VARIABLE, AND CONSTANTS HERE | |
2 | ;----------------------------------------------------------- | |
3 | ;; DECLARE CONSTANTS | |
4 | ;----------------------------------------------------------- | |
5 | STATETITLE = $00 ; displaying title screen | |
6 | STATEPLAYING = $01 ; begin game | |
7 | STATEGAMEOVER = $02 ; displaying game over screen | |
8 | STATEPAUSE = $03 ; display pause screen | |
9 | ;MORE CONSTANTS | |
10 | ||
11 | ;RESET, CLRMEM, AND VLANKS | |
12 | ||
13 | ;----------------------------------------------------------- | |
14 | ;---------------Load Some Initial Values-------------------- | |
15 | ;----------------------------------------------------------- | |
16 | JSR ResetValues | |
17 | ||
18 | ;LOAD PALETTES | |
19 | ||
20 | ;----------------------------------------------------------- | |
21 | ;---------------------LOAD BACKGROUND----------------------- | |
22 | ;----------------------------------------------------------- | |
23 | LDA #STATETITLE | |
24 | STA gamestate | |
25 | JSR LoadBackground | |
26 | ;LOAD ATTRIBUTES (THIS WILL BE MOVING ONCE I GET EVERYTHING WORKING) | |
27 | ||
28 | LDA #%10010000 ; enable NMI, sprites from Pattern Table 0, background from Pattern Table 1 | |
29 | STA $2000 | |
30 | JSR EnablePPU | |
31 | ||
32 | ;----------------------------------------------------------- | |
33 | ;-----------------------NMI ROUTINE------------------------- | |
34 | ;----------------------------------------------------------- | |
35 | NMI: | |
36 | LDA #$00 | |
37 | STA $2003 ; set the low byte (00) of the RAM address | |
38 | ||
39 | LDA #$02 | |
40 | STA $4014 ; set the high byte (02) of the RAM address, start the transfer | |
41 | ||
42 | ;SOME NMI CODE | |
43 | JSR UpdateColor ;;Update the Sprite Palette Color for new beer color | |
44 | ;SOME NMI CODE | |
45 | ||
46 | LDA #$00 ;;tell the ppu there is no background scrolling | |
47 | STA $2005 | |
48 | STA $2005 | |
49 | ||
50 | ;;;;;;;;;;;;;;;;;;GAME ENGINE;;;;;;;;;;;;;;;;;;;;;;;;; | |
51 | ||
52 | GameEngine: | |
53 | LDA gamestate | |
54 | CMP #STATETITLE | |
55 | BEQ EngineTitle ;;game is displaying title screen | |
56 | ||
57 | LDA gamestate | |
58 | CMP #STATEGAMEOVER | |
59 | BEQ EngineGameOver ;;game is displaying ending screen | |
60 | ||
61 | LDA gamestate | |
62 | CMP #STATEPLAYING | |
63 | BEQ EnginePlaying ;;game is playing | |
64 | ||
65 | LDA gamestate | |
66 | CMP #STATEPAUSE | |
67 | BEQ EnginePause ;;game is paused | |
68 | ||
69 | GameEngineDone: | |
70 | RTI | |
71 | ||
72 | EngineTitle: | |
73 | LDA #$01 | |
74 | STA ChangeColor | |
75 | LDA #$29 | |
76 | STA attribute_RAM | |
77 | ||
78 | LDA buttons1_pressed ; player 1 - start | |
79 | AND #%00010000 ; only look at bit 5 | |
80 | BEQ GameEngineDone | |
81 | JSR StartEnginePlaying | |
82 | ;SOME CODE TO RESET VARIABLES | |
83 | ||
84 | JMP GameEngineDone | |
85 | ||
86 | ;;;;;;;;; | |
87 | ||
88 | EngineGameOver: | |
89 | LDA buttons1_pressed ; player 1 - start | |
90 | AND #%00010000 ; only look at bit 5 | |
91 | BEQ GameEngineDone | |
92 | JSR StartTitle | |
93 | ||
94 | JMP GameEngineDone | |
95 | ||
96 | ;;;;;;;;;;; | |
97 | ||
98 | EnginePlaying: | |
99 | ;SOME GAME PLAY CODE | |
100 | JSR handle_input | |
101 | JSR CheckGameOver ;Go to Game Over Subroutine to see if the clock is 00, if yes, then display game over screen and disable sprites | |
102 | EnginePlayingDone: | |
103 | JMP GameEngineDone | |
104 | ||
105 | ;;;;;;;;;;;;; | |
106 | ||
107 | EnginePause: | |
108 | LDA buttons1_pressed ; player 1 - start | |
109 | AND #%00010000 ; only look at bit 5 | |
110 | BEQ GameEngineDone | |
111 | LDA #STATEPLAYING | |
112 | STA gamestate | |
113 | ||
114 | JMP GameEngineDone | |
115 | ||
116 | ||
117 | ;----------------------------------------------------------- | |
118 | ;------------------START ENGINE PLAYING--------------------- | |
119 | ;----------------------------------------------------------- | |
120 | StartEnginePlaying: | |
121 | ||
122 | LDA #STATEPLAYING | |
123 | STA gamestate | |
124 | JSR DisablePPU | |
125 | JSR LoadBackground | |
126 | JSR EnablePPU | |
127 | ||
128 | StartEnginePlayingDone: | |
129 | RTS | |
130 | ||
131 | ;----------------------------------------------------------- | |
132 | ;-----------------------START TITLE------------------------- | |
133 | ;----------------------------------------------------------- | |
134 | StartTitle: | |
135 | ||
136 | LDA #STATETITLE | |
137 | STA gamestate | |
138 | JSR DisablePPU | |
139 | JSR LoadBackground | |
140 | JSR EnablePPU | |
141 | ||
142 | StartTitleDone: | |
143 | RTS | |
144 | ||
145 | ;----------------------------------------------------------- | |
146 | ;----------------------GAME OVER---------------------------- | |
147 | ;----------------------------------------------------------- | |
148 | CheckGameOver: | |
149 | LDA time1 | |
150 | BNE CheckGameOverDone | |
151 | ||
152 | LDA time10 | |
153 | BNE CheckGameOverDone | |
154 | ||
155 | LDA #STATEGAMEOVER | |
156 | STA gamestate | |
157 | JSR DisablePPU | |
158 | JSR LoadBackground | |
159 | JSR EnablePPU_nosprites | |
160 | CheckGameOverDone: | |
161 | RTS | |
162 | ||
163 | ;----------------------------------------------------------- | |
164 | ;----------------------UPDATE COLOR------------------------- | |
165 | ;----------------------------------------------------------- | |
166 | UpdateColor: | |
167 | LDA ChangeColor ;make a variable in zero page and set it to #$01 whenever you want this color to change. | |
168 | CMP #$01 ;if it's not #$01, ignore this subroutine and go to End. | |
169 | BNE .End | |
170 | LDA $2002 ;changing the palette (and background tiles) | |
171 | LDA #$3F | |
172 | STA $2006 | |
173 | LDA #$11 ;address of specific color you want to change | |
174 | STA $2006 | |
175 | LDA attribute_RAM ;value of new color you want to change it to. | |
176 | STA $2007 | |
177 | LDA #$00 | |
178 | STA ChangeColor | |
179 | .End: | |
180 | RTS | |
181 | ||
182 | ;----------------------------------------------------------- | |
183 | ;---------------------LOAD BACKGROUND----------------------- | |
184 | ;----------------------------------------------------------- | |
185 | LoadBackground: | |
186 | LDA $2002 | |
187 | LDA #$20 | |
188 | STA $2006 ; write the high byte of $2000 address | |
189 | LDA #$00 | |
190 | STA $2006 ; write the low byte of $2000 address | |
191 | ;;;;;; | |
192 | LDA gamestate | |
193 | CMP #$02 | |
194 | BEQ LoadGameOverBackground | |
195 | ||
196 | LDA gamestate | |
197 | CMP #$01 | |
198 | BEQ LoadMainBackground | |
199 | ||
200 | LDA gamestate | |
201 | CMP #$00 | |
202 | BEQ LoadTitleBackground | |
203 | ||
204 | JMP LoadBackGroundDone | |
205 | ||
206 | LoadGameOverBackground: | |
207 | LDA #LOW(GameOverScreen) | |
208 | STA AddrLow | |
209 | LDA #HIGH(GameOverScreen) | |
210 | STA AddrHigh | |
211 | JMP StartBGLoading | |
212 | ||
213 | LoadMainBackground: | |
214 | LDA #LOW(MainScreen) | |
215 | STA AddrLow | |
216 | LDA #HIGH(MainScreen) | |
217 | STA AddrHigh | |
218 | JMP StartBGLoading | |
219 | ||
220 | LoadTitleBackground: | |
221 | LDA #LOW(TitleScreen) | |
222 | STA AddrLow | |
223 | LDA #HIGH(TitleScreen) | |
224 | STA AddrHigh | |
225 | JMP StartBGLoading | |
226 | ||
227 | StartBGLoading: | |
228 | LDX #$04 ; Loop X 4 times | |
229 | LDY #$00 ; Loop Y 256 times | |
230 | LoadBackgroundsLoop: | |
231 | LDA [AddrLow],y | |
232 | STA $2007 | |
233 | INY | |
234 | BNE LoadBackgroundsLoop | |
235 | ; Outer loop | |
236 | INC AddrHigh ; increment high byte of address backg to next 256 byte chunk | |
237 | DEX ; one chunk done so X = X - 1. | |
238 | BNE LoadBackgroundsLoop ; if X isn't zero, do again | |
239 | LoadBackGroundDone: | |
240 | RTS | |
241 | ||
242 | ;----------------------------------------------------------- | |
243 | ;----------------------RESET VALUES--------------------------- | |
244 | ;----------------------------------------------------------- | |
245 | ResetValues: | |
246 | LDA #$29 | |
247 | STA attribute_RAM | |
248 | LDA #$00 | |
249 | STA ChangeColor | |
250 | ;OTHER VARIABLES | |
251 | RTS | |
252 | ||
253 | ;----------------------------------------------------------- | |
254 | ;----------------------PPU---------------------------------- | |
255 | ;----------------------------------------------------------- | |
256 | EnablePPU: | |
257 | LDA #%00011110 ; enable sprites, enable background, no clipping on left side | |
258 | STA $2001 | |
259 | RTS | |
260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
261 | ||
262 | EnablePPU_nosprites: | |
263 | LDA #%00001110 ; Disable sprites, enable background, no clipping on left side | |
264 | STA $2001 | |
265 | RTS | |
266 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
267 | ||
268 | DisablePPU: | |
269 | LDA #$00 | |
270 | STA $2001 | |
271 | RTS |