Commit Graph

1180 Commits

Author SHA1 Message Date
Devine Lu Linvega c39d656b52 Added support for multi-byte keyboard input 2024-02-14 15:20:41 -08:00
Sigrid Solveig Haflínudóttir 3fa01a63d8 screen: fix an UB 2024-02-14 16:28:50 +00:00
Devine Lu Linvega 6128c79b18 Fixed issue with EOF 2024-01-13 16:50:05 -08:00
Devine Lu Linvega 7bf469dca2 (file) Clamp length for stat 2024-01-04 19:03:08 -08:00
Devine Lu Linvega 2878639cd7 (file) Expand stat port to show longer file length than a short 2024-01-04 17:20:50 -08:00
Devine Lu Linvega 6712c3eeb9 (file) atomic result for stating 2024-01-04 16:42:47 -08:00
Devine Lu Linvega 69ddbdf0c3 (file) Do not stat twice 2024-01-04 14:26:21 -08:00
Devine Lu Linvega 9ca712237b (file) put_line use put_info 2024-01-04 11:28:21 -08:00
Devine Lu Linvega 1f622ff541 (file) Can File/stat with only 4 bytes of length 2024-01-04 10:58:57 -08:00
Devine Lu Linvega 29823e5bd1 (file) Removed PEEK2 macros 2024-01-04 09:44:46 -08:00
Devine Lu Linvega 22af2ba9c3 (screen) Cache the content of the auto byte 2024-01-03 09:19:09 -08:00
Devine Lu Linvega 011662e1dd (screen) cache elements of the auto byte 2024-01-03 09:05:16 -08:00
Devine Lu Linvega 163d48ec34 Removed extra variable 2024-01-03 08:44:31 -08:00
Devine Lu Linvega 6ba21f8470 (screen) Cache temp values 2024-01-03 08:30:36 -08:00
Devine Lu Linvega 1796eb938f Removed unused variable 2024-01-02 20:24:42 -08:00
Devine Lu Linvega 02f7add4ac Housekeeping 2024-01-02 19:20:16 -08:00
Devine Lu Linvega 78526d56e3 Make uxn instance public 2024-01-02 11:54:12 -08:00
Devine Lu Linvega 8c212fed3e Housekeeping 2024-01-02 11:29:02 -08:00
Devine Lu Linvega a4f4eb7460 Minor optimization in system 2024-01-02 09:55:52 -08:00
neauoire 3f252c0ee3 Fixed crash from missing dev page 2023-12-25 14:39:29 -08:00
Bad Diode 7ec95315ce Fix audio device regression 2023-12-20 09:20:22 +01:00
neauoire b952a2417b (screen) Fixed issue with blending modes 2023-12-18 17:47:24 -08:00
neauoire a62fce6316 Faster screen drawing routines 2023-12-18 14:44:36 -08:00
neauoire e016461263 (screen) Fixed pixel fill bug 2023-11-18 10:56:34 -08:00
neauoire 86c46be310 (Screen) Removed unused variable 2023-11-12 17:05:46 -08:00
neauoire efd70d34be (Screen) Pass addr to sprite 2023-11-12 17:01:16 -08:00
neauoire f744a95a70 (Screen) Cached row only written when visible 2023-11-12 16:54:19 -08:00
neauoire 94f314280c (Screen) Cache row during sprite drawing 2023-11-12 16:46:44 -08:00
neauoire d6a966e113 (Screen) Faster sprite drawing 2023-11-12 12:38:43 -08:00
neauoire 99c492d385 Store instance device in Uxn itself 2023-11-11 20:57:28 -08:00
neauoire 0d055306a8 (screen) Added fill() function 2023-11-11 20:44:15 -08:00
neauoire dd1f3e0725 Housekeeping 2023-11-11 20:32:52 -08:00
neauoire f9de13652c Redraw on resize 2023-11-09 14:45:51 -08:00
neauoire d0a521745a (mouse.tal) Improved implementation 2023-11-09 14:01:11 -08:00
neauoire 6bdb6ca168 Optimized core 2023-11-09 13:46:10 -08:00
Capital 76732db18a (uxnasm.c) Add check for missing output file 2023-11-04 19:04:08 -07:00
Bad Diode 798ebafdc8 Fix potential out of bounds when doing tuning lookup 2023-11-02 17:30:14 -07:00
~d6 6a091365a2 Take pitch into account when computing duration. 2023-11-02 17:30:14 -07:00
~d6 dbf1c72f21 Detect duration for note_off as well as note_on. 2023-11-02 17:30:14 -07:00
neauoire 87d6798593 Formatting 2023-11-02 17:30:14 -07:00
neauoire c4ec4a6340 (audio.c) Default duration is sample length 2023-11-02 17:30:14 -07:00
Bad Diode c26c27a730 Add dei ports 0x2 and 0x4 to audio devices 2023-11-02 17:30:14 -07:00
Bad Diode 9c8ae94825 Change sdl audio to not play until the first pitch is sent 2023-11-02 17:30:14 -07:00
Bad Diode 1d7c96dd3d Update default envelope 2023-11-02 17:30:14 -07:00
Bad Diode 8f3d7b9020 Add minimum decay/release of 10ms 2023-11-02 17:30:14 -07:00
Bad Diode d1c156d56c Fix uxncli missing device pointer 2023-11-02 17:30:14 -07:00
Bad Diode e1074c9018 Increase base volume 4x (1 channel max -12dB) 2023-11-02 17:30:14 -07:00
Bad Diode 0f3b070313 Try to avoid audio callback from working after free 2023-11-02 17:30:14 -07:00
Bad Diode 2c3f9f0f47 Fix wrong freeing of memory 2023-11-02 17:30:14 -07:00
Bad Diode 56c500f25e Restore sample stretching behaviour 2023-11-02 17:30:14 -07:00
Bad Diode 6569c9d749 Add per-cent tuning and change note-off to #00 2023-11-02 17:30:14 -07:00
Bad Diode b2e67c0319 Make sure device memory is freed 2023-11-02 17:30:14 -07:00
Bad Diode e6cf770d2e Fix memory bug and restore previous looping behaviour 2023-11-02 17:30:14 -07:00
Bad Diode 4b64ced669 Restore audio port layout and use 0x5 for duration 2023-11-02 17:30:14 -07:00
Bad Diode 9d1013d3bf Make sure ADSR uses the audiobuf macros 2023-11-02 17:30:14 -07:00
Bad Diode c6713b6d1b Reduce the detuning/pitch table for now 2023-11-02 17:30:14 -07:00
Bad Diode 88ba7a8623 Cleanup warnings 2023-11-02 17:30:14 -07:00
Bad Diode 32853ce8f7 Fix xfading issues 2023-11-02 17:30:14 -07:00
Bad Diode 9437c4e520 Add sample duration handling 2023-11-02 17:30:14 -07:00
Bad Diode 49eda85851 Add initial WIP sample player for new audio device 2023-11-02 17:30:14 -07:00
neauoire 632816a58e (uxn.c) Housekeeping 2023-11-01 20:37:46 -07:00
neauoire d28f4f8165 (uxn.c) Simpler switch argument 2023-11-01 19:14:31 -07:00
neauoire 5c79d2813a (uxn.c) Wrap zero-page 2023-11-01 09:54:57 -07:00
neauoire be438b40c6 (uxn.c) Ram wrapping for LDZ 2023-11-01 09:35:38 -07:00
neauoire 7dfcd2b579 (uxn.c) Wrap RAM on LDA/STA 2023-11-01 09:25:39 -07:00
neauoire 8e976310d3 Improved cli stack debugger 2023-10-31 11:24:00 -07:00
neauoire 81a3dbee5e Better on-screen stack debugging 2023-10-31 11:17:33 -07:00
neauoire 8b2d16ffea (uxn.c) Reconnected tnl core without device masks 2023-10-30 15:12:25 -07:00
neauoire 3d9408e605 (uxn.c) Removed useless mask 2023-10-30 14:22:19 -07:00
neauoire b35bded3e4 (uxn.c) Reconnected old abc core 2023-10-30 14:14:02 -07:00
neauoire d167b88996 (uxncli) Zeroing Uxn 2023-10-30 11:24:04 -07:00
Remko Tronçon 0189721956 (uxn.c) Fix pointer wrapping issues 2023-10-30 11:13:46 -07:00
neauoire f1f1babd47 (uxn.c) Removed used of stack pointer for circular arithmetic 2023-10-30 09:29:40 -07:00
neauoire 85d22bbb90 (uxnasm) Date 2023-10-27 08:43:48 -07:00
Remko Tronçon cff5746e03 (uxnasm.c) Support outputting to stdout using `-` 2023-10-27 08:42:41 -07:00
neauoire 187f92d31d (console.write.tal) Added output example to /error port 2023-10-26 11:29:49 -07:00
neauoire 413f3a82f8 Fixed warnings 2023-10-25 15:25:32 -07:00
neauoire 5babd72e6a Clear screen on debugger toggle 2023-10-25 15:23:56 -07:00
neauoire d97fa9e8b8 Added F12 to toggle borderless 2023-10-25 14:16:23 -07:00
neauoire 7cc77a47f4 Formatted 2023-10-25 11:24:37 -04:00
Leonora Tindall b57554a098 (uxnemu) add fullscreen mode and improve argument handling 2023-10-25 11:23:27 -04:00
Sigrid Solveig Haflínudóttir f8c7e44ea1 console: add a newline at eof 2023-09-21 17:13:17 +00:00
neauoire 5d39dcdbdc (uxncli) Send zero byte and EOF on stdin 2023-09-05 16:34:49 -07:00
neauoire a323cb5c56 (screen.c)Fixed redraw issue 2023-09-02 18:34:04 -07:00
neauoire fb892e4329 Uxn can no longer error 2023-09-02 13:51:03 -07:00
neauoire a65c1cb9a8 Removed LINK req in uxncli 2023-09-01 15:15:15 -07:00
neauoire cfd29ac511 (uxnemu.c) Cache audio values before POKE2 2023-08-30 12:12:30 -07:00
neauoire 3b526bbed6 (screen.c) Always cache value before PEEK/POKE 2023-08-30 12:06:04 -07:00
neauoire f4caad2d51 (uxn.h) Removed unused macro 2023-08-30 11:46:00 -07:00
neauoire 107a25295b (mouse.c) Do not use POKE2 macro 2023-08-30 11:25:15 -07:00
neauoire 1adb6a8cf0 (uxn.c) Do no check for underflow for push-only opcodes 2023-08-30 11:09:46 -07:00
neauoire 55aae6fee9 (uxn.c) Always cache address before PEEK2 2023-08-30 10:49:00 -07:00
neauoire e35501976c (uxn.c) Standardized setter macros 2023-08-30 10:40:04 -07:00
neauoire e5617f83c9 Removed redundant macros 2023-08-30 10:16:38 -07:00
neauoire aeb38c0819 (uxn.c) Cache intermediary result in POKE2 usage 2023-08-30 09:52:47 -07:00
neauoire 07dc45c0e7 (uxn.c) Faster stack registers 2023-08-30 09:40:45 -07:00
neauoire d974111939 (uxn.c) Catch underflow with JCI 2023-08-30 09:24:09 -07:00
neauoire c9183a02e5 (uxn.c) Only one writing macro per line 2023-08-29 10:48:19 -07:00
neauoire 7992d54115 (uxn.c) Removed needless masking of opcode lookup 2023-08-29 09:41:00 -07:00
neauoire a18f8697f0 (uxn.c) Removed unnecessary negation 2023-08-25 13:05:45 -07:00
neauoire 1b1c9fc710 Make emu_masks globals 2023-08-25 09:38:03 -07:00
neauoire d3081fd93d Zero ram on reboot 2023-08-19 07:58:44 -07:00
neauoire 15d09cf15b Added stack pointer accessors to system device 2023-08-19 07:34:14 -07:00
neauoire c6a628e6ae Pre-process dei/deo masks 2023-08-17 09:25:24 -07:00
neauoire 5a77c3e1e3 Removed unused ports from system deo mask 2023-08-16 20:46:24 -07:00
neauoire 63d5dd681a Tightened screen debugger redraw 2023-08-16 14:33:45 -07:00
neauoire d3371d1f73 Muted warnings 2023-08-16 13:53:31 -07:00
neauoire 13bd3ce2d8 Made debugger private to screen 2023-08-16 13:46:07 -07:00
neauoire cfe02013fd Inlined system_cmd 2023-08-15 19:23:55 -07:00
neauoire d8532e7c0e system_load() is now private 2023-08-15 19:21:06 -07:00
neauoire b737dfca85 Combined all system reboots 2023-08-15 19:19:06 -07:00
neauoire bd8b2026b8 Keep boot rom path in system 2023-08-15 18:53:51 -07:00
neauoire ddd3a46156 Standardized main() in uxncli and uxnemu 2023-08-15 18:47:34 -07:00
neauoire b66d3f2612 Abstracted emu_end() 2023-08-15 18:44:16 -07:00
neauoire 4d7ce3e893 Made a console_listen function 2023-08-15 16:24:40 -07:00
neauoire 8d4074b372 Removed console queue from emu_start 2023-08-15 16:11:21 -07:00
neauoire c0d45d1440 Try loading rom during system init 2023-08-15 16:06:29 -07:00
neauoire 9a7a11003f System device handles boot 2023-08-15 15:59:32 -07:00
neauoire a77434a671 Reset device page on soft reboot 2023-08-13 21:11:18 -07:00
neauoire de7b24e820 Added soft reboot 2023-08-13 18:48:32 -07:00
neauoire a394dcb999 Updated date 2023-08-10 08:50:14 -07:00
neauoire c7884b625f Fixed issue where redraw region always started at 0 2023-08-10 08:47:34 -07:00
neauoire 015072fea4 (uxn.c) Removed offset in PUT() 2023-08-09 19:43:28 -07:00
neauoire 18302105c6 (uxn.c) PUT2 should not use POKE 2023-08-09 19:38:18 -07:00
neauoire b610a88083 (uxn.c) Faster SET() macro 2023-08-09 19:31:33 -07:00
neauoire 23203381a7 (uxn.c) Aligned macros 2023-08-09 16:18:35 -07:00
neauoire 1bd67977fb (uxn.c) Added missing labels 2023-08-09 16:11:38 -07:00
neauoire 837b839b4c (uxn.c) Using tnl core 2023-08-09 13:20:03 -07:00
neauoire e90c716cdc Merged POP2 calls 2023-08-08 20:00:27 -07:00
neauoire 5675d8e65d (uxn.c) Merged PUSH calls 2023-08-08 19:53:23 -07:00
neauoire b523162cf8 (uxn.c) Joined POP22 PUSH22 2023-08-08 19:38:09 -07:00
neauoire 52fac7c52b Faster Pushxx 2023-08-08 17:23:18 -07:00
neauoire 901f76ed52 Merged POPxPOPx and PUSHxPUSHx 2023-08-08 17:13:39 -07:00
neauoire a11660f57d (uxnasm.c) Fixed issue with lambda 2023-08-08 16:46:35 -07:00
neauoire d15b2367f3 (uxnasm.c) Added comma after date 2023-08-08 16:39:33 -07:00
neauoire c26de05efa Added version to uxnasm 2023-08-08 16:35:35 -07:00
neauoire 2e25f6c27e Added version flag to uxnemu 2023-08-08 15:56:40 -07:00
neauoire 9c25f801d0 Print system versions for uxncli with -v flag 2023-08-08 15:31:48 -07:00
neauoire 2e1b56018b Added per-device versions 2023-08-08 14:44:17 -07:00
neauoire 97d299261f Setting up stage to add versioning 2023-08-08 14:13:07 -07:00
neauoire 13570f790d (screen.c) Hide stack debugger when empty 2023-08-08 10:39:11 -07:00
neauoire 7090ab72b9 Returned the on-screen debugger 2023-08-08 10:27:41 -07:00
neauoire 27ff275cea Merge branch 'main' of git.sr.ht:~rabbits/uxn 2023-08-08 09:23:49 -07:00
neauoire a1d2bfbbb0 Removed DEI/DEO from uxn-tnl core 2023-08-08 09:23:11 -07:00
Sigrid Solveig Haflínudóttir 9888dcba03 DEVR: use bitwise OR to avoid C compiler (kencc) promoting types to int and doing other weird stuff 2023-08-08 04:22:10 +02:00
Sigrid Solveig Haflínudóttir a87ececb71 remove SDL_RENDERER_TARGETTEXTURE (unused) 2023-08-08 02:49:02 +02:00
neauoire fda12df0f1 Housekeeping 2023-08-07 16:35:34 -07:00
neauoire c68936b475 (uxn.c) Renamed POP/PUSH to POPx/PUSHx 2023-08-07 16:22:57 -07:00
neauoire fcf12a12dc (uxn.c) Connected to device masks 2023-08-07 16:12:12 -07:00
neauoire 6d7696a760 (uxn.c) Reconnected old core 2023-08-07 12:20:50 -07:00
neauoire 222246748e (screen.c) Inlined sprite drawing function 2023-08-05 10:31:22 -07:00
neauoire 789fb0cd8b (screen.c) Faster sprite drawing 2023-08-05 09:59:08 -07:00
neauoire b4d7818632 Added auto byte sprite flipping 2023-08-04 11:55:17 -07:00
Derek Stevens ffc604fba3 run: set window title from rom
Signed-off-by: Derek Stevens <nilix@nilfm.cc>
2023-08-04 11:47:37 -07:00
neauoire 2ddc20b1b6 (uxnasm) Generalized lambdas as common labels 2023-08-02 19:48:48 -07:00
Cellmaker 9ca8e9623d added microtonality to the audio device 2023-07-30 15:03:34 -07:00
Devine Lu Linvega 3a8cc42e0e Better labels for lambdas 2023-07-29 16:24:39 -07:00
Devine Lu Linvega 32cc690539 (uxnasm) Lambdas support 2023-07-29 16:14:19 -07:00
Devine Lu Linvega 0efea06b46 Only update viewport rect on resize 2023-07-26 08:37:58 -07:00
Devine Lu Linvega 289d13aeb4 Returned emulator border 2023-07-25 21:43:26 -07:00
Devine Lu Linvega 12509b7e6b Merged show() and gameloop() 2023-07-25 14:56:26 -07:00
Devine Lu Linvega db2117ee0a Resize emulator on start 2023-07-25 14:46:37 -07:00
Devine Lu Linvega 4286e0ba53 Grouped emulator routines together in uxnemu 2023-07-25 14:42:10 -07:00
Devine Lu Linvega 969f03e0ba Uxnemu skips resizing window until reset vector is done. 2023-07-25 14:30:51 -07:00
Devine Lu Linvega dcb434760b Housekeeping 2023-07-24 09:48:49 -07:00
Devine Lu Linvega 26bc456a1b (screen.c) Blending 00 only clears in accordance to sprite at addr 2023-07-23 19:32:41 -07:00
Devine Lu Linvega 867883409e Emulator functions prefixed with emu_ instead of uxn_ 2023-07-23 19:18:11 -07:00
Devine Lu Linvega ec973c2ea6 Only set emu size on screen resize, no constant checks 2023-07-23 16:24:09 -07:00
Devine Lu Linvega 29e664c6b8 Do not re-set window size when unchanged 2023-07-23 16:10:48 -07:00
Devine Lu Linvega 4db53c1cc6 (uxn.c) Housekeeping 2023-07-23 11:06:21 -07:00
Devine Lu Linvega cb41bdfa9a (uxn.c) Removed PUSH/PUSH2 macros 2023-07-23 10:13:16 -07:00
Devine Lu Linvega bf1ee0298d (uxn.c) Fixed issue where JSRr was pushing to wrong stack 2023-07-23 09:57:32 -07:00
Devine Lu Linvega db6f7d9fbf (uxn.c) Aligned BRK/JCI/JMI 2023-07-23 09:52:20 -07:00
Devine Lu Linvega bc4ec9ea5f (uxn.c) JSI makes use of SET() macro 2023-07-23 09:41:11 -07:00
Devine Lu Linvega 6f15a96d91 (uxn.c) LIT opcodes use SET() macro 2023-07-23 09:36:18 -07:00
Devine Lu Linvega b020732d6d (uxn.c) PUT2 should use POKE2 macro 2023-07-23 09:21:09 -07:00
Devine Lu Linvega 41a3a6b358 (uxn) Removed z stack assignment 2023-07-22 20:53:23 -07:00
Devine Lu Linvega 92e06e2eda Removed window padding 2023-07-22 19:52:17 -07:00
Sigrid Solveig Haflínudóttir 0c9e67b9be uxncli: stop on EOF as there is nothing left to run (besides endless loop) 2023-07-17 00:52:52 +02:00
Sigrid Solveig Haflínudóttir 51d43a6989 screen: don't leak memory and don't crash if failed to adjust for new screen size 2023-07-17 00:50:19 +02:00
Sigrid Solveig Haflínudóttir dbcb8ed050 retry_realpath: check before possibly writing out of bounds 2023-07-10 17:21:36 +00:00
Sigrid Solveig Haflínudóttir 784467564c uxnemu: fix two warnings on 9front build 2023-07-10 15:37:42 +00:00
Sigrid Solveig Haflínudóttir 05356e23b1 capture_screen: check for errors 2023-07-10 15:35:35 +00:00
Devine Lu Linvega ff6d9e39ca (uxnemu) Fixes issue where non-zero console/type occurs even when empty, fixed by hikari_no_yume 2023-06-29 14:23:16 -07:00
Weeble f5c816d215 (screen.c) Fix sprite draw at screen edge
Problem - Sprites can be drawn at X/Y coordinates >= 0xfff9 to appear
partially over the left/upper screen boundary. But the dirty-rectangle
calculation doesn't account for this, so these updates will only appear
on the screen if something *else* dirties this area of the screen. This
can be observed in /projects/examples/devices/screen.tal where these
edges of the screen show stale content.

