Jump to content

JetSetIlly

Members
  • Posts

    763
  • Joined

  • Last visited

Posts posted by JetSetIlly

  1. 8 hours ago, RobertMorombo said:

    How do I correctly specify an include directory that is located in a different directory inside the parent directory, from the command line? How do I correctly specify relative paths when using the the -I option?

    The following should work. Note that the file you are assembling is specified before the options.

     

    dasm program-1.asm -I../includes -f3 -oprogram-1.bin

     

    • Like 1
    • Thanks 1
  2. 9 minutes ago, Karl G said:

    Wow ... that is ambitious for sure. Count me as someone who would be interested to see this as well. My reason would be the ability to use a much better/friendlier debugger than the MAME debugger when developing 7800 games.

    It is ambitious but it's worth trying. I plan to start looking at it this summer, time permitting.

    • Like 4
  3. Just now, alex_79 said:

    You can find some info in this thread. Note that AFAIK there aren't recordings of the original tapes available, which would be nice to have for preservation purposes.

    The original tapes are in stereo, with music on one channel and data on the other one, which was converted to digital signals by the KidVid tape deck and then sent to the 2600 controller port.

    The data track is not part of the available samples because, when support was added to Z26, it was reversed engineered and hard-coded into the emulator.

    Thanks. That's a great starting point.

     

    It would be nice to have the stereo tape. I'd be interested in emulation without any hard-coding of information.

     

    Just now, alex_79 said:

    Do you mean the different initial state (because of the 7800 bios running before starting a game) and "Pause" switch instead of the "TV-Type" toggle, or do you plan to add full 7800 emulation?

    @ZackAttack wants full 7800 emulation. It'll be useful to have because it means we can then use emulation to help develop ELF/StrongARM games for the 7800 as well as the 2600. I might need to make some architectural changes to the code first, but it should hold up nicely.

     

    • Like 1
  4. 5 hours ago, gambler172 said:

    Berenstain Bears needs also the mp3 files.

    You can find them at Atarimania.

    Oh I see. 'Berenstain Bears' and 'Smurf to the Rescue' are KidVid ROMs.

     

    I don't know anything about KidVid but I would be interested in getting them working correctly. Time is tight for me at the moment but I'll put it on the TODO list.

     

    The items on the list I have currently (in no particular order):

     

    1. Joy2B+ @r_chase

    2. Finish (and debug) Thumb2 emulation and get ACE working correctly @MarcoJ

    4. 7800 emulation @ZackAttack

    5. KidVid @gambler172

     

    There are other items of course but these are the ones people have asked for. Hopefully I've not missed anything.

     

    • Like 2
  5. Working with @Gemintronic to get the macro system working for his use case.

     

    It turns out that a POKE command is useful. There's always been a POKE command in the terminal language but it's useful to have in the macro language too.

     

    To give an example, the following script automates the capturing of screenshots for every screen in Pitfall

    gopher2600macro
    1.0
    
    -- start game by moving joystick right
    RIGHT
    CENTER
    
    -- loop through all 256 screens
    DO 256 n
    	-- position player at right of screen
    	POKE $e1 $94
    
    	-- walk right to next screen
    	RIGHT
    	WAIT 10
    	CENTER
    
    	-- screenshot
    	SCREENSHOT %n
    LOOP
    
    QUIT

     

    There are other possible ways of achieving this for Pitfall, I'm sure.

     

    My goal is to make the system flexible enough to enable the writing of automatic tests for people to use during ROM development.

     

    Code is in the macro_system branch in the github repository.

     

    • Like 4
  6. Very quick hack but it works quite well I think.

    Code is in a temporary "macro_system" branch. I'll merge into master if testing goes well.

     

    All the interesting code is a single file.

    https://github.com/JetSetIlly/Gopher2600/blob/14e39086971b69575a149ce8235147ad65c6e56a/macro/macro.go

     

     

    The macro file used in the video is as follows:

     

    gopher2600macro
    1.0
    
    DO 6
    	WAIT 120
    	SCREENSHOT
    
    	SELECT
    	WAIT 2
    	SELECT RELEASE
    LOOP
    
    QUIT

     

    Wait values are number of frames. Loops can be nested.

     

    It's probably good enough for your purposes now but I can add more instruction if needed. Do you need me to compile a binary for you or can handle that yourself?

    • Like 3
  7. 4 hours ago, Gemintronic said:

    Any chance input macro support is bring considered?  Right now I'm testing procedural dungeon creation and I have to manually take 128 screenshots.  If I could toggle turbo mode, move with the joystick and trigger a screenshot with a script/macro I'd be in heaven :)

    Nice idea!

     

    One thing I have in place is a way of recording input and being able to play it back, testing the integrity of the emulation as it proceeds. I developed it so I could experiment with the emulation and to make sure that I didn't break any previously working ROMs. It's not quite suited to your needs but I'm sure I can adapt the system so that it will.

     

    I'll play around with it this weekend and see what I can do.

     

    I'll probably come back to you with questions about what you need.

    • Like 1
    • Thanks 1
  8. 9 hours ago, Andrew Davie said:

    The problem with ChatGPT and programming is that it gets a lot right - but it is absolutely confident about things that it gets wrong, and you really need to know what your'e doing to spot this stuff - in which case you might as well have written it yourself.  The colours above, for example.  Completely wrong - not even close to matching actual TIA colours in either NTSC, PAL or SECAM

     

    And although I haven't explored it, I doubt the LSFR works properly. And the earlier example, using location 0 to store the address of the indirect pointer for clearing RAM - well, that's not going to work either - you need to store that in RAM (from location $80 up) and in any case the clear is gonna zap that pointer too and cause a crash.  So there's a whole lot of stuff that pops up using this system.

    It's amazing, yes. Even more so that as I understand it, it's just a predictive word generator and doesn't have some "grand plan" to design in advance the stuff it spits out. Remarkable. But we need to be very careful about using/believing what it tells us.

    Totally agreed. The most impressive thing for me about GPT is the natural language parser and it'll be an excellent tool to talk things through with - I've done so to help clarify my understanding on various topics. But unless you know what you're doing already, the results of such a discussion could be awful. Consider this: we who are familiar with 2600 programming can identify the errors in the above cases. Is it not reasonable therefore to assume that it makes similar errors on every other topic?

     

    The real danger is when politicians start using this to make decisions and the people believing that it's some sort of gospel because it's come from "the AI".

    • Thanks 1
  9. 1 hour ago, Andrew Davie said:

    "STX $80,x" does not exist but otherwise it's doing well.

     

    It's fun and impressive but that kind of mistake just demonstrates to me the GPT-4 isn't useful for serious work. It's labelled the code "ClearRAMLoop" but it's not doing that, even if "STX $80,x" was a valid instruction. It's horribly misleading.

     

    Still, I'll be interested to see where this goes next (Quadraslide and GPT) 🙂

    • Like 4
  10. 26 minutes ago, splendidnut said:

    Same for me.  Which is to be expected because I don't see anywhere to set the video resolution / refresh rate for full screen mode within Gopher.  So that means that Full-screen mode is basically the same as Full-sized Window mode.

    Correct. Full screen mode in this case is SDL's FULLSCREEN_DESKTOP which is really just a borderless window.

     

  11. Just now, Dionoid said:

    Immediate updates make a big difference, and it seems the speed is very close to running on an actual Atari 2600. However it seems to skip frames a few times a second.

    But yes, much better on my Windows machine.

     

    Thanks. I need to setup a Windows machine so I can investigate this further. It seems both you and @splendidnut have similar issues. Ideally you'd be running with VSYNC enabled.

     

    @johnnywc@Al_Nafuur have you noticed this issue on your Windows machines?

     

  12. 6 minutes ago, Al_Nafuur said:

    I was able to build with:
     

    git clone https://github.com/JetSetIlly/Gopher2600.git
    cd Gopher2600
    brew install go
    brew install pkg-config
    brew install sdl2
    brew install freetype2
    make release
    

    @JetSetIlly are there any other package dependencies?

     

    Gopher2600 seems to work fine on my MacBook now, but the Zelda binaries I have build don't work.

     

    I'll implement a better fix but for now, you can comment out lines 61-63 in the file hardware/memory/cartridge/mapper_3eplus.go

     

    	if len(data)%cart.bankSize != 0 {
    		return nil, fmt.Errorf("3E+: wrong number of bytes in the cartridge file")
    	}

     

    That seems to work.

    • Like 1
  13. Just now, Al_Nafuur said:

    👍

    Just when I finished building myself. I still need an emulator on my traveling MacBook. How do I install gopher2600 on MacOS?

    I can't build binaries for the Mac unfortunately so I don't distribute binaries on the github page. Both @Andrew Davie and @SpiceWare can build binaries for the Mac though. Hopefully, they will see this and share their builds.

  14. 15 minutes ago, splendidnut said:

    My refresh rate is set to 75hz.  So yeah, there's probably quite a fight going on trying to keep things in sync when VSync is turned on.

    I usually run with a 60Hz refresh rate because that works best with NTSC ROMs with flicker ROMs. But I've just tried with a 75Hz refresh rate and it seems to run okay. Turning VSYNC off causes CPU usage to actually go up. So there's definitely a difference between how Linux and Windows are treating the display.

     

    It's something to think about.

  15. 7 minutes ago, splendidnut said:

    Yes, so maybe the framebuffer needs to be larger to hide the artifacts for those effects.

    Hmm. Maybe. I'll look into it.

    7 minutes ago, splendidnut said:

    I played around a bit and for some reason, turning OFF vsync (switch to Immediate Updates) fixes the issue and decreases CPU usage.

    Interesting. VSYNC is something I've struggled to get working well in all instances if I'm to be honest, so there might be a clue here.

     

    What's your monitor's refresh rate?

     

     

    @Dionoid does setting VSYNC to "immediate updates" solve your problem?

     

    image.png.c932cf3bcbb2d9ec120f6775fed55b00.png

     

  16. 1 minute ago, splendidnut said:

    ROM selector is fine.  It would be nice to be able to access things from a main menu; the debugger has it but it doesn't show for regular emulation mode.  When in emulation mode, the Tab key shows the ROM selector, but it would be nice if it showed the menu instead of or in addition to.

    Interesting idea. I'll play around with it this weekend

     

    1 minute ago, splendidnut said:

    The issue with the mouse cursor is probably tied into how your program handles the Windows Event loop.  I'm guessing MouseMove events are piling up and overwhelming the event processing code.

     

    Maybe. I don't have the issue here but I'm not using Windows and don't have access to it. I'll take another look at it though.

     

    17 minutes ago, splendidnut said:

    Here's a screenshot trying to capture the artifacting:

    image.thumb.png.002c513200e15022c1d61a421caf90b4.png

     

    I can see it. Very strange. Does this only happen with CRT effects enabled?

     

  17. 4 minutes ago, splendidnut said:

    I gave this emulator another try today.

    Thanks for taking another look, it's changed significantly since you last commented.

     

    4 minutes ago, splendidnut said:

    I like how I can just start it and load a ROM via the GUI now.  The GUI still needs a bit of work though...

    Do you mean the GUI for the ROM selector? If so, I agree. I've not done much work on it at all really. I'll revisit that part of the project this weekend I think. Do you have any suggestions for improvements?

     

    4 minutes ago, splendidnut said:

     

    the only way I could find to edit the CRT preferences was by having the debugger view open.... and then exiting that to see the results.  Is there a reason why the menu isn't shown / easily accessible from the regular emulation view?

     

    The Preferences window can be opened with F10 when in playmode (regular emulation mode)

     

    The full list of hotkeys is on the project's GitHub wiki. https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Hotkeys

     

    4 minutes ago, splendidnut said:

     

    I ran Paint The City as a test and there seems to be some strange artifacts with the right most playfield pixel column and the last line of the bottom road section.

     

    I'm trying PaintTheCity NTSC 20220224 and I can't see any real differences between the Stella and Gopher2600 emulations.

    image.thumb.png.e52149bd60dba089e413033a8cdb5d74.png

     

    Can you highlight the areas where you see the artifacts?

     

    4 minutes ago, splendidnut said:

    Also, it just barely fits on the screen... is there an option to change the number of scanlines visible?

    There isn't. However, in the debugger, you can "uncrop" the screen. This shows how the screen fits into the wider TV frame. The gray dotted lines indicate the top and bottom VBLANK areas and when HBLANK is turned off. The purple dotted line is the most recent VSYNC scanline.

     

    image.thumb.png.3639fd52c4968764a1fbbde4caa2ce82.png

     

    4 minutes ago, splendidnut said:

    I did notice that the emulator seems to struggle with performance when the mouse cursor is moving over it, which seems a bit odd.

    It's hard to comment on that because I don't see that effect here and nobody else has noticed it. I'll note it down as an issue though.

     

    Out of interest, what specification is your computer's hardware?

     

×
×
  • Create New...