Skip to content

Commit 46709b2

Browse files
authored
Merge pull request #3 from c128lib/intoinside/issue2
Support for sprites
2 parents c728967 + 0b90544 commit 46709b2

3 files changed

Lines changed: 738 additions & 0 deletions

File tree

lib/common.asm

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,17 @@ upstartEnd:
144144
}
145145
}
146146
}
147+
148+
/**
149+
* @brief Generates the negative value for the argument
150+
*
151+
* @param[in] value Value to negated
152+
*
153+
* @since 1.2.0
154+
*/
155+
.function neg(value) {
156+
.return value ^ $FF
157+
}
158+
.assert "neg($00) gives $FF", neg($00), $FF
159+
.assert "neg($FF) gives $00", neg($FF), $00
160+
.assert "neg(%10101010) gives %01010101", neg(%10101010), %01010101

lib/vic2-global.asm

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,3 +157,191 @@
157157
* @since 1.0.0
158158
*/
159159
.macro @c128lib_SetScreenMemoryAndBitmapPointer(config) { SetScreenMemoryAndBitmapPointer(config) }
160+
161+
/**
162+
* @brief Sets X position of given sprite (uses sprite MSB register if necessary)
163+
*
164+
* @param[in] spriteNo Number of the sprite to move
165+
* @param[in] x X position of sprite
166+
*
167+
* @remark Register .A will be modified.
168+
* @remark Flags N and Z will be affected.
169+
*
170+
* @since 1.2.0
171+
*/
172+
.macro c128lib_SetSpriteXPosition(spriteNo, x) { SetSpriteXPosition(spriteNo, x) }
173+
174+
/**
175+
* @brief Sets X position of given sprite (uses sprite MSB register if necessary)
176+
* using shadow registers
177+
*
178+
* @param[in] spriteNo Number of the sprite to move
179+
* @param[in] x X position of sprite
180+
*
181+
* @remark Register .A will be modified.
182+
* @remark Flags N and Z will be affected.
183+
*
184+
* @since 1.2.0
185+
*/
186+
.macro c128lib_SetSpriteXPositionWithShadow(spriteNo, x) { SetSpriteXPositionWithShadow(spriteNo, x) }
187+
188+
/**
189+
* @brief Sets y position of given sprite
190+
*
191+
* @param[in] spriteNo Number of the sprite to move
192+
* @param[in] y Y position of sprite
193+
*
194+
* @remark Register .A will be modified.
195+
* @remark Flags N and Z will be affected.
196+
*
197+
* @since 1.2.0
198+
*/
199+
.macro c128lib_SetSpriteYPosition(spriteNo, y) { SetSpriteYPosition(spriteNo, y) }
200+
201+
/**
202+
* @brief Sets y position of given sprite using shadow registers
203+
*
204+
* @param[in] spriteNo Number of the sprite to move
205+
* @param[in] y Y position of sprite
206+
*
207+
* @remark Register .A will be modified.
208+
* @remark Flags N and Z will be affected.
209+
*
210+
* @since 1.2.0
211+
*/
212+
.macro c128lib_SetSpriteYPositionWithShadow(spriteNo, y) { SetSpriteYPositionWithShadow(spriteNo, y) }
213+
214+
/**
215+
* @brief Sets x and y position of given sprite
216+
*
217+
* @param[in] spriteNo Number of the sprite to move
218+
* @param[in] x X position of sprite
219+
* @param[in] y Y position of sprite
220+
*
221+
* @remark Register .A will be modified.
222+
* @remark Flags N and Z will be affected.
223+
*
224+
* @since 1.2.0
225+
*/
226+
.macro c128lib_SetSpritePosition(spriteNo, x, y) { SetSpritePosition(spriteNo, x, y) }
227+
228+
/**
229+
* @brief Sets x and y position of given sprite using shadow registers
230+
*
231+
* @param[in] spriteNo Number of the sprite to move
232+
* @param[in] x X position of sprite
233+
* @param[in] y Y position of sprite
234+
*
235+
* @remark Register .A will be modified.
236+
* @remark Flags N and Z will be affected.
237+
*
238+
* @since 1.2.0
239+
*/
240+
.macro c128lib_SetSpritePositionWithShadow(spriteNo, x, y) { SetSpritePositionWithShadow(spriteNo, x, y) }
241+
242+
/**
243+
* @brief Define sprite movement
244+
*
245+
* @param[in] spriteNo Number of the sprite to set movement
246+
* @param[in] speed Speed of sprite
247+
* @param[in] quadrant Determines main direction of sprite (use SPRITE_MAIN_DIR_* labels)
248+
* @param[in] deltaX move sprite on X each interrupt
249+
* @param[in] deltaY move sprite on Y each interrupt
250+
*
251+
* @remark Register .A will be modified.
252+
* @remark Flags N and Z will be affected.
253+
*
254+
* @since 1.2.0
255+
*/
256+
.macro c128lib_SpriteMove(spriteNo, speed, quadrant, deltaX, deltaY) { SpriteMove(spriteNo, speed, quadrant, deltaX, deltaY) }
257+
258+
/**
259+
* @brief Enable one or more sprite, preserving status of other sprites.
260+
*
261+
* @param[in] mask Sprite mask
262+
* (use SPRITE_MASK_* eventually with | to enable more sprite at once)
263+
*
264+
* @remark Register .A will be modified.
265+
* @remark Flags N and Z will be affected.
266+
*
267+
* @since 1.2.0
268+
*/
269+
.macro c128lib_SpriteEnable(mask) { SpriteEnable(mask) }
270+
271+
/**
272+
* @brief Disable one or more sprite, preserving status of other sprites.
273+
*
274+
* @param[in] mask Sprite mask
275+
* (use SPRITE_MASK_* eventually with | to disable more sprite at once)
276+
*
277+
* @remark Register .A will be modified.
278+
* @remark Flags N and Z will be affected.
279+
*
280+
* @since 1.2.0
281+
*/
282+
.macro c128lib_SpriteDisable(mask) { SpriteDisable(mask) }
283+
284+
/**
285+
* @brief Enable multicolor setting for one or more sprite, preserving status of other sprites.
286+
*
287+
* @param[in] mask Sprite mask
288+
* (use SPRITE_MASK_* eventually with | to set multicolor on more sprite at once)
289+
*
290+
* @remark Register .A will be modified.
291+
* @remark Flags N and Z will be affected.
292+
*
293+
* @since 1.2.0
294+
*/
295+
.macro c128lib_SpriteEnableMulticolor(mask) { SpriteEnableMulticolor(mask) }
296+
297+
/**
298+
* @brief Disable multicolor setting for one or more sprite, preserving status of other sprites.
299+
*
300+
* @param[in] mask Sprite mask
301+
* (use SPRITE_MASK_* eventually with | to unset multicolor on more sprite at once)
302+
*
303+
* @remark Register .A will be modified.
304+
* @remark Flags N and Z will be affected.
305+
*
306+
* @since 1.2.0
307+
*/
308+
.macro c128lib_SpriteDisableMulticolor(mask) { SpriteDisableMulticolor(mask) }
309+
310+
/**
311+
* @brief Disable multicolor setting for one or more sprite.
312+
*
313+
* @param[in] spriteNo Number of the sprite to set movement
314+
* @param[in] color Color to set
315+
*
316+
* @remark Register .A will be modified.
317+
* @remark Flags N and Z will be affected.
318+
*
319+
* @since 1.2.0
320+
*/
321+
.macro c128lib_SpriteColor(spriteNo, color) { SpriteColor(spriteNo, color) }
322+
323+
/**
324+
* @brief Set sprite multi color 0
325+
*
326+
* @param[in] color Color to set
327+
*
328+
* @note Use c128lib_SpriteMultiColor0 in vic2-global.asm
329+
*
330+
* @remark Register .A will be modified.
331+
* @remark Flags N and Z will be affected.
332+
*
333+
* @since 1.2.0
334+
*/
335+
.macro c128lib_SpriteMultiColor0(color) { SpriteMultiColor0(color) }
336+
337+
/**
338+
* @brief Set sprite multi color 1
339+
*
340+
* @param[in] color Color to set
341+
*
342+
* @remark Register .A will be modified.
343+
* @remark Flags N and Z will be affected.
344+
*
345+
* @since 1.2.0
346+
*/
347+
.macro c128lib_SpriteMultiColor1(color) { SpriteMultiColor1(color) }

0 commit comments

Comments
 (0)