drhelius / Gearcoleco

ColecoVision emulator and debugger for macOS, Windows, Linux, BSD and RetroArch.
https://x.com/drhelius
GNU General Public License v3.0
80 stars 17 forks source link

Quick edit after more testing pattern mem jump #59

Closed KPreston2900050 closed 5 months ago

KPreston2900050 commented 5 months ago
          Quick edit after more testing.

Clicking on an 8x8 square in the Name Table Tab goes to the same address as the Pattern Table Tab

So if my Pattern Table starts at $0000 and my Name Table starts at $1800 and I click on an 8x8 square in the Name Table tab it should bounce to the data starting at $1800

Sprites act accordingly Starting at $3800

This opens up the second can of worms the color table for patterns and the attributes for sprites. Those are two tables that would have to have tabs created. At least the color table.

Originally posted by @KPreston2900050 in https://github.com/drhelius/Gearcoleco/issues/53#issuecomment-2172364341

drhelius commented 5 months ago

Yes you are right. I thought it has more sense to point to tile memory on click in the name table tab also, but probably not.

For colors, I'm going to create a palette viewer like in Gearsystem, that will work better:

image

drhelius commented 5 months ago

I totally forgot this is TMS9918 so no possibility to change palette color.

drhelius commented 5 months ago

I don't know how to represent the color table in its own tab. It's implicitly implemented in the name table tab.

I can add the address to the color table for a specific tile in the right section of the name table tab.

KPreston2900050 commented 5 months ago

I thought about the color table as well and it would be redundant info. A tab much like the pattern tab but when you click on the 8x8 tile it jumps to where it is on the color table that usually starts at $2000.

I requested the mem jump feature so I could easily find the data, copy and/or paste it. That is why the name table goes to name, color to color, pattern to pattern. All based off how I set the registers.

I have been making in depth scroll routines that cycle register 4 so I had to create multiple area's for pattern tables. This meant shifting the pattern and color tables around which made them harder to locate and debug.

Colecovision uses the 9928 which is disappointing when using the advanced routines You can't use any of the advanced features adequately like the video input line is not attached. They wanted to add a CED player for Dragons Lair at one time but no one mentioned that the overlay feature was disabled.

I wanted to use 768 separate patterns with mode 1 but you can still only display 256 because the color table in that mode can only mathematically address 256 patterns at a time. Which means you can put them on the screen but only 256 will show up.

The thing can be a mess depending on what you want to do.

drhelius commented 5 months ago

I thought about the color table as well and it would be redundant info. A tab much like the pattern tab but when you click on the 8x8 tile it jumps to where it is on the color table that usually starts at $2000.

Please, if you have the time, review the latest commit. It now shows the color addr in the name table tab on the right. This way you can jump manually using the goto box in the memory editor.

Each tile on the name table tab will jump to the correct tile in the name table address.

I don't want to duplicate a tab just to change the behavior of the mouse click.

If it's working right I'll leave it as it is.

KPreston2900050 commented 5 months ago

The Color address is a great compromise. I wasn't a fan of another tab sitting there wasting space.

If I knew C++ as well as you I would implement the ADAM side of things but I already understand your stance on the issue.

I do however ask one last thing from you. Is it possible to expand Columns to 32. 16 is the current limit. This gives one the ability to see the name table in it's entirety as it looks not only in VRAM but it also aligns the data into 32x24 plane.

drhelius commented 5 months ago

Done. But 16 is still the default number of columns. Maybe in the future I'll save the state of the memory editor, but for now it will reset on exit.

KPreston2900050 commented 5 months ago

Screenshot (32) Blown away

This makes creating screens soooooooooo much easier.

KPreston2900050 commented 4 months ago

Update I j was going through the features and found that the Sprite address jumping no longer works I tested it with Gearcoleco-1.1.0-44-ga9548a8-windows-x64 and it works fine with that version.

The latest Gearcoleco-1.1.0-47-g4818bd0-windows-x64 does not work anymore.

drhelius commented 4 months ago

Sorry I messed up trying to avoid activity when window is out of focus.

KPreston2900050 commented 4 months ago

Latest version works like a charm.

I am telling you strait up. Aside from MAME/MESS this is the top version with the most features out there. MAME is an all around, over bloated emulator where this hits the mark. I just want to know why no one else could do it.

C++, Visual studio, Open source. What is not to love.

KPreston2900050 commented 4 months ago

Is there any way to dock all the smaller windows in a way that it becomes one one unit which will stay the way you left it. I mean also, where you left the program where you closed it. It seems to always boot up in the middle of the screen.

My thinking is a radio switch that when clicked everything becomes one window which scales when you pull on a corner.

drhelius commented 4 months ago

Not yet. There is a "docking" branch in development in Dear ImGui with docking and multi viewport support. I may support that in the future but I think it requires a lot of changes.

For now, Dear ImGui saves the window position on exit but as soon as you resize the window to a smaller size it tries to pack all its windows in the available space on boot up. I'm saving the size of the main window though, but again, if the main window gets resized to a smaller size, ImGui will pack its windows in this smaller space.

It's not an easy fix, it depends on the gui library but I probably try to improve it in the future when this "docking" branch is merged.

A workaround for me is keeping always the same size for the main window.

drhelius commented 3 months ago

I ended up adding the docking support. But kept it optional: You have to press SHIFT when moving windows around. I also added multi-viewport as an option. It only works on Windows an Mac. But this way you can position debugger windows in multiple monitors. It requires a restart each time you enable/disable it though.

KPreston2900050 commented 3 months ago

I would say truthfully, from my observations, your Colecovision emulator has become the number one version among my peers for the Colecovision. And in short time.

I think the others became complacent and when you brought up inconsistencies or issues you would be shut down. I had that same issue with the guy who wrote ColEm. Now, he does not even bother with it outside of his selling a version in the android store.

All of my emulators for the other systems in this series Gameboy, MSX... I have already converted over to your version.

Yours is just super versatile and user friendly.

I exchanged the Coleco BIOS with the Pencil II and it actually worked up until a point. I loaded a game but it crashed when it looked for expansion memory at $2000 or some deal.

So, that may be an idea for new emulator as an exercise. I say exercise because you can only find like 4 games for the entire system. Also, it is more of a computer system with expansion than a console.

I have been able to get a portion of ADAM working in experimentation. Being as the SGM ram will allow you to load anything, I was able to load in an ADAM Super Game and run it up till it using the 6801. But I am getting there. I just do not know how to use visual studio very well.

The dock works great after the learning curve.

drhelius commented 3 months ago

Thanks for your kind words. I truly appreciate it.