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:
parent
6c8a320f5c
commit
87febe359d
@ -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() {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user