Jump to content
IGNORED

New emulator "Felix" - help needed


Recommended Posts

Your debug feature was really useful today. It is so easy to debug weird glitches when you get the entire trace of what happens in a file.

 

Without that feature I would still be banging my head against the wall with expanding cart space and adding lseek SEEK_CUR mode.

10 hours ago, SlidellMan said:

I just downloaded it, and am playing Switchblade II on it. However, there is going to be a demand for gamepad support. Overall, a fine program.

I've added a support for gamepads in xinput mode. Any feedback welcome.

 

8 hours ago, karri said:

Your debug feature was really useful today. It is so easy to debug weird glitches when you get the entire trace of what happens in a file.

Yes, tracing is a fine alternative to interactive debugging with breakpoints and stepping etc. Even more - great its advantage is the full history as usually the bug begins way before we see its results.

In next version there will be greater integration with lua scripts. There will be ability to write execute/read/write traps for any address and in such trap you could enable/disable tracing, modify registers/memory or print something to a debug window.

 

  • Like 1
  • Thanks 1
42 minutes ago, laoo said:

I've added a support for gamepads in xinput mode. Any feedback welcome.

A nice alternative for testing builds. Flashing a 2M cart takes some time. So I may do most of the tests using Felix. And I still have two PC gamepads I got for playing Cuphead.

  • 3 weeks later...

@Nop90 Long story short - at the moment Felix does not have working comlynx emulation. But I hope it can be said that "does not have yet".

In some early version I've experimented with two instances of emulator in one executable and there was serial emulation that even worked for code that I've wrote (both instances could exchange information and it worked on real hardware too) but when it comes to official games it failed miserably. There is literal chaos on the wire when RedEye is talking. I must devise something smart to handle it. And I'll try to communicate two emulator instances through shared memory. I don't think that it will be possible to play multiplayer in official games through network, although new games obeying some constraints could do it.

 

  • 4 weeks later...

I'm trying to test the debugger, but with this lua script

 


log = "trace.log";

ram.r[0xc5] = function( value )
  traceCurrent();
  return value;
end

 

I receive the error: global 'traceCurrent' is not callable (a nil value)

 

I'm doing something wrong?

5 hours ago, Nop90 said:

I'm trying to test the debugger, but with this lua script

 

 


log = "trace.log";

ram.r[0xc5] = function( value )
  traceCurrent();
  return value;
end

 

 

I receive the error: global 'traceCurrent' is not callable (a nil value)

 

I'm doing something wrong?

@Nop90The script is perfectly correct. It will log only those instructions that read memory location $c5. The only issue is that I've updated the docs to version 0.6 with enhanced debugger support. It's not completed / released yet (not all planned functionality is there) and there is a bug in speed (emulation plays slightly too fast and the audio is distorted). But I can submit fresh compilation that can be treated as a pre-release. See to the "Debug" menu for some GUI options and keyboard shortcuts.

 

 

I've also added documentation to trap() / brk() functions that may be usefult.

Edited by laoo

@Nop90

I'm not sure, but going back from this pre-release version to version 0.5 might require to delete content of c:\Users\[user]\AppData\Local\Felix\

Some settings are different and there might be errors when older version will try to load newer settings.

I have no luck. The version you posted crashes when the event happnes.

 

I also tried a different approach with this script

 


ram.r[0xc5] = function (value,address)
  local file = io.open( "trace.txt", "a" );
  file:write( "Read 0xc5 at " );
  file:write(address);
  file:write( "\n" );
  file:close()
  return value;
end

 

this works fine, but address is not the the PC value, but the read addrees, so at the moment it's of no use. Is there a way to access the PC value from lua?

 

What I'm trying to do is to patch the Lemmings rom to add cheat codes: a user on the forum asked me to modify the rom to have infinite tools in every levels (I have the addresses in ZP to change from a mednafen cheat file).

 

The funny thing is that with Felix it's very easy to add these cheats using a lua script:

 


ram.r[0xc5] = function ()
  return 10;
end
ram.r[0xc6] = function ()
  return 10;
end
ram.r[0xc7] = function ()
  return 10;
end
ram.r[0xc8] = function ()
  return 10;
end
ram.r[0xc9] = function ()
  return 10;
end
ram.r[0xca] = function ()
  return 10;
end
ram.r[0xcb] = function ()
  return 10;
end
ram.r[0xcc] = function ()
  return 10;
