~rabbits/uxn

4 3

uxn's aesthetical vision

Details
Message ID
<ZzTmS4lSUp8Dh8O5@arendt>
DKIM signature
pass
Download raw message
Hello all, Devine,

I've noticed activity in the uxn repo related to the addition of a BIOS concept
and this message is a reaction to it. While this is a question/critique, I hope
it doesn't come across as a "you shouldn't do that" type of message, which it
isn't.

The way I understand uxn's aesthetical vision is in the form of an invitation:
let's continue this quest from another age where we see what we can fit in 64K.

This constraint leads to creative asceticism, an underexplored path in software
development. We have a nice set of small applications showing that this path
yields interesting results. Many of them can compare favorably to the same type
of applications in the "big world" precisely because this asceticism shaped
their specs.

Of course, there are some things you can't build in 64K. However, a 64K machine
with a paging mechanism can do anything... but in a much uglier way than its
lots-of-bits counterparts! Such a mechanism make it harder to see meaning in the
original creative constraints.

I don't know the reasons behind this addition of paging features in uxn. My
naive supposition is that there's a desire to see something realized in uxn
that isn't possible to realize within 64K.

This is where I repeat: I don't mean to say you shouldn't do it, I'm just
curious about the motivations and consequences.

Isn't there a risk of fragmenting the uxn ecosystem? Some apps will stick to
asceticism, some won't. Will they be easy to distiguish[1]? Or is it just me
who see asceticism where there isn't?

Regards,
Virgil

[1]: a Buddha badge or something :)
Details
Message ID
<3f3c3b87-9c74-4621-9f55-47c0a70853a3@100r.co>
In-Reply-To
<ZzTmS4lSUp8Dh8O5@arendt> (view parent)
DKIM signature
pass
Download raw message
Hi Virgil, and everyone :)

That's a good question, and there's a good answer to it.

To start off, varvara has had pagination for nearly as far as I can 
recall. One of the first projects Rek and I created for Uxn was Oquonie, 
which is around 400kb and that was many years ago, so the pagination 
feature is nothing new. It has been part of the docs for nearly as long, 
and it's a feature found in uxn5, uxnds, uxnemu, uxn32, raven, etc..

While uxnemu is the sort of standard cross-platform thing people are 
most likely to use, uxn11(the X11 implementation of uxn) is the one I 
use everyday, and I built it especially to respond to the needs I have 
of it, it's nearly identical with uxnemu except for a few things:

- 1) It has a unix userspace which allows me to listen to music through 
m291, which I do every day from the moment I wake up and various other 
things like that.

- 2) As of yesterday, I ripped out all the debugger stuff from uxn11, 
which was ugly and didn't belong in the c code anyways:

https://git.sr.ht/~rabbits/uxn11/commit/21296bddb12d856327fe1862fb2e39f1a905661c

And instead, I made it so all this is done in uxn space(I much rather 
write uxn than c, esp for graphical stuff):

https://git.sr.ht/~rabbits/uxn11/tree/main/item/src/utils/bios.tal

The bios rom display the rom's metadata, and allow me to control various 
parts of the running rom(like a game genie), such as displaying the 
rom's symbols in the screen at the various addresses, which I need for 
some projects I am working on. To an other uxn11 user, this changes 
nothing except that the debugger is prettier. For a uxn11 developer, 
that means that the debugger is written in uxn itself and can be hot 
loaded depending on someone's needs and there's a bunch less debugger 
drawing code in the screen device source.

Now, if you're not a uxn11 user, and don't have a debugger, and want to 
use this bios rom thing, just wait, it's not finished and it's not 
documented. Consider what I'm doing research, I'm looking into parts of 
the emulator that can just as well be done in uxn userspace and removed 
in order to simplify the emulator.

I hope that answers your question :)

Let me know!
Dll

