Commit Graph

532 Commits

Author SHA1 Message Date
Lephe 5c3dc3220a
intc: add definition for SCIF interrupt 2024-04-14 18:21:14 +02:00
Lephe 7ac2ae25f2
gdb: stdout/err redirect + support swbreak + optional bridge logs 2024-04-13 09:20:01 +02:00
Lephe d065a17063
gdb: add icons on mono (bypassing video intf for now) 2024-04-10 08:29:28 +02:00
Lephe 0afd05848a
gdb, video, r61524: gdb visual feedback + start video intf on CG
- Define a draft of the video interface
- Implement that dragt for CG for a single mode
  * Includes stub of brightness setting from disassembling 3.60
- Use the video interface to show visual feedback on GDB on CG

Using the video interface avoids directly linking into a driver, which
will serve modularity in gint 3.
2024-04-09 08:57:46 +02:00
Lephe b4c0fc7cea
gdb: support 'C' packet for resuming with signals
It's not super useful as a feature but it means that a naive "continue"
after e.g. a segfault will kill the program and not confusingly go into
an infinite loop.
2024-04-01 00:50:07 +02:00
Lephe 2755596d59
meta: build with -g to allow add-in debugging 2024-03-31 14:14:52 +02:00
Lephe ab528b27a8
gdb: provide more accurate stop reasons 2024-03-30 21:42:34 +01:00
Lephe d9414bb6f2
gdb: allow gdb stub to automatically start when a crash occurs
The user can still gdb_start() + gdb_main(NULL) manually, which allows
e.g. early setup of breakpoints. The start_on_except mechanism is the
lazier method where we just run the add-in normally and start fxsdk gdb
on the PC *after* a crash occurs.
2024-03-30 21:41:35 +01:00
Lephe 4623d790cc
ubc: slight cleanup
It is guaranteed by the driver model that drivers are powered on when
gint is active. Sharing the driver isn't too useful because we can't
remote debug in the OS world anyway, there's no USB driver there.
2024-03-30 21:41:08 +01:00
Lephe faead4bc1d
Merge remote-tracking branch 'redoste/gdb' into dev (#27) 2024-03-25 08:05:48 +01:00
Lephe f8208d093b
meta: add note in README about build-fxg3a
This README is seriously outdated by now...
2024-03-24 11:17:10 +01:00
Lephe 946d4d9a6f
gray, r61524: gray engine for r61524
gray/engine.c looks terrible by now and it will have to be cleaned up in
the future, with the whole video modes abstraction.
2024-03-24 08:53:12 +01:00
Lephe 3a42b5d386
gint: switch away from FX9860G/FXCG50 macros
Not changing much for now, just distilling them into hardware/OS/render
macros. Later on the rendering stuff will become more dynamic and down
the line I want to unify the APIs more.
2024-03-24 08:28:22 +01:00
Lephe ee109e4977
r61524: improve mono emulation with centering and a border
This reaches 7.5 ms so nothing to add there.
2024-03-24 08:28:12 +01:00
Lephe 5548bf68ab
render: add R61524 backend to render-fx for build-fxg3a target 2024-03-23 12:09:53 +01:00
Lephe 28bea2e1ce
gint: switch from file filters to config macros + basic fxg3a target
Nothing interesting in this commit, just moving files around, making
sure every target compiles every file, and controlling with macros
instead.

Basic support for fxg3a target in CMakeLists.txt, cmake/FindGint.cmake,
giteapc.make and include/gint/config.h.in. The rest is forgettable.
2024-03-23 10:02:51 +01:00
Lephe b2b1f00d04
fs: take const descriptor in open_generic() 2024-03-19 19:03:33 +01:00
Lephe 5ff6a518f6
gint: memory micro-optimizations 2024-03-19 19:03:17 +01:00
Lephe bc74586a2c
render: parametrize existence of dmode in config.h
This is the first of many steps designed to reduce gint's reliance on
the FX9860G and FXCG50 macros by describing the compile target more
symbolically. The goal is to allow both for g3a compilation of fx-API
code and for a potential CP port.
2024-03-19 18:37:13 +01:00
Lephenixnoir e0ac25fbb0
render: improve implementation of dpoly()
* Honor dwindow settings immediately (avoids useless dline() calls)
* Bound to ymin/ymax instead of doing many useless cut computations
* Remove the need for floating-point operations and division
2024-03-02 23:16:22 +00:00
Sylvain PILLOT b802e8edef
added dpoly() rendering method 2024-03-01 17:37:35 +00:00
Lephe d8005b5d49
kmalloc: support for PRAM0 arena
PRAM0 is mostly standard memory but it can only be read from and written
to with 32-bit memory accesses.
2024-02-04 22:10:25 +01:00
Lephe e50769c824
kmalloc: add kmalloc_remove_arena() function 2024-02-04 22:10:01 +01:00
Lephe 542b4f0a81
fs: fix fugue_dir_explore() error not propagating to open() 2024-02-04 18:50:37 +01:00
Lephe 1e220af616
fs: fix incorrect OoM handling in fugue_dir_explore()
Non-NULL dp would be returned by alloc failure path despite having been
freed.
2024-02-04 18:17:41 +01:00
Lephe caa68b08bf
render-fx: add image formats in public API 2024-01-31 15:51:39 +01:00
Lephe 833025f5dd
render-fx: turn bopti_image_t's data array into a pointer
It used to be a flexible array member because in the old days fxconv
could only output a fixed set of bytes, so any referencing was out the
question. Nowadays fxconv can output pretty much anything. Separating
the data pointer will be useful for PythonExtra to expose it as a Python
bytes() or bytearray() object while using the gint API.
2024-01-29 09:49:34 +01:00
Lephe fd5a70e21b
gint: add power-off feature and shortcut in getkey() 2024-01-16 11:42:49 +01:00
Lephe 5655699cd8
gint: reload on-chip sections after world, with option to backup (#26)
Solves the power off crash, at least for programs that don't store
long-term data in on-chip memory.
2024-01-16 11:07:41 +01:00
Lephe 235fa8a361
keydev: fix timing or repeat release 2024-01-07 16:47:51 +01:00
Lephe 18a7b9ae5b
display: add dcircle() and dellipse() rendering functions
For PythonExtra#2.
2024-01-04 12:00:58 +01:00
Lephe 2bb5294578
gint: avoid annoying banner on return from menu on fx-CG
Instead of using GetKeyWait(), we directly call into an internal OS
function, which avoids the need to press a key before we can redraw over
the OS banner and VRAM when coming back. The disassembly to locate the
function was developed by Dr-Carlos.

We still have to redraw when coming back; getkey() will do it by
dupdate() by default, and it that's not a possibility for the
application an option to receive a special event and handle it manually
is provided.
2023-08-19 22:52:53 +02:00
Lephe 6d86c54507
keyboard: add keypressed() and keyreleased() functions 2023-07-24 14:08:23 +02:00
Lephe 16259deb20
render: expose some internal text rendering utilities 2023-06-04 23:24:34 +02:00
redoste 6f53fa7842
gdb: move recv buffer to the heap to support fx-9860G III smaller .data 2023-06-04 23:20:42 +02:00
redoste 5087a91101
gdb: make memory map XML more generic to ensure fx-9860G III support 2023-06-04 23:20:42 +02:00
redoste 7d3663483f
gdb: break before panicking in user code 2023-06-04 23:20:42 +02:00
redoste 6efcfa6018
ubc: panic when trying to break in code using register bank 1 2023-06-04 23:20:42 +02:00
redoste 0b7d8d6800
ubc: ignore breaks when no debug handler is set 2023-06-04 23:20:42 +02:00
redoste 9c22ecea8d
gdb: prevent TLB misses during arbitrary memory RW operations 2023-05-30 01:03:38 +02:00
redoste 02a97719ac
gdb: break when a message is recived during execution
This behaviour implements support for breaking the add-in during
execution by pressing ^C in GDB without setting a breakpoint beforehand.
2023-05-27 19:06:29 +02:00
redoste 33dae5d218
ubc: add a global lock to inform if a UBC break is being handled 2023-05-27 18:59:24 +02:00
redoste 21ff5c1d53
usb: expose the context of the interrupted function on USB interrupt 2023-05-27 18:52:05 +02:00
redoste 76c82beec6
intc: allow user-space handlers to access the interrupted context
This workaround using a gint_call_t with an odd address is not realy the
cleanest idea but it helps keep the existing intc_generic_handler in
the 32 bytes size limit of the VBR space.
2023-05-27 18:36:15 +02:00
redoste eca05ec64c
gdb: send memory map XML to GDB to enforce hw-breakpoints 2023-05-27 17:50:44 +02:00
redoste 2f6ee59d43
gdb: add memory write support 2023-05-24 23:30:29 +02:00
redoste 3aa11b4252
gdb: add register write support 2023-05-24 23:07:41 +02:00
redoste eab3184dbb
gdb: add "kill request" packet support by abort()ing the add-in 2023-05-24 22:22:54 +02:00
redoste 238bccddbe
gdb: add hw-breakpoint and single step support using the UBC 2023-05-24 22:21:01 +02:00
redoste aa0ff7b10b
ubc: basic User Break Controller driver 2023-05-24 22:21:01 +02:00