@zero0@mastodon.gamedev.place avatar

zero0

@zero0@mastodon.gamedev.place

This profile is from a federated server and may be incomplete. Browse more on the original instance.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

Started looking at programming the APU. I should probably just use Famitone2 or some other standard format, but… I kinda want to implement something custom to go along with the open source/from scratch mindset of the project. I’ve already updated the build tool to parse aseprite files (just parse at the moment) for sprites and animations, so it shouldn’t be too much more to parse some other format for music/sfx and put into something easy for the 6502 and APU to interpret.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

I’m designing Shadowborn to be modeled after Souls-like games, but with the limited scope of focusing mainly on combat and mood/setting. One thing that these games have in common is secrets (hidden walls, invisible floors, traps, etc) that reward/punish the player for exploring. I have a few plans for this, however since I also want to keep the game open source, how do I keep those secrets secret? Private git repo? Encrypted or obfuscated files? Or does it just not matter.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

Asset pipeline now supports writing CHR data at specific offsets within a CHR ROM segment. This was a much needed feature as ca65 just outputs the .byte command in whatever order it is included. This is ideal for most situations, however when you want to output bytes at specific locations, it does not work. There is a .org command, but it only works on code, not data. A new "layout" file is used to control what sprites are included in each CHR ROM and their offsets within.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

Some of the first things I make sure are setup in a project are assertions, both static and runtime. I can't even count the number of times these have helped in development. cc65 does not have built in support for asserts so here's how I implemented static asserts:

STATIC_ASSERT(t) static void CONCAT(sa, LINE)( char [ (t) ? 1 : -1 ] )

The macro tries to create a function with an argument of type char[-1] if the condition is false which fails to compile. Neat!

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

Updated to use MMC1 mapper, which was easier said than done. There are still some issues (minor memory overrun, oops), but this only highlights something I've been thinking about for awhile: I'm this close holds fingers really close together to writing a custom NES emulator. This would solve a bunch of issues I've been having, especially with debugging, but also create a whole slew more. At the moment, I can't think of a good name for the project, so I'm safe... for now.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

My NMI handler is taking too many cycles to run. One of the reasons is that a zero is getting set as a length somewhere in the name table update buffer; an easy fix. The other reason is that I kept adding features. Having only a little over 2k CPU cycles does not leave a lot of time to do things that are not essential. My options are: use a hybrid approach where PPU updates happen while rendering is disabled and during NMI; or use a mapper that supports CHR table swapping.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

Sad news about Portal 64 being shutdown, but it is an understandable situation (being between Valve and Nintendo is not a good place to be). However, it does bring up an interesting question: can homebrew ROMs for these old platforms be sold on Steam?
I'm developing "Shadowborn" as an open source project, and I did plan on releasing it on Steam in the future. Now I'm not sure. Not because of legal issues, but would Steam even allow it? Inquiring minds want to know.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

Implemented the “double dabble” algorithm. Basically converts base2 to base10 (BCD binary-coded digits) for display. I’m assuming/hoping other NES games use this neat technique. The main point I want to highlight is that the algorithm calls for shifting the MSB from one value onto the LSB of another, transferring thr MSB along. The 6502 can only shift one bit at a time so many shift instructions would be needed if written in C. However using assembly, it’s three rol instructions.

zero0, to gamedev
@zero0@mastodon.gamedev.place avatar

A few days ago I was able to recreate the development environment for "Shadowborn" on another computer in a few minutes. I was honestly surprised on how smoothly it went. I've had much harder times transferring more modern coding projects from one computer to another. Because the process was so smooth, I also updated the readme on github to include the IDE, extensions, tools, and build process I use.

Speaking of, here's the github to follow along: https://github.com/zero0/shadow-nes

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • provamag3
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • JUstTest
  • All magazines