On 2024-11-13 09:47, Virgil Dupras wrote:
> Hello all, Devine,
> 
> I've noticed activity in the uxn repo related to the addition of a BIOS concept
> and this message is a reaction to it. While this is a question/critique, I hope
> it doesn't come across as a "you shouldn't do that" type of message, which it
> isn't.
> 
> The way I understand uxn's aesthetical vision is in the form of an invitation:
> let's continue this quest from another age where we see what we can fit in 64K.
> 
> This constraint leads to creative asceticism, an underexplored path in software
> development. We have a nice set of small applications showing that this path
> yields interesting results. Many of them can compare favorably to the same type
> of applications in the "big world" precisely because this asceticism shaped
> their specs.
> 
> Of course, there are some things you can't build in 64K. However, a 64K machine
> with a paging mechanism can do anything... but in a much uglier way than its
> lots-of-bits counterparts! Such a mechanism make it harder to see meaning in the
> original creative constraints.
> 
> I don't know the reasons behind this addition of paging features in uxn. My
> naive supposition is that there's a desire to see something realized in uxn
> that isn't possible to realize within 64K.
> 
> This is where I repeat: I don't mean to say you shouldn't do it, I'm just
> curious about the motivations and consequences.
> 
> Isn't there a risk of fragmenting the uxn ecosystem? Some apps will stick to
> asceticism, some won't. Will they be easy to distiguish[1]? Or is it just me
> who see asceticism where there isn't?
> 
> Regards,
> Virgil
> 
> [1]: a Buddha badge or something :)
Details
Message ID
<FC589BB1-A75C-40ED-9D63-173EBB962377@gmail.com>
In-Reply-To
<3f3c3b87-9c74-4621-9f55-47c0a70853a3@100r.co> (view parent)
DKIM signature
pass
Download raw message
> On Nov 13, 2024, at 1:03 PM, Hundred Rabbits <rabbits@100r.co> wrote:
> 
> Hi Virgil, and everyone :)
> 
> That's a good question, and there's a good answer to it.
> 
> To start off, varvara has had pagination for nearly as far as I can recall. One of the first projects Rek and I created for Uxn was Oquonie, which is around 400kb and that was many years ago, so the pagination feature is nothing new. It has been part of the docs for nearly as long, and it's a feature found in uxn5, uxnds, uxnemu, uxn32, raven, etc..
> 
> While uxnemu is the sort of standard cross-platform thing people are most likely to use, uxn11(the X11 implementation of uxn) is the one I use everyday, and I built it especially to respond to the needs I have of it, it's nearly identical with uxnemu except for a few things:
> 
> - 1) It has a unix userspace which allows me to listen to music through m291, which I do every day from the moment I wake up and various other things like that.
> 
> - 2) As of yesterday, I ripped out all the debugger stuff from uxn11, which was ugly and didn't belong in the c code anyways:
> 
> https://git.sr.ht/~rabbits/uxn11/commit/21296bddb12d856327fe1862fb2e39f1a905661c
> 
> And instead, I made it so all this is done in uxn space(I much rather write uxn than c, esp for graphical stuff):
> 
> https://git.sr.ht/~rabbits/uxn11/tree/main/item/src/utils/bios.tal
> 
> The bios rom display the rom's metadata, and allow me to control various parts of the running rom(like a game genie), such as displaying the rom's symbols in the screen at the various addresses, which I need for some projects I am working on. To an other uxn11 user, this changes nothing except that the debugger is prettier. For a uxn11 developer, that means that the debugger is written in uxn itself and can be hot loaded depending on someone's needs and there's a bunch less debugger drawing code in the screen device source.
> 
> Now, if you're not a uxn11 user, and don't have a debugger, and want to use this bios rom thing, just wait, it's not finished and it's not documented. Consider what I'm doing research, I'm looking into parts of the emulator that can just as well be done in uxn userspace and removed in order to simplify the emulator.
> 
> I hope that answers your question :)
> 
> Let me know!
> Dll

Wait, a Unix userspace? Are there docs for that? I’d love to hack on that. Does the music playback/audio processing happen in Uxn or is it controlling an external program? I think I’ve seen the latter before but not the former.

Thanks,
Byte (from Discord and fedi)
Details
Message ID
<ZzUkCWT/7xMKRO0j@arendt>
In-Reply-To
<3f3c3b87-9c74-4621-9f55-47c0a70853a3@100r.co> (view parent)
DKIM signature
pass
Download raw message
On Wed, Nov 13, 2024 at 10:05:28AM -0800, Hundred Rabbits wrote:
> To start off, varvara has had pagination for nearly as far as I can recall.
> One of the first projects Rek and I created for Uxn was Oquonie, which is
> around 400kb and that was many years ago, so the pagination feature is
> nothing new. It has been part of the docs for nearly as long, and it's a
> feature found in uxn5, uxnds, uxnemu, uxn32, raven, etc..

I was aware of System/expansion, but I think it's used pretty exclusively for
assets right? It seems to me that the concept of paging around executable code
crosses an important line.

> Consider what I'm doing research, I'm looking into parts of the emulator
> that can just as well be done in uxn userspace and removed in order to
> simplify the emulator.
> 
> I hope that answers your question :)

Yes, thanks. I was under the impression that you were implementing a
soon-to-be-published spec. In any case, I'm satisfied, my point came across.
Now if you ever find yourself speccing out code paging for varvara, I know
you'll tell yourself "Virgil wouldn't approve". Whether that stops you is your
own business :)

Regards,
Virgil
Details
Message ID
<82111862-2ed7-470f-920b-8696594de72a@100r.co>
In-Reply-To
<ZzUkCWT/7xMKRO0j@arendt> (view parent)
DKIM signature
pass
Download raw message
 > I was aware of System/expansion, but I think it's used pretty 
exclusively for assets right? It seems to me that the concept of paging 
around executable code crosses an important line.

Oh, I haven't done anything like that yet, and I'm not planning to. Even 
the BIOS is not doing anything like paging code. The main uxn core's 
stacks and device page is located in the 0x8000 range of the bios core's 
ram so it can monitor what is held in the stacks and print them. The 
core is not doing any kind of multi-tasking, the bios is another uxn 
instance running its own programs in its own memory space.

I made this to simplify things and not bloat the emulator, if anything, 
this removes code from the emulator :)

https://assets.merveilles.town/media_attachments/files/113/477/353/559/523/692/original/e73c0164b6a2e967.png

It's really nice, in the screenshot, the debugger is overlayed on top of 
the game and prints the stack as well as grabbing the metadata in the 
rom file.

I'm hoping to add a few more things here, like a way to change the 
screen colors with sliders, maybe have a clock that displays the system 
time even :)

Dll
Reply to thread Export thread (mbox)