Serguei2 Posted December 18, 2018 Share Posted December 18, 2018 (edited) I can't manage to make pressing buttons to work. #include <coleco.h>#include <getput1.h> const byte gtsNAME[] = { 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0x85, 0x20, 0xFF}; const byte gtsPATTERN[] = { 0xFE, 0x00, 0xFE, 0x00, 0x89, 0x00, 0x01, 0x1C, 0x38, 0x82, 0x18, 0x02, 0x00, 0x18, 0x18, 0x82, 0x66, 0x85, 0x00, 0x21, 0x44, 0xFE, 0x44, 0x44, 0xFE, 0x44, 0x00, 0x18, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x18, 0x00, 0xFF, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0xFF, 0x3C, 0x66, 0x3C, 0x38, 0x67, 0x66, 0x3F, 0x00, 0x06, 0x0C, 0x18, 0x84, 0x00, 0x01, 0x0C, 0x18, 0x82, 0x30, 0x04, 0x18, 0x0C, 0x00, 0x30, 0x18, 0x82, 0x0C, 0x08, 0x18, 0x30, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x82, 0x00, 0x81, 0x18, 0x02, 0x7E, 0x18, 0x18, 0x86, 0x00, 0x81, 0x18, 0x00, 0x30, 0x82, 0x00, 0x00, 0x7E, 0x88, 0x00, 0x81, 0x18, 0x81, 0x00, 0x10, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x3C, 0x66, 0xCE, 0xD6, 0xE6, 0xCC, 0x78, 0x00, 0x18, 0x38, 0x83, 0x18, 0x2C, 0x1C, 0x30, 0x0E, 0x1E, 0x36, 0x06, 0xFC, 0xC0, 0xFE, 0x00, 0x0E, 0x1E, 0x36, 0x06, 0x3C, 0x86, 0xFE, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xFE, 0x06, 0x06, 0x00, 0x1E, 0x3E, 0x70, 0xE0, 0xFC, 0x0E, 0xFE, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xDE, 0xF2, 0xFE, 0x00, 0x7E, 0xC6, 0x0C, 0x82, 0x18, 0x18, 0x1C, 0x30, 0x1E, 0x3E, 0x66, 0x66, 0xFC, 0xC6, 0xFE, 0x00, 0x3C, 0x66, 0xCE, 0xFE, 0x06, 0x0C, 0x38, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x82, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x0E, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0E, 0x82, 0x00, 0x02, 0x7E, 0x00, 0x7E, 0x82, 0x00, 0x0F, 0x70, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x70, 0x00, 0x1E, 0x3E, 0x66, 0x06, 0x18, 0x18, 0x00, 0x18, 0x87, 0x00, 0x38, 0x0E, 0x1E, 0x36, 0x66, 0xFE, 0xC6, 0xC6, 0x00, 0x0E, 0x1E, 0x26, 0x66, 0xFC, 0xC6, 0xFE, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xC0, 0xC2, 0xFE, 0x00, 0xE0, 0xF0, 0xD8, 0xCC, 0xC6, 0xCE, 0xFC, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xFC, 0xC0, 0xFE, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xFC, 0xC0, 0xC0, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xCE, 0xC2, 0xFE, 0x00, 0x26, 0x82, 0x66, 0x05, 0xFE, 0xC6, 0xC6, 0x00, 0x1C, 0x78, 0x83, 0x18, 0x1D, 0x1C, 0x30, 0x0E, 0x1C, 0x0C, 0x0C, 0x4C, 0xCC, 0xFE, 0x00, 0x26, 0x66, 0x6C, 0x78, 0xFC, 0xCE, 0xC6, 0x00, 0x70, 0xE0, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x46, 0xEE, 0xFE, 0xD6, 0x82, 0xC6, 0x32, 0x00, 0x42, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, 0x1C, 0x3E, 0x66, 0xC6, 0xC6, 0xCC, 0x78, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xFC, 0xC0, 0xC0, 0x00, 0x1C, 0x3E, 0x66, 0xC6, 0xD6, 0xDC, 0x77, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xF8, 0xCC, 0xC6, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xFE, 0x06, 0xFE, 0x00, 0x7E, 0xFC, 0x83, 0x30, 0x02, 0x38, 0x60, 0x26, 0x82, 0x66, 0x04, 0xE6, 0xC6, 0xFE, 0x00, 0x26, 0x82, 0x66, 0x26, 0xE6, 0x6C, 0x38, 0x00, 0x62, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC4, 0x00, 0x26, 0x66, 0xEC, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x26, 0x66, 0xEC, 0x38, 0x18, 0x18, 0x1C, 0x30, 0x3E, 0x66, 0xCC, 0x18, 0x32, 0x66, 0xFE, 0x00, 0xFF, 0xE0, 0xE0, 0x84, 0x80, 0x00, 0xFF, 0x86, 0x00, 0x02, 0xFF, 0x07, 0x07, 0x84, 0x01, 0x87, 0x80, 0x87, 0x01, 0x00, 0x00, 0x86, 0xFE, 0x87, 0x7F, 0x87, 0xFE, 0x00, 0xFF, 0x86, 0xC0, 0x00, 0xFF, 0x86, 0x03, 0x86, 0x80, 0x00, 0xFF, 0x86, 0x01, 0x88, 0xFF, 0x00, 0x00, 0x85, 0x7F, 0x81, 0x00, 0x85, 0xFE, 0x81, 0x00, 0x0A, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x7E, 0x7E, 0x00, 0x86, 0x7E, 0x00, 0x00, 0x82, 0x7E, 0x81, 0x00, 0x86, 0x7F, 0x82, 0x03, 0x00, 0xFF, 0x83, 0x01, 0x82, 0xC0, 0x00, 0xFF, 0x83, 0x80, 0x00, 0xFF, 0x86, 0x80, 0x00, 0xFF, 0x86, 0x01, 0x97, 0xFF, 0x00, 0x00, 0x85, 0x7F, 0x81, 0x00, 0x85, 0xFE, 0x0A, 0x00, 0xF7, 0xB7, 0xB5, 0xBD, 0xBD, 0xED, 0xEF, 0xEF, 0x00, 0x40, 0x85, 0x00, 0x87, 0xFF, 0x81, 0x00, 0x83, 0x3C, 0x81, 0x00, 0x84, 0x80, 0x81, 0xE0, 0x00, 0xFF, 0x86, 0x00, 0x00, 0xFF, 0x84, 0x01, 0x81, 0x07, 0x00, 0xFF, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x97, 0x00, 0xFF}; const byte gtsCOLOR[] = { 0xFE, 0x41, 0xFC, 0x41, 0x83, 0x41, 0x87, 0x61, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xD2, 0x41, 0xA7, 0xA1, 0x98, 0x51, 0x8E, 0x5F, 0x8F, 0x51, 0x87, 0x11, 0x8F, 0x61, 0x97, 0x81, 0x87, 0xA1, 0x82, 0x5F, 0x84, 0x51, 0x82, 0x5F, 0x94, 0x51, 0x87, 0x71, 0x87, 0x21, 0x87, 0xE1, 0x8F, 0x41, 0x87, 0xBA, 0x87, 0x96, 0x87, 0xB1, 0x9F, 0xA1, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0x97, 0x41, 0xFF}; void nmi(void) {} void main(void){ screen_mode_2_text(); paper(0xc); upload_default_ascii(NORMAL); duplicate_pattern(); rle2vram (gtsPATTERN,0x0000); rle2vram (gtsCOLOR,0x2000); rle2vram (gtsNAME,0x1800); cls(); screen_on(); print_at(1,1,"FIRE"); loop: if(joypad_1&FIRE1){ print_at(1,3,"BANG!"); } goto loop;} Edited December 18, 2018 by Serguei2 Quote Link to comment Share on other sites More sharing options...
Serguei2 Posted December 18, 2018 Author Share Posted December 18, 2018 Never mind. I didn't included enable_nmi();. #include <coleco.h>#include <getput1.h> const byte gtsNAME[] = { 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0x85, 0x20, 0xFF}; const byte gtsPATTERN[] = { 0xFE, 0x00, 0xFE, 0x00, 0x89, 0x00, 0x01, 0x1C, 0x38, 0x82, 0x18, 0x02, 0x00, 0x18, 0x18, 0x82, 0x66, 0x85, 0x00, 0x21, 0x44, 0xFE, 0x44, 0x44, 0xFE, 0x44, 0x00, 0x18, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x18, 0x00, 0xFF, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0xFF, 0x3C, 0x66, 0x3C, 0x38, 0x67, 0x66, 0x3F, 0x00, 0x06, 0x0C, 0x18, 0x84, 0x00, 0x01, 0x0C, 0x18, 0x82, 0x30, 0x04, 0x18, 0x0C, 0x00, 0x30, 0x18, 0x82, 0x0C, 0x08, 0x18, 0x30, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x82, 0x00, 0x81, 0x18, 0x02, 0x7E, 0x18, 0x18, 0x86, 0x00, 0x81, 0x18, 0x00, 0x30, 0x82, 0x00, 0x00, 0x7E, 0x88, 0x00, 0x81, 0x18, 0x81, 0x00, 0x10, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x3C, 0x66, 0xCE, 0xD6, 0xE6, 0xCC, 0x78, 0x00, 0x18, 0x38, 0x83, 0x18, 0x2C, 0x1C, 0x30, 0x0E, 0x1E, 0x36, 0x06, 0xFC, 0xC0, 0xFE, 0x00, 0x0E, 0x1E, 0x36, 0x06, 0x3C, 0x86, 0xFE, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xFE, 0x06, 0x06, 0x00, 0x1E, 0x3E, 0x70, 0xE0, 0xFC, 0x0E, 0xFE, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xDE, 0xF2, 0xFE, 0x00, 0x7E, 0xC6, 0x0C, 0x82, 0x18, 0x18, 0x1C, 0x30, 0x1E, 0x3E, 0x66, 0x66, 0xFC, 0xC6, 0xFE, 0x00, 0x3C, 0x66, 0xCE, 0xFE, 0x06, 0x0C, 0x38, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x82, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x0E, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0E, 0x82, 0x00, 0x02, 0x7E, 0x00, 0x7E, 0x82, 0x00, 0x0F, 0x70, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x70, 0x00, 0x1E, 0x3E, 0x66, 0x06, 0x18, 0x18, 0x00, 0x18, 0x87, 0x00, 0x38, 0x0E, 0x1E, 0x36, 0x66, 0xFE, 0xC6, 0xC6, 0x00, 0x0E, 0x1E, 0x26, 0x66, 0xFC, 0xC6, 0xFE, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xC0, 0xC2, 0xFE, 0x00, 0xE0, 0xF0, 0xD8, 0xCC, 0xC6, 0xCE, 0xFC, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xFC, 0xC0, 0xFE, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xFC, 0xC0, 0xC0, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xCE, 0xC2, 0xFE, 0x00, 0x26, 0x82, 0x66, 0x05, 0xFE, 0xC6, 0xC6, 0x00, 0x1C, 0x78, 0x83, 0x18, 0x1D, 0x1C, 0x30, 0x0E, 0x1C, 0x0C, 0x0C, 0x4C, 0xCC, 0xFE, 0x00, 0x26, 0x66, 0x6C, 0x78, 0xFC, 0xCE, 0xC6, 0x00, 0x70, 0xE0, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x46, 0xEE, 0xFE, 0xD6, 0x82, 0xC6, 0x32, 0x00, 0x42, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00, 0x1C, 0x3E, 0x66, 0xC6, 0xC6, 0xCC, 0x78, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xFC, 0xC0, 0xC0, 0x00, 0x1C, 0x3E, 0x66, 0xC6, 0xD6, 0xDC, 0x77, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xF8, 0xCC, 0xC6, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xFE, 0x06, 0xFE, 0x00, 0x7E, 0xFC, 0x83, 0x30, 0x02, 0x38, 0x60, 0x26, 0x82, 0x66, 0x04, 0xE6, 0xC6, 0xFE, 0x00, 0x26, 0x82, 0x66, 0x26, 0xE6, 0x6C, 0x38, 0x00, 0x62, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC4, 0x00, 0x26, 0x66, 0xEC, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x26, 0x66, 0xEC, 0x38, 0x18, 0x18, 0x1C, 0x30, 0x3E, 0x66, 0xCC, 0x18, 0x32, 0x66, 0xFE, 0x00, 0xFF, 0xE0, 0xE0, 0x84, 0x80, 0x00, 0xFF, 0x86, 0x00, 0x02, 0xFF, 0x07, 0x07, 0x84, 0x01, 0x87, 0x80, 0x87, 0x01, 0x00, 0x00, 0x86, 0xFE, 0x87, 0x7F, 0x87, 0xFE, 0x00, 0xFF, 0x86, 0xC0, 0x00, 0xFF, 0x86, 0x03, 0x86, 0x80, 0x00, 0xFF, 0x86, 0x01, 0x88, 0xFF, 0x00, 0x00, 0x85, 0x7F, 0x81, 0x00, 0x85, 0xFE, 0x81, 0x00, 0x0A, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x7E, 0x7E, 0x00, 0x86, 0x7E, 0x00, 0x00, 0x82, 0x7E, 0x81, 0x00, 0x86, 0x7F, 0x82, 0x03, 0x00, 0xFF, 0x83, 0x01, 0x82, 0xC0, 0x00, 0xFF, 0x83, 0x80, 0x00, 0xFF, 0x86, 0x80, 0x00, 0xFF, 0x86, 0x01, 0x97, 0xFF, 0x00, 0x00, 0x85, 0x7F, 0x81, 0x00, 0x85, 0xFE, 0x0A, 0x00, 0xF7, 0xB7, 0xB5, 0xBD, 0xBD, 0xED, 0xEF, 0xEF, 0x00, 0x40, 0x85, 0x00, 0x87, 0xFF, 0x81, 0x00, 0x83, 0x3C, 0x81, 0x00, 0x84, 0x80, 0x81, 0xE0, 0x00, 0xFF, 0x86, 0x00, 0x00, 0xFF, 0x84, 0x01, 0x81, 0x07, 0x00, 0xFF, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x97, 0x00, 0xFF}; const byte gtsCOLOR[] = { 0xFE, 0x41, 0xFC, 0x41, 0x83, 0x41, 0x87, 0x61, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xD2, 0x41, 0xA7, 0xA1, 0x98, 0x51, 0x8E, 0x5F, 0x8F, 0x51, 0x87, 0x11, 0x8F, 0x61, 0x97, 0x81, 0x87, 0xA1, 0x82, 0x5F, 0x84, 0x51, 0x82, 0x5F, 0x94, 0x51, 0x87, 0x71, 0x87, 0x21, 0x87, 0xE1, 0x8F, 0x41, 0x87, 0xBA, 0x87, 0x96, 0x87, 0xB1, 0x9F, 0xA1, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0x97, 0x41, 0xFF}; void nmi(void) {} void main(void){ screen_mode_2_text(); paper(0xc); upload_default_ascii(NORMAL); duplicate_pattern(); rle2vram (gtsPATTERN,0x0000); rle2vram (gtsCOLOR,0x2000); rle2vram (gtsNAME,0x1800); enable_nmi(); cls(); screen_on(); print_at(1,1,"FIRE"); loop: if(joypad_1&FIRE1){ print_at(1,3,"BANG!"); } goto loop;} Now everything works fine. Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted December 18, 2018 Share Posted December 18, 2018 THE END Quote Link to comment Share on other sites More sharing options...
Kiwi Posted December 18, 2018 Share Posted December 18, 2018 One thing to add to a game loop is delay(1);. It acts like WAIT command like in IntyBASIC. It keeps the game at 60fps. Right after delay(1); is updatesprites(0,64); to avoid sprite tear. If you hold the fire button in that loop, it'll eventually print someplace else in VRAM due to how NMI works so it'll partly corrupt your VRAM. So do VRAM update right after delay(1); so it doesn't get interrupted when the screen is finished drawing. For mass VRAM update like loading the graphic tables, disable_nmi() is correct in your post. enable_nmi();while(game==1){ delay(1); updatesprites(0,64); *vram stuff like update score and stuff here* *CPU stuff*} 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.