Coder Social home page Coder Social logo

tomm / fab-agon-emulator Goto Github PK

View Code? Open in Web Editor NEW
76.0 76.0 19.0 1.13 MB

Agon Light, Agon Light 2, Agon Console8 Emulator for Linux, Windows, any system with libSDL

License: GNU General Public License v3.0

Rust 38.72% C 6.81% C++ 49.95% Makefile 3.30% Shell 1.22%

fab-agon-emulator's People

Contributors

astralaster avatar eztrophy avatar fayep avatar indigobeetle avatar oldpatientsea avatar rewk avatar s0urceror avatar stevesims avatar tomm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fab-agon-emulator's Issues

VGADirectController

Do you plan to support the VGADirectController? Would love to use the emulator during development of ElectronHAL/OS. I use VGADirectController to implement the virtual TMS9918 videochip in HAL.

sdl::init and video subsystem on main thread

After getting your last changes I noticed that on my Mac the emulator was crashing at startup:
image

I noticed this was due to SDL::initialisation is now happening on a separate UI thread. According to the SDL folks this is not recommended.

When reverting back to running on the main thread everything works again:
image

image

Ability to break in code

It's quite useful to have the option to put a breakpoint in your source code. Saves faffing about looking up addresses, you can just inline in code.

One option is to break on an opcode e.g. $76 (HALT). Another way (the TI84 CEmu emulator does it this way) is to trigger it with a write to $FFFFFF

Many thanks, Paul.

AgonLight Emulator only launchs from terminal

Cause

AgonLight Emulator only launchs from terminal

How to Identify

  1. Create an agonlight.desktop entry into /usr/share/applications or ~/.local/share/applications folders with:
[Desktop Entry]
Type=Application
Name=Fab Agon Light Emulator
GenericName=Agon Light 2 Emulator
Path=$USER/Documents/fab-agon-emulator
Exec=$USER/Documents/fab-agon-emulator/fab-agon-emulator --fullscreen
Comment=Agon Light 2 Emulator
Icon=$USER/Images/icons/agonlight2.png
Terminal=true
  1. Launch the app by clicking in the desktop shortcut
  2. Edit the .desktop entry to:
[Desktop Entry]
Type=Application
Name=Fab Agon Light Emulator
GenericName=Agon Light 2 Emulator
Path=$USER/Documents/fab-agon-emulator
Exec=$USER/Documents/fab-agon-emulator/fab-agon-emulator --fullscreen
Comment=Agon Light 2 Emulator
Icon=$USER/Images/icons/agonlight2.png
Terminal=false
  1. The Emulator will not launch

Expected Behavior

The app should launch with option Terminal=false

Technical Specifications

  1. Agon Emulator version v0.9.19
  2. System Specs
                   -`                    chandler@pc-quarto 
                  .o+`                   ------------------ 
                 `ooo/                   OS: Arch Linux x86_64 
                `+oooo:                  Host: B450 I AORUS PRO WIFI 
               `+oooooo:                 Kernel: 6.7.1-arch1-1 
               -+oooooo+:                Uptime: 15 hours, 31 mins 
             `/:-:++oooo+:               Packages: 1868 (pacman) 
            `/++++/+++++++:              Shell: zsh 5.9 
           `/++++++++++++++:             Resolution: 3840x2160 
          `/+++ooooooooooooo/`           DE: GNOME 45.3 
         ./ooosssso++osssssso+`          WM: Mutter 
        .oossssso-````/ossssss+`         WM Theme: Adwaita 
       -osssssso.      :ssssssso.        Theme: HighContrastInverse [GTK2/3] 
      :osssssss/        osssso+++.       Icons: Adwaita [GTK2/3] 
     /ossssssss/        +ssssooo/-       Terminal: kgx 
   `/ossssso+/:-        -:/+osssso+-     CPU: AMD Ryzen 7 3700X (16) @ 3.600GHz 
  `+sso+:-`                 `.-/+oso:    GPU: AMD ATI Radeon RX 6600/6600 XT/6600M 
 `++:.                           `-/+/   Memory: 6802MiB / 15912MiB 
 .`                                 `/

