uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 169e659ab880b4b1515d46f4f317bcedae06d694
parent 9df5bb924bfd9e24e168409be2d7917ed70cf8b1
Author: neauoire <aliceffekt@gmail.com>
Date:   Thu,  8 Apr 2021 16:30:44 -0700

Minor cleanup

Diffstat:
Mbuild.sh | 11++++++-----
Msrc/emulator.c | 38++++++++++++++------------------------
Msrc/ppu.c | 1-
3 files changed, 20 insertions(+), 30 deletions(-)

diff --git a/build.sh b/build.sh @@ -1,14 +1,15 @@ #!/bin/bash echo "Formatting.." -clang-format -i src/assembler.c clang-format -i src/uxn.h clang-format -i src/uxn.c -clang-format -i src/emulator.c -clang-format -i src/debugger.c +clang-format -i src/ppu.h clang-format -i src/ppu.c -clang-format -i src/apu.c clang-format -i src/apu.h +clang-format -i src/apu.c +clang-format -i src/assembler.c +clang-format -i src/emulator.c +clang-format -i src/debugger.c echo "Cleaning.." rm -f ./bin/assembler @@ -31,7 +32,7 @@ else fi echo "Assembling.." -./bin/assembler projects/software/noodle.usm bin/boot.rom +./bin/assembler projects/software/nasu.usm bin/boot.rom echo "Running.." if [ "${2}" = '--cli' ]; diff --git a/src/emulator.c b/src/emulator.c @@ -83,6 +83,7 @@ quit(void) free(ppu.output); free(ppu.fg); free(ppu.bg); + SDL_UnlockAudioDevice(audio_id); SDL_DestroyTexture(gTexture); gTexture = NULL; SDL_DestroyRenderer(gRenderer); @@ -136,21 +137,18 @@ domouse(Uxn *u, SDL_Event *event) mempoke16(u, addr + 0, x); mempoke16(u, addr + 2, y); u->ram.dat[addr + 5] = 0x00; - switch(event->button.button) { - case SDL_BUTTON_LEFT: flag = 0x01; break; - case SDL_BUTTON_RIGHT: flag = 0x10; break; - } + flag = event->button.button == SDL_BUTTON_LEFT ? 0x01 : 0x10; switch(event->type) { - case SDL_MOUSEBUTTONUP: - setflag(&u->ram.dat[addr + 4], flag, 0); - break; case SDL_MOUSEBUTTONDOWN: - setflag(&u->ram.dat[addr + 4], flag, 1); + u->ram.dat[addr + 4] |= flag; if(flag == 0x10 && (u->ram.dat[addr + 4] & 0x01)) u->ram.dat[addr + 5] = 0x01; if(flag == 0x01 && (u->ram.dat[addr + 4] & 0x10)) u->ram.dat[addr + 5] = 0x10; break; + case SDL_MOUSEBUTTONUP: + u->ram.dat[addr + 4] &= (~flag); + break; } } @@ -183,14 +181,8 @@ doctrl(Uxn *u, SDL_Event *event, int z) switch(event->key.keysym.sym) { case SDLK_LCTRL: flag = 0x01; break; case SDLK_LALT: flag = 0x02; break; - case SDLK_BACKSPACE: - flag = 0x04; - if(z) u->ram.dat[devkey->addr + 2] = 0x08; - break; - case SDLK_RETURN: - flag = 0x08; - if(z) u->ram.dat[devkey->addr + 2] = 0x0d; - break; + case SDLK_BACKSPACE: flag = 0x04; break; + case SDLK_RETURN: flag = 0x08; break; case SDLK_UP: flag = 0x10; break; case SDLK_DOWN: flag = 0x20; break; case SDLK_LEFT: flag = 0x40; break; @@ -293,9 +285,8 @@ audio_poke(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1) } apu.queue->dat[apu.queue->n++] = (m[0xb] << 8) + m[0xc]; apu.queue->dat[apu.queue->n++] = (m[0xd] << 8) + b1; - } else if(b0 == 0xf && apu.queue != NULL) { + } else if(b0 == 0xf && apu.queue != NULL) apu.queue->finishes = 1; - } return b1; } @@ -362,20 +353,19 @@ start(Uxn *u) while(SDL_PollEvent(&event) != 0) { switch(event.type) { case SDL_QUIT: - SDL_UnlockAudioDevice(audio_id); quit(); break; + case SDL_KEYDOWN: + case SDL_KEYUP: + doctrl(u, &event, event.type == SDL_KEYDOWN); + evaluxn(u, devctrl->vector); + break; case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEMOTION: domouse(u, &event); evaluxn(u, devmouse->vector); break; - case SDL_KEYDOWN: - case SDL_KEYUP: - doctrl(u, &event, event.type == SDL_KEYDOWN); - evaluxn(u, devctrl->vector); - break; case SDL_TEXTINPUT: dotext(u, &event); evaluxn(u, devkey->vector); diff --git a/src/ppu.c b/src/ppu.c @@ -143,7 +143,6 @@ initppu(Ppu *p, Uint8 hor, Uint8 ver, Uint8 pad) p->pad = pad; p->width = (8 * p->hor + p->pad * 2); p->height = (8 * p->ver + p->pad * 2); - if(!(p->output = malloc(p->width * p->height * sizeof(Uint32)))) return 0; if(!(p->bg = malloc(p->width * p->height * sizeof(Uint8) * 2)))