lucienEn Posted January 29 Share Posted January 29 (edited) 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. 1547799839_ScreenEditor2600v0.5.zip Edited January 29 by lucienEn Quote Link to comment Share on other sites More sharing options...
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.