sysvar_mouseX & sysvar_mouseY return random values

Hi,
sysvar_mouseX & sysvar_mouseY return random values on the 0.9.2 emulator version.

; get mouse data
; outputs:
; de: x
; hl: y
; a: buttons
get_mouse:	
	; get the mouse position
	vdu 23
	vdu 0
	vdu $89
	vdu 0

	; moscall to get data
	moscall mos_sysvars

	; get mouse data
	ld de,$000000
	ld hl,$000000
	ld e,(ix+sysvar_mouseX)
	ld d,(ix+sysvar_mouseX+1)
	ld l,(ix+sysvar_mouseY)
	ld h,(ix+sysvar_mouseY+1)
	ld a,(ix+sysvar_mouseButtons)
	
	ret

Will not work on Linux

Well, that was a short-lived joy. The emulator cannot be built on a Linux box. Firstly, the funky error 'GIT_DISCOVERY_ACROSS_FILESYSTEM not set' and a 'git init' will not save the day. Secondly, manually downloading the zip files will not help because it will crash the make program.

A zip file containing everything to build is far easier than messing around with git.

If you do log in on "git" you will be able to solve the problem with the GIT_DISCOVIRY_ โ€ฆ' error there is the next surprise waiting for you:
make -C userspace-vdp-gl/src
make[1]: *** userspace-vdp-gl/src: No such file or directory. Stop.
make: *** [Makefile:15: userspace-vdp-gl/vdp_gl.a] Error 2

Builds on Linux/ Fails to run on Windows

thread 'main' panicked at src/vdp_interface.rs:42:77:
called Result::unwrap() on an Err value: LoadLibraryExW { source: Os { code: 193, kind: Uncategorized, message: "%1 is not a valid Win32 application." } }
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

Missing file vdp_console8.so

when I try to execute, I get this error:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: DlOpen { desc: "./firmware/vdp_console8.so: cannot open shared object file: No such file or directory" }', src/vdp_interface.rs:42:77
stack backtrace:
0: rust_begin_unwind
1: core::panicking::panic_fmt
2: core::result::unwrap_failed
3: fab_agon_emulator::vdp_interface::init
4: fab_agon_emulator::main```

build failed on Windows machine

Compiling fab-agon-emulator v0.7.5 (C:\Users\busyr\Downloads\fab-agon-emulator-main\fab-agon-emulator-main)
error: failed to run custom build command for fab-agon-emulator v0.7.5 (C:\Users\busyr\Downloads\fab-agon-emulator-main\fab-agon-emulator-main)

Caused by:
process didn't exit successfully: C:\Users\busyr\Downloads\fab-agon-emulator-main\fab-agon-emulator-main\target\release\build\fab-agon-emulator-292c5b592f41ba87\build-script-build (exit code: 101)
--- stderr
thread 'main' panicked at build.rs:4:35:
failed to build VDP: Error { kind: NotFound, message: "program not found" }
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...

Make fails with undefined reference to `pthread_create'