end

 

 

 

On 2/20/2022 at 11:34 AM, laoo said:

@Nop90 Long story short - at the moment Felix does not have working comlynx emulation. But I hope it can be said that "does not have yet".

In some early version I've experimented with two instances of emulator in one executable and there was serial emulation that even worked for code that I've wrote (both instances could exchange information and it worked on real hardware too) but when it comes to official games it failed miserably. There is literal chaos on the wire when RedEye is talking. I must devise something smart to handle it. And I'll try to communicate two emulator instances through shared memory. I don't think that it will be possible to play multiplayer in official games through network, although new games obeying some constraints could do it.

 

i was able to run 8 emulator cores with comlynx. but you have to play dirty tricks to get around the timeouts within each instance to keep them in sync.

f.e. stop emulation after to avoid timeout; handshake with a comlynx-lock instance to avoid collisions due to different running speed of emulation threds etc.

12 minutes ago, laoo said:

@Nop90 FIXED

Your scenario should work now.

Additionally I've added `cpu.pc` to read, but it should not be necessary now.

Felix-0.5.0(156).exe.7z 493.62 kB · 0 downloads

Thank you, I confirm it works fine for me too.

  • Like 1
  • 1 month later...

@Pingouin Thanks for asking, and yes, you may call it that way. This is a demanding project and I got tired. I've paused it a little to recharge my batteries and gain some perspective on the direction the project should take.

Another thing - this is one of such kind of projects that is fueled by constructive feedback from the community. I sensed that the interest is low, so it was easier for me to switch to my other fun project that desperately seeks my attention.

 

  • Like 1
14 minutes ago, LordKraken said:

Thanks for the hard work so far @laoo, the Lynx scene is a bit erratic when it comes to activity, and it feels like we're the middle of a relatively calm moment, but interest will grow again I can guarantee :)

I've appeared here in the eve of 30th anniversary and the activity then was very different. Who knows, maybe it'll happen again someday. Meanwhile it's apparently a good time for a little break to come back soon with fresh energy.

4 minutes ago, 42bs said:

Maybe not speaking only for me: There are many interesting Atari machines out there.

damn right walter white GIF by Breaking Bad

 

  • Like 1
5 hours ago, laoo said:

Another thing - this is one of such kind of projects that is fueled by constructive feedback from the community. I sensed that the interest is low, so it was easier for me to switch to my other fun project that desperately seeks my attention.

 

too true. there is often frustrating less constructive feedback. consumer mentality

2 hours ago, 42bs said:

Maybe not speaking only for me: There are many interesting Atari machines out there. My target has moved to Jaguar lately.

so true,

console or computer, 8 / 16 /32 / 64 bits, difficult choice.

all of them are so cool to me

 

 

6 hours ago, laoo said:

@Pingouin Thanks for asking, and yes, you may call it that way. This is a demanding project and I got tired. I've paused it a little to recharge my batteries and gain some perspective on the direction the project should take.

Another thing - this is one of such kind of projects that is fueled by constructive feedback from the community. I sensed that the interest is low, so it was easier for me to switch to my other fun project that desperately seeks my attention.

 

there is no need to rush. we can easily wait even a half year for a new update.

Take a breath, get some fresh ideas.

 

Anyway, even at this stage, Felix suits me better than Handy

 

 

  • Like 2
  • Thanks 1
6 hours ago, laoo said:

Another thing - this is one of such kind of projects that is fueled by constructive feedback from the community. I sensed that the interest is low, so it was easier for me to switch to my other fun project that desperately seeks my attention.

You kinow how much I appreciate Felyx, but I have only one problem that prevent me to give more feedback : I am using it on a daily basis for my dev, and I cannot find any single issue :D

Nearly everytime I notice something on Felyx, there is the same problem on a real Lynx (*), so the root cause is me and not Felyx.

 

So you dessreve a well merited break :D

 

(*) There is just one minor thing, sometimes reloading a ROM from Felyx do not reload correct palette or sometime freeze. But as I usually leave Felyx between 2 compilations and relaunch it, this is not a big deal, and not related to emulation.

Edited by Fadest
7 minutes ago, Fadest said:

(*) There is just one minor thing, sometimes reloading a ROM from Felyx do not reload correct palette or sometime freeze.

I noticed the palette issue few times too. It should not be anything complicated. I just have to reproduce it in controllable environment.

And of course your support is great! Thanks for everything!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...