Created
September 26, 2019 11:40
-
-
Save msx80/c2dc537991d3dd7a457e63794e781c42 to your computer and use it in GitHub Desktop.
non working irq thingie
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// the emulator supports only 16 sprites: | |
const byte SPRITE_COUNT = 16 | |
array(vera_sprite_data) sprites[SPRITE_COUNT] | |
array(sbyte) vx[SPRITE_COUNT] | |
array(sbyte) vy[SPRITE_COUNT] | |
import random | |
import joy | |
import x16_joy | |
word x16_irq_address @$0314 | |
volatile byte vsy | |
void irqf() | |
{ | |
vsy = 0 | |
// return from irq | |
asm { | |
PLA | |
TAY | |
PLA | |
TAX | |
PLA | |
RTI | |
} | |
} | |
void setup() | |
{ | |
pointer.vera_sprite_data p | |
byte i,j | |
word x,y | |
init_rand_seed() | |
vera_poke(VERA_COMPOSER_CTRL+1,64) // 44 should give 220x165 | |
vera_poke(VERA_COMPOSER_CTRL+2,64) | |
// make balls striped | |
for i,0,parallelto,$1f { | |
for j,1,parallelto,$f { | |
sprite_bitmap[nonet(j<<5) + i] *= j | |
} | |
} | |
for i,0,paralleluntil,SPRITE_COUNT { | |
p = sprites[i].pointer | |
// bitmap is at $10000: | |
p->address = $800 | |
p->x.lo = (i*8)%%128 | |
p->x.hi = 0 | |
p->y = (i*4)%%128 | |
// no collision, above all layers, no flipping | |
p->ctrl0 = $c | |
// 32×32 pixels, different palette offsets | |
p->ctrl1 = $0 | (i & $f) | |
vx[i] = 1 - (rand() & 2) | |
vy[i] = 1 - (rand() & 2) | |
} | |
vera_upload_large($10000, sprite_bitmap.addr, sizeof(sprite_bitmap)) | |
vera_upload_large(VERA_SPRITES, sprites.addr, sizeof(sprites)) | |
// enable sprites: | |
vera_poke(VERA_SPRITE_CTRL, 1) | |
} | |
void main () { | |
pointer.vera_sprite_data p | |
byte i,j | |
word x,y | |
setup() | |
asm {sei} | |
//irq_pointer = irqf.addr | |
x16_irq_address=irqf.addr | |
asm {cli} | |
while(true) { | |
vsy += 1 | |
while(vsy!=0) {} | |
for i,1,paralleluntil,SPRITE_COUNT { | |
p = sprites[i].pointer | |
x = p->x | |
y = p->y | |
x += vx[i] | |
y += vy[i] | |
p->x = x | |
p->y = y | |
if x == 0 { vx[i] = 1 } | |
if x >= 250-32 { vx[i] = 0-1 } | |
if y == 0 { vy[i] = 1 } | |
if y >= 250-32 { vy[i] = 0-1 } | |
} | |
vera_upload_large(VERA_SPRITES, sprites.addr, sizeof(sprites)) | |
read_joy1() | |
p = sprites[0].pointer | |
p->x = p->x + input_dx | |
p->y = p->y + input_dy | |
} | |
} | |
array sprite_bitmap = [ | |
$01,$11,$11,$10, | |
$10,$00,$00,$01, | |
$10,$10,$01,$01, | |
$10,$00,$00,$01, | |
$10,$10,$01,$01, | |
$10,$11,$11,$01, | |
$11,$00,$00,$11, | |
$01,$11,$11,$10, | |
$00,$00,$00,$01,$11,$11,$11,$11,$11,$11,$11,$11,$10,$00,$00,$00, | |
$00,$00,$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00,$00,$00, | |
$00,$00,$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10,$00,$00, | |
$00,$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00,$00, | |
$00,$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10,$00, | |
$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00, | |
$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00, | |
$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10, | |
$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10, | |
$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11, | |
$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10, | |
$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10, | |
$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10, | |
$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00, | |
$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00, | |
$00,$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10,$00, | |
$00,$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00,$00, | |
$00,$00,$01,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$10,$00,$00, | |
$00,$00,$00,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$00,$00,$00, | |
$00,$00,$00,$01,$11,$11,$11,$11,$11,$11,$11,$11,$10,$00,$00,$00, | |
$00,$00,$00,$00,$01,$11,$11,$11,$11,$11,$11,$10,$00,$00,$00,$00, | |
$00,$00,$00,$00,$00,$00,$11,$11,$11,$11,$00,$00,$00,$00,$00,$00 | |
] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment