From 7642efad5ad58c4aec26eec3c8bb879f69272eaf Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 25 Dec 2023 10:01:40 +0100 Subject: Minor changes --- src/vcpu.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/vcpu.c') diff --git a/src/vcpu.c b/src/vcpu.c index 45b9aca..80323e3 100644 --- a/src/vcpu.c +++ b/src/vcpu.c @@ -8,6 +8,7 @@ VCPU_State State; void VCPUInit(){ State.PC=ADDR_ROM; + State.S=0; } void VCPUFetch(){ @@ -54,12 +55,26 @@ void VCPUExecute(){ State.I=State.NNN; break ;; - case 0xD: + case 0xD: // Draw a sprite int X=State.V[State.X]%63; int Y=State.V[State.Y]%31; State.V[REG_FLAG]=0; // Set flag to 0 + int width,height; + ScreenWH(&width,&height); for(char row=0;row=height) + break; + char sprite; + MemRead(&sprite,1,State.I+row); // Load sprite + // Draw sprite + for(int shift=0;shift<8;shift++){ + // Stop if column is out of screen + if(X+shift >= width) + break; + if(ScreenPixelApply(X+shift,Y+row,(sprite>>(7-shift))&0x1)) + State.V[REG_FLAG]=1; + } } break; ;; -- cgit v1.2.3