Make fails with undefined reference to `pthread_create' for me.

OS: Debian 11.8
gcc version: gcc (Debian 10.2.1-6) 10.2.1 20210110

Adding -pthread to the flags in src/vdp/Makefile and adding the flags to the instructions for test_main makes it compile although I am uncertain if there are any potential side effects and if it might not be better to simply add -pthread to test_main to minimise the scope. I'll leave that to your judgement.

diff --git a/src/vdp/Makefile b/src/vdp/Makefile
index c0c0d09..7c394e5 100644
--- a/src/vdp/Makefile
+++ b/src/vdp/Makefile
@@ -1,5 +1,5 @@
 CXX ?= g++
-CFLAGS = -Wall -O2 -fmax-errors=1 -std=c++11 -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers
+CFLAGS = -Wall -O2 -fmax-errors=1 -std=c++11 -pthread -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers
 OPTIONS = 
 
 SRCS = rust_glue.cpp
@@ -15,7 +15,7 @@ userspace-vdp-gl/vdp_gl.a:
        $(MAKE) -C userspace-vdp-gl/src
 
 test_main: $(OBJS) userspace-vdp-gl/vdp_gl.a vdp_quark104.o test_main.o
-       $(CXX) $(OBJS) test_main.o vdp-1.03.o userspace-vdp-gl/src/vdp-gl.a -o test_main
+       $(CXX) $(CFLAGS) $(OBJS) test_main.o vdp-1.03.o userspace-vdp-gl/src/vdp-gl.a -o test_main
 
 vdp_console8.so: $(OBJS) userspace-vdp-gl/vdp_gl.a vdp-console8.o
        $(CXX) -shared $(OBJS) vdp-console8.o userspace-vdp-gl/src/vdp-gl.a -o vdp_console8.so

New emulator looks great now! Nice work!

Debugging programs in the emulator

Hello,
thanks for creating the Agon emulator, it works great on macOS.

Sorry for the newb question, I wanted to ask if it is possible to debug a program in the emulator. Say that I have a compiled bin file, how can I step through the assembly and check the registers and memory ?

Thanks.

Possible cpu emulation bug

Hi there

I'm having serous trouble getting TRSE-compiled programs to work for the agon, and came to the realization that there might be an error in the emulator - this stuff works on other emulators (such as caprice 32 etc for the amstrad, gameboy etc)

ld d,0
ld e,1
add hl,de <- ooops! "de" is definitely not "01" when running in the emulator

however
ld de,01
add hl,de <- works just fine

similarly,
ld a,1
ld e,a
ld d,0
<- de is still not "01"...

Sound with VDU randomly makes crash emulator

Hi,
I've made a music player on BBC BASIC, but the emulator randomly crash when I play music notes with the VDP.

This is how I proceed to play notes, stopping them if they are a little too long :

  1. Reset note (disable/enable)
  2. Play note

33230 REM * play note with the VDU *
33240 VDU 23,0,&85,chan%-1,10:VDU 23,0,&85,chan%-1,4,waveform%(wvf%(chan%)):VDU 23,0,&85,chan%-1,0,vlm%(chan%)*2,n%(nt%,octv%(chan%)-1);nln%(chan%);

Checking sysvars before, to play notes when the emulator is ready, changes nothing.

Error running the emulator on Windows: code: 126, kind: Uncategorized, message: "The specified module could not be found."

The compiling went without problems, no errors or warning, using 'cargo build --release'. But when I try to run the application using 'cargo run --release', I get the following result at the end of this message.

I presume this is because it's not finding the VDP modules, but those didn't compile and didn't generate any module files.

> cargo run -r
    Finished release [optimized] target(s) in 0.57s
     Running `target\release\fab-agon-emulator.exe`
thread 'main' panicked at src\vdp_interface.rs:42:77:
called `Result::unwrap()` on an `Err` value: LoadLibraryExW { source: Os { code: 126, kind: Uncategorized, message: "The specified module could not be found." } }
stack backtrace:
   0:     0x7ff7a9f782ac - std::backtrace_rs::backtrace::dbghelp::trace::h782acb12622401a5
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\..\..\backtrace\src\backtrace/dbghelp.rs:98:5
   1:     0x7ff7a9f782ac - std::backtrace_rs::backtrace::trace_unsynchronized::h863bea32e8b4cd40
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\..\..\backtrace\src\backtrace/mod.rs:66:5
   2:     0x7ff7a9f782ac - std::sys_common::backtrace::_print_fmt::h8e00824771791c97
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common/backtrace.rs:67:5
   3:     0x7ff7a9f782ac - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he79a180599bd168b
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common/backtrace.rs:44:22
   4:     0x7ff7a9fda27b - core::fmt::rt::Argument::fmt::h8c61f2ec76e1ae1c
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src\fmt/rt.rs:138:9
   5:     0x7ff7a9fda27b - core::fmt::write::h8b5d9ba995f28b3d
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src\fmt/mod.rs:1094:21
   6:     0x7ff7a9f6d6ab - std::io::Write::write_fmt::hc7addd828eb73daa
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\io/mod.rs:1714:15
   7:     0x7ff7a9f78023 - std::sys_common::backtrace::_print::he35ac4a387784684
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common/backtrace.rs:47:5
   8:     0x7ff7a9f78023 - std::sys_common::backtrace::print::h7bad5d62728e1103
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common/backtrace.rs:34:9
   9:     0x7ff7a9f7b3c6 - std::panicking::default_hook::{{closure}}::h5067abc855bf1048
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:270:22
  10:     0x7ff7a9f7b061 - std::panicking::default_hook::h240f0a26d6ddd9d1
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:290:9
  11:     0x7ff7a9f7bc3b - std::panicking::rust_panic_with_hook::hc9234f56aa852168
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:707:13
  12:     0x7ff7a9f7ba85 - std::panicking::begin_panic_handler::{{closure}}::h114d28b6ceee4a61
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:599:13
  13:     0x7ff7a9f79069 - std::sys_common::backtrace::__rust_end_short_backtrace::h94a97ff2f3d9d2cb
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common/backtrace.rs:170:18
  14:     0x7ff7a9f7b7d0 - rust_begin_unwind
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:595:5
  15:     0x7ff7a9fd6525 - core::panicking::panic_fmt::h9985522d043fc5f1
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src/panicking.rs:67:14
  16:     0x7ff7a9fd6b24 - core::result::unwrap_failed::ha7b8de540eb29961
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src/result.rs:1652:5
  17:     0x7ff7a9e536de - fab_agon_emulator::vdp_interface::init::hc844fc09ab73ed9e
  18:     0x7ff7a9e4bcac - fab_agon_emulator::main::h94d09884a1f36a43
  19:     0x7ff7a9e4f66f - std::sys_common::backtrace::__rust_begin_short_backtrace::hd25c867119097af6
  20:     0x7ff7a9e4f915 - std::rt::lang_start::{{closure}}::h361ee5caa93515b3
  21:     0x7ff7a9f5e7b6 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hb3bdf4346df38b91
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src\ops/function.rs:284:13
  22:     0x7ff7a9f5e7b6 - std::panicking::try::do_call::h61c61764c4bdad62
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:502:40
  23:     0x7ff7a9f5e7b6 - std::panicking::try::hb496e09f23995746
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:466:19
  24:     0x7ff7a9f5e7b6 - std::panic::catch_unwind::h271d61ca37e37ebc
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panic.rs:142:14
  25:     0x7ff7a9f5e7b6 - std::rt::lang_start_internal::{{closure}}::hdc458e19b8f78341
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/rt.rs:148:48
  26:     0x7ff7a9f5e7b6 - std::panicking::try::do_call::h64787de3a0157676
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:502:40
  27:     0x7ff7a9f5e7b6 - std::panicking::try::h0f2ebb1d72d71417
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panicking.rs:466:19
  28:     0x7ff7a9f5e7b6 - std::panic::catch_unwind::h624df61e1023a756
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/panic.rs:142:14
  29:     0x7ff7a9f5e7b6 - std::rt::lang_start_internal::hcf82168a9de7e079
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src/rt.rs:148:20
  30:     0x7ff7a9e4e87d - main
  31:     0x7ff7a9e41395 - __tmainCRTStartup
  32:     0x7ff7a9e414e6 - mainCRTStartup
  33:     0x7ffea7c2257d - <unknown>
  34:     0x7ffea8e6aa78 - <unknown>
error: process didn't exit successfully: `target\release\fab-agon-emulator.exe` (exit code: 101)

Badapple demo crashes emulator after a while

Demo: https://movievertigo.github.io/downloads/agonlight/badapple/

Thread 4 "fab-agon-emulat" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff63fd6c0 (LWP 379763)]
std::_Sp_counted_ptr_inplace<BufferStream, psram_allocator<BufferStream>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unsigned int> (
    __a=..., this=0x0) at /usr/include/c++/12/bits/shared_ptr_base.h:600
600		: _M_impl(__a)
(gdb) bt
#0  std::_Sp_counted_ptr_inplace<BufferStream, psram_allocator<BufferStream>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<unsigned int> (
    __a=..., this=0x0) at /usr/include/c++/12/bits/shared_ptr_base.h:600
#1  std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<BufferStream, psram_allocator<BufferStream>, unsigned int> (__a=..., 
    __p=@0x7ffff63fcbc0: 0x0, this=0x7ffff63fcbc8) at /usr/include/c++/12/bits/shared_ptr_base.h:971
#2  std::__shared_ptr<BufferStream, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<psram_allocator<BufferStream>, unsigned int> (__tag=..., 
    this=0x7ffff63fcbc0) at /usr/include/c++/12/bits/shared_ptr_base.h:1712
#3  std::shared_ptr<BufferStream>::shared_ptr<psram_allocator<BufferStream>, unsigned int> (__tag=..., this=0x7ffff63fcbc0)
    at /usr/include/c++/12/bits/shared_ptr.h:464
#4  std::allocate_shared<BufferStream, psram_allocator<BufferStream>, unsigned int> (__a=...) at /usr/include/c++/12/bits/shared_ptr.h:993
#5  make_shared_psram<BufferStream, unsigned int> () at vdp-console8/video/types.h:162
#6  VDUStreamProcessor::bufferCopy (this=this@entry=0x7fffec000ca0, bufferId=<optimized out>, bufferId@entry=65534, 
    sourceBufferIds=std::vector of length 215, capacity 215 = {...}) at vdp-console8/video/vdu_buffered.h:684
#7  0x00007ffff6b54fdc in VDUStreamProcessor::vdu_sys_buffered (this=0x7fffec000ca0) at vdp-console8/video/vdu_buffered.h:92
#8  0x00007ffff6b56f55 in loop () at vdp-console8/video/video.ino:119
#9  0x000055555557e648 in std::sys_common::backtrace::__rust_begin_short_backtrace::hbc09caaeaffdead6 ()
#10 0x000055555557b4bf in core::ops::function::FnOnce::call_once{{vtable.shim}}::h8d6de8e14216241d ()
#11 0x0000555555641995 in alloc::boxed::{impl#47}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> ()
    at library/alloc/src/boxed.rs:1993
#12 alloc::boxed::{impl#47}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:1993
#13 std::sys::unix::thread::{impl#2}::new::thread_start () at library/std/src/sys/unix/thread.rs:108
#14 0x00007ffff7c4e044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#15 0x00007ffff7cce61c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
(gdb) 

9.25 strange behaviour when invoking agon-ez80asm from autoexec.txt

with these directives in autoexec.txt:

SET KEYBOARD 1
ez80asm hello_world.asm
load hello_world.bin

0.9.25 emulator does:
image

if i remove the load command:
image

if i remove the ez80asm command, the same thing happens, and for set keyboard as well.

however, v0.9.20 updated to the same (and most recent) mos/vdp versions works just fine:

image

one major difference is that i compiled .25 from source on ubuntu 22.04 whereas the .20 version is using the pre-compiled binaries.

attached is a tar.gz archive of the exact executable and files i am running, less the src and related directories due to filesize constraints.
v0.9.25-linux-x86_64.tar.gz

it doesn't matter what code i'm trying to assemble and load, nor from which directory.

possible new options

-quiet

Runs the emulator with sound off.

-boot

Loads and runs . At the moment in practice FAE has to be run from its own directory because of the libraries) in Linux anyway.

Both of these have fairly simple workrounds.

Feature request: load/execute binaries from command line

Hi there! I'm the developer of TRSE (www.turborascal.com), and I'm currently looking into adding Agon support to my compiler. However, in order for things to work smoothly, I need the emulator to be able to load + execute binary programs from command line, ie

./fab-agon-emulator load_bin=myprogram.bin execute_address=B000

or something similar... Would this be possible to implement?

crash out for testing

One thing I've always found useful in emulation is the ability of the emulator to terminate itself for unit tests and so on, dumping the RAM and CPU state as it goes, which can be analysed after the fact. In my emulators I've usually done this via JMP $FFFF / JP $FFFF

Windows build crashes on start

I tried to build the emulator (tag: 0.9.16) on windows and it does compile, but crashes before the startup beep or anything but a black window. I also tested the current build for windows from the release page and it fails the same. I also tested the new --renderer sw option, but it does not help.

Wait for VSYNC (VDU 23,0,&C3) not working?

Platform: Windows 10 x64
Emulator version: v0.9.2
I've been playing with the emulator with a view to possibly buying a Console8. I wrote a BBC BASIC program to try scrolling the screen using VDU 23,7,m,d,z and I wanted it to be smooth so I added VDU 23,0,&C3 (flip buffer or wait for VSYNC) but it doesn't seem to be waiting for VSYNC. That is, I'd expect the program to take 8 seconds to scroll by a total of 480 pixels at 60 pixels per second, but it completes in well under a second.
Have I misunderstood something or is the emulator not implementing the wait for VSYNC?

SDL gamepad input / GPIO lags on windows

The version 0.9.2 adds GPIO emulation and also adds gamepad support. It works flawless on linux, but on windows it has very much delay (in the seconds). I've added printlns to verify its not SDL itself which delays the input, but internally in the GPIO handling it must delay updates.

macOS - Build Issue - Cargo errors

Errors in the Cargo Build

Some errors have detailed explanations: E0405, E0412, E0425, E0433, E0463, E0531.
error: could not compile bitflags (lib) due to 58 previous errors
error: could not compile smallvec (lib) due to 146 previous errors
Some errors have detailed explanations: E0405, E0432, E0463.
error: could not compile ppv-lite86 (lib) due to 188 previous errors
make: *** [cargo] Error 101

%

Plans for an icon?

Thanks for making Fab Agon Emulator! It's rather neat and runs well on my Linux laptop.

I'm packing up fab-agon-emulator for Linux, but I need an icon. I have no real artistic skills at all. Is there a preferred icon to use? I couldn't find one in the repo. Would an Agon icon suit you, or would you prefer specific branding?

Black Screen

Issue

Running ./fab-agon-emulator launches a GTK4 window with a blackscreen:

image

Steps

  • Clone Repository
  • Change Directory to Repository
  • Import Submodules
  • Run GNU Make
  • Run ./fab-agon-emulator

Tips

  • Workarounds like running with MOS and VDP variants don't solve the issue
  • No cargo complaints when building source code (only a gamepad warning)
  • Soft resetting the emulator get a beep sound, so I think it is actually a video only SDL issue

System Info

                   -`                    chandler@pc-quarto 
                  .o+`                   ------------------ 
                 `ooo/                   OS: Arch Linux x86_64 
                `+oooo:                  Host: B450 I AORUS PRO WIFI 
               `+oooooo:                 Kernel: 6.6.10-arch1-1 
               -+oooooo+:                Uptime: 5 days, 13 hours, 39 mins 
             `/:-:++oooo+:               Packages: 1858 (pacman) 
            `/++++/+++++++:              Shell: zsh 5.9 
           `/++++++++++++++:             Resolution: 3840x2160 
          `/+++ooooooooooooo/`           DE: GNOME 45.3 
         ./ooosssso++osssssso+`          WM: Mutter 
        .oossssso-````/ossssss+`         WM Theme: Adwaita 
       -osssssso.      :ssssssso.        Theme: HighContrastInverse [GTK2/3] 
      :osssssss/        osssso+++.       Icons: Adwaita [GTK2/3] 
     /ossssssss/        +ssssooo/-       Terminal: kgx 
   `/ossssso+/:-        -:/+osssso+-     CPU: AMD Ryzen 7 3700X (16) @ 3.600GHz 
  `+sso+:-`                 `.-/+oso:    GPU: AMD ATI Radeon RX 6600/6600 XT/6600M 
 `++:.                           `-/+/   Memory: 10456MiB / 15912MiB 
 .`                                 `/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.