Commit Graph

511 Commits

Author SHA1 Message Date
Lephe 3edb80018c
quick fixes and definitely a few bugs in there 2024-03-21 19:08:14 +01:00
Sylvain PILLOT 2e5f99a996
update of README.md 2024-03-21 18:18:32 +01:00
Sylvain PILLOT f4e5b0f91c
addin upscaling now supports usb bulk transfert for screenshot and video capture (of course also text output) 2024-03-21 18:18:29 +01:00
Sylvain PILLOT 9fdd203dbf
bug resolved 2024-03-21 18:14:31 +01:00
Sylvain PILLOT 56fe0dd29c
removed vram switch and timer for fx-as-cg build target 2024-03-21 18:13:51 +01:00
Sylvain PILLOT e5ca6c0fe5
corrected dupdate redirection as per dmode (normal / gray engine) - gray engine now woking on FX9860G_AS_CG target 2024-03-21 18:12:58 +01:00
Sylvain PILLOT 0f3c0ba803
minors fixes 2024-03-21 18:12:58 +01:00
Sylvain PILLOT dceaa2e9cf
[WIP] - conversion of the gray scale engine to the CG for fx_as_cg build target - compiling - linking _ but ony B&W yet 2024-03-21 18:12:58 +01:00
Sylvain PILLOT 87ccadecfd
corrected issue with screen aspect ratio on CG50 during upscaling 2024-03-21 18:12:58 +01:00
Sylvain PILLOT 836706b4dc
[WIP] build-fx-as-cg : upscaling of FX VRAM to CG VRAM + adhoc dupdate 2024-03-21 18:12:58 +01:00
Sylvain PILLOT ff587b6e90
libgint-fxascg - compilation options set to TARGET_FXCG50 2024-03-21 18:12:58 +01:00
Sylvain PILLOT e9ad4e2a79
Start working on libgint-fxascg - compilation options 2024-03-21 18:12:55 +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
Lephe dcb876dfe0
bump version to 2.10.0 2023-04-02 00:10:13 +02:00
Lephe 82258b9f89
keysc: bind SHIFT+7+3+AC/ON to abort() for un-freeze attempts 2023-04-01 23:24:55 +02:00
Lephe eb49f0258d
usb: show prototypes of debug functions in non-debug mode 2023-04-01 23:24:21 +02:00
Lephe b5f0f08183
usb: use optimized DSP loop for read from module 2023-03-26 20:40:48 +02:00
Lephe 1423f40a96
usb: disable USB_LOG_TR() when no log is configured
For some reason this has a *massive* impact on read performance, like
78 ms -> 20 ms on a full-screen read (177 kB) on the CG-50.
2023-03-26 20:40:08 +02:00
Lephe 3a2a194693
usb: unaligned reading (release candidate on features)
The only thing left on the bucket list is performance.
2023-03-26 11:36:40 +02:00
Lephe 4983849510
usb: consolidate reading logic again, now beta-worthy
This looks like it could work in the long term. The only issue that
really hasn't been addressed is how to use packet counters to cut
transactions when there's no ZLP, but we can leave that for later.
2023-03-18 19:51:57 +01:00
Lephe fc1f510288
usb: consolidate reading mode (basic multi-segment reads now working) 2023-03-12 17:53:44 +01:00
Lephe c59b2f90fb
usb: prototype reading mode
Currently only tested with short messages using the fxlink interface.
There is much to be expanded upon, but this is a worthy start.
2023-03-04 18:06:38 +01:00
Lephe eb1f9a35a1
usb: use negative values for error codes
This will allow usb_read_sync() to return a combined error code / size
read integer.
2023-03-04 18:06:38 +01:00
Lephe f4e13afa84
usb: fix a missing PIPESEL access
This resulted in a random PIPECFG access.
2023-03-04 10:59:06 +01:00
Lephe 911691461f
usb: clarify functions used to access endpoint configuration
The previous scheme was really unclear. Now, an endpoint_t carries all
of the endpoint info (instead of the global address being implicitly
its array index, which couldn't be returned).

An _endpoint address_ is the 8-bit value consisting of an endpoint
number (bits 0x0f) and a direction (bit 0x80).

The _global address_ of an endpoint is the address used to communicate
with the host, and it is unique. The _local address_ of an endpoint is
the interface-specific numbering that gint provides to allow interfaces
to compose without risks of address collisions.

The complete data for an endpoint can be queried with the new functions
usb_get_endpoint_by_*() which accept global addresses, local addresses,
and pipe numbers.
2023-03-04 10:58:07 +01:00
Lephe aee67a76f3
usb: clear pipes/FIFOs during world switches, delay configuration
* Clear pipes and FIFOs during world switches to avoid interference
  with the OS. LINK uses pipes 3 and 4, and attempts to add a second
  pipe to the fxlink interface (thus using pipe 4) would interfere with
  LINK and somehow prevent the pipe from being used (Wireshark captures
  showed no responses on that pipe). Forcing a blank state is a valid
  move because that state occurs naturally after a RESET, thus LINK and
  other add-ins must support it as well.

* Delay the application of configuration to the USB configuration stage
  (specifically, the DVST configured interrupt, even though technically
  we should do that in SET_CONFIGURATION 0). This is because we
  previously relied on world switches preserving pipe settings (by not
  changing them) to reconnect the gint driver after a world switch.
  This is no longer possible as the world switch now clears the pipes.
  The new timing makes the driver automatically re-configure as the
  connection restarts.
2023-02-18 17:15:28 +01:00
Lephe c0671649df
usb: prevent double opening
This could happen in gintctl's USB tracer and obviously cause all sorts
of problems.
2023-02-18 16:48:28 +01:00
Lephe 53c67af52d
usb: fix wrong interface numbering (+ comments)
This worked previously because the only interface (number 0) had its
interface descriptor in first position (position 0).
2023-02-18 16:47:49 +01:00
Lephe 6910714c2c
asyncio: remove unused field asyncio_op_t.flying_w 2023-02-16 16:09:53 +01:00
Lephe af5c16a3d3
usb: massively improve writing logic
* Move logic around tracking transfers to asyncio.c.

* Add a "short buffer" holding 0-3 bytes between writes, so that the
  driver performs only 4-byte writes in the FIFO and a short write in
  the commit, if needed.
  - This is partially due to me thinking at some point that degrading
    writing size was impossible, but it might actually be possible by
    writing to FIFO/FIFO+2 or FIFO/FIFO+1/FIFO+2/FIFO+3.
  - In any case I think this new approach wins on performance.

* Get rid of unit_size since we now always use 4 bytes.

* Add a waiting function which is used in usb_close() (and once tested
  should be used in world switches too).

* Eliminate some of the special cases for the DCP, though not all (in
  particular I can't get the commit to rely on the BEMP interrupt yet,
  nor can I properly clear PID to NAK when unbinding).
2023-02-09 23:00:44 +01:00
Lephe 1a61e97ef0
mmu: provide read-only access to ITLB 2023-02-02 14:23:03 +01:00
Lephe a091efc894
usb: replace struct transfer with a more generic async. I/O op structure (WIP)
This lays the ground for both generalization to reading and sharing
that logic with the serial driver.
2023-01-31 16:04:35 +01:00
Lephe 6f758cd36c
defs: allow NULL callbacks in gint_call() 2023-01-31 16:04:35 +01:00