Jump to content

2600 Playfield Editor beta v0.5

Recommended Posts

I finished coding the playfield part of the 2600 screen editor. NTSC only for now and requires Windows 64-bit but it's .NET so in theory more platforms is possible (but I think only Linux has .NET Core graphics support). Tested with several playfield combinations but let me know if you find a bug since there are lot of combinations possible.


Notes since it's a bit complex to be able to support almost any playfield combination (you can switch from reflective to repeat to asymmetric on any scanline if enough cycles):


  • Editor is based on list of actions (=TIA register writes) for each scanline. 'Actions' can be added by selecting the draw type in the combo-box on the left. E.g. choosing playFieldType, then selecting 'Reflective' and clicking on a scanline will change that specific scanline (but note it won't optimize it away if no playfield is drawn). Same for color. For playfield it will change also selected color & type
  • You can see which draw type actions (TIA register writes) need to occur by selecting 'Kernel' and hovering with the mouse over the scanline. The first line at the top will show the list. Note PF3/4/5 are PF0/1/2 asymmetric
  • There is a 'show' button that is remembered for each selected draw type. You can hide background, playfield, kernel boundaries etc.
  • Auto kernel detection is based on whether reg writes per scanline changes. Also config.json allows you to specify look ahead to detect multi-line patterns (fixed & variable). But you can override these by selecting 'Kernel' on the left and then clicking on a scanline will either split or merge the kernel depending if an existing kernel is starting on that scanline
  • Code generation:
    • 4 or less register changes is done using dynamically generated ASM code (except asym.). Anything more it will search the TemplateConfig.json for a match (if missing it will error out)
    • Trying to find kernel template for playfields will first do an exact match. If not found, then it will pretend all playfield bitmap register changed. E.g. in screenshot only part of playfield changed but not found, it added those (which then will be 0's data bytes)
    • Kernels will have setup and remaining cycles defined (see template.config). If 1 kernel requires too many setup cycles compared to previous remaining, it will error out


Not sure if I have time anytime soon to add more static draw types, but I'm thinking should be relatively easy to add:

- P0/P1 position action (RESP). You select it and then select on the X+Y coordinate to set it (or remove if exists already)

- P0/P1 bitmap (COLUP): select it and it will draw where last P0/P1 position is set (if not set it will be at 0 just like 2600)


In theory I could also see having dynamic objects and have a kernel in the library that takes care of interpreting x/y in RAM.




Edited by lucienEn
Link to comment
Share on other sites

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.

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.


  • Recently Browsing   0 members

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