Back in the old days, most of the coding was done in VERY low level assembly. I'm actually fairly active in teh ROM hacking community, and I've seen some of the low-level hacks in the assembly code to "make things work". I suspect mid-level tools existed, but a lot of work was done via hardcoded assembly edits.