Solution - Detect wrapping and expand the dirty rectangle appropriately.
Change screen_change to take Uint16 to make sure values are truncated to
the intended range. Ignore changes that are fully off the screen.
2023-06-29 07:41:42 -07:00
Devine Lu Linvega e930804c4b Do not print message on quit 2023-06-09 09:29:25 -07:00
Devine Lu Linvega fe10cfecef Improved usage standard message 2023-06-08 09:47:18 -07:00
neauoire 5dd7fec729 Removed clear between redraws and moved to set_window_size 2023-06-07 08:23:42 -07:00
neauoire e147b46b55 Snake_cased some SDL variables 2023-06-07 08:03:28 -07:00
Devine Lu Linvega 1d4ae74e41 Removed multiplication from SET macro in uxn core 2023-05-17 20:39:03 -07:00
Sevan Janiyan 305b8469b0 Use the correct definition to obtain snprintf(3)
At some point snprintf(3) prototype became guarded off in stdio.h.
Defining _C99_SOURCE makes it visible.
On legacy Darwin, such a guard was not present so the definition
has no impact on the build, but on "modern" macos it has the desired
effect.
Build tested on OS X 10.4 and macos 10.15.
2023-05-15 08:32:48 -07:00
Sevan Janiyan b5b3177c68 Switch to using SDL_CreateRGBSurface() SDL_CreateRGBSurfaceWithFormat() was introduced in SDL 2.0.5 whereas SDL_CreateRGBSurface() is available since SDL 2.0. This allows uxn to run on legacy systems where it's not possible to reach SDL 2.0.5 but prior versions are, such as Mac OS X Tiger. 2023-05-14 19:34:55 -07:00
Sevan Janiyan 822a7fea54 Use the audio format native to host AUDIO_S16 defaults to little endian format which causes issues when running on big endian systems. Use AUDIO_S16SYS instead which sets to whatever endian the system uxn is being built on is. 2023-05-14 19:34:55 -07:00
~d6 310ba97ef6 Improve screen vector timing somewhat.
This patch tries to improve the accuracy of our
screen refresh timing. Notably, it tries to ensure
we don't introduce extra delay in our timing based
on how long the screen vector takes to evaluate.

We also try to ensure we only call SDL_Delay when
we have at least 1ms to wait.
2023-05-09 13:12:23 -07:00
Devine Lu Linvega 09d9990a62 (screen) Fixes warnings 2023-05-04 20:45:52 -07:00
Devine Lu Linvega 77edd1dbbf (screen) Renamed pixels attr to layer 2023-05-04 20:32:44 -07:00
Devine Lu Linvega d80885ee22 (screen) Housekeeping 2023-05-04 20:17:38 -07:00
Devine Lu Linvega 98bd2a7849 (screen) Use uxn_screen global 2023-05-04 17:43:44 -07:00
Devine Lu Linvega 9416a0e813 Removed layer struct 2023-05-04 11:33:31 -07:00
Devine Lu Linvega 8f98281d89 (screen) Only repaint changed pixels 2023-05-04 11:15:16 -07:00