1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-02-16 18:30:37 +00:00

Working on lazyNES. Now lnList() works for vertical. CleanUp needed for vertical.

This commit is contained in:
Jesper Gravgaard 2020-07-11 22:14:02 +02:00
parent 6c8a320f5c
commit 87febe359d
3 changed files with 27 additions and 26 deletions

View File

@ -7,6 +7,7 @@
// Original Source VBCC alpha 2 http://www.ibaug.de/vbcc/vbcc6502_2.zip
#pragma target(nes)
#pragma emulator("java -jar c:/c64/Nintaco/Nintaco.jar")
#include "lazynes.h"
int lnMain() {

View File

@ -205,12 +205,11 @@ void lnListTransfer() {
char addrLo = vram_update_list[idx++];
char* ppuAddr = (char*)(uword){ addrHi&0x3f, addrLo };
char size = vram_update_list[idx++];
// Set vertical mode ibit in PPUCTRL
char ppuCtrl = PPU->PPUCTRL;
PPU->PPUCTRL = ppuCtrl|4;
// Set vertical mode bit in PPUCTRL
PPU->PPUCTRL = 0b10001100;
ppuDataTransfer(ppuAddr, vram_update_list+idx, size);
// restore PPUCTRL
PPU->PPUCTRL = ppuCtrl;
PPU->PPUCTRL = 0b10001000;
idx += size;
} else {
// The write is single-byte

View File

@ -9,31 +9,31 @@
#pragma emulator("java -jar c:/c64/Nintaco/Nintaco.jar")
#include "lazynes.h"
// Data (in PRG ROM)
#pragma data_seg(GameRam)
static ubyte list[64];
ubyte list[64];
#pragma data_seg(Data)
void lnMain() {
uword offset1 = lnNameTab0+64;
uword offset2 = lnNameTab0+96;
uword offset3 = lnNameTab0+128;
list[0]=(ubyte)(offset1>>8)|lfHor; // PPU address hi
list[1]=(ubyte)offset1; // PPU address lo
list[2]=3; // Size
list[3] = 'R'; // Data
list[4] = 'X'; // Data
list[5] = '0'; // Data
list[6]=(ubyte)(offset2>>8); // PPU address hi
list[7]=(ubyte)offset2; // PPU address lo
list[8]='X'; // Size
list[9]=(ubyte)(offset3>>8)|lfHor; // PPU address hi
// Set-up an update list in the lnList() format
uword offset1 = lnNameTab0+96+4;
uword offset2 = lnNameTab0+96+2;
uword offset3 = lnNameTab0+160+2;
list[0]=(ubyte)(offset1>>8)|lfHor; // PPU address hi - horizontal
list[1]=(ubyte)offset1; // PPU address lo
list[2]=3; // Size
list[3] = 'R'; // Data
list[4] = 'X'; // Data
list[5] = '0'; // Data
list[6]=(ubyte)(offset2>>8); // PPU address hi - single
list[7]=(ubyte)offset2; // PPU address lo
list[8]='X'; // Size
list[9]=(ubyte)(offset3>>8)|lfVer; // PPU address hi - vertical
list[10]=(ubyte)offset3; // PPU address lo
list[11]=3; // Size
list[12] = 'R'; // Data
list[13] = 'X'; // Data
list[14] = '0'; // Data
list[15] = lfEnd; // End transfer
list[11]=3; // Size
list[12] = 'R'; // Data
list[13] = 'X'; // Data
list[14] = '0'; // Data
list[15] = lfEnd; // End transfer
static const ubyte bgColors[]={45,33,2};
static const char text[]="HELLO LAZYNES!";
@ -43,11 +43,12 @@ void lnMain() {
lnPush(lnNameTab0+32,14,text); // draw text in 2nd line
for (;;) {
// Update the list with dynamic values
list[5] = ((list[5]+1)&7)+'0';
list[8] = ((list[8]+1)&7)+'0';
list[14] = ((list[14]+1)&7)+'0';
lnList(list);
lnSync(0); // sync with vblank, activate SPR0HIT splitscreen
lnList(list); // Send the list
lnSync(0); // sync with vblank
}
}