Day 4

A project log for Project 72 - Korg DW-6000 wave memory expansion

An attempt to reverse engineer and modify Korg DW-6000s firmware in order to expand its wave memory.

mateusz.kolanskimateusz.kolanski 03/12/2016 at 18:290 Comments

I figured out the following:

0x0000h - 0x1FFFhexternal ROM
0x2000h - 0x3FFFhexternal RAM (battery backed up SRAM)
0x4000h - 0x5FFFhLED displays
0x6000h - 0x7FFFhKLM-654
0x8000h - 0xFFFFhprobably unused - setting the 16th bit high disables IC12, so no other chip is enabled - need to check this.

The schematic below (I've removed some non critical circuitry just for readability) shows how it works:

With this information I noticed something else - there are a lot of writes to the external RAM during operation, so it means that the "working" patch values are stored there. What does it mean to me? Well I hope that there are at least four free bits somewhere (ideally four free bits per each patch) where I could store the bank number.

Right now I can try to roughly estimate what needs to be done:

  1. Find the place where the key presses are scanned and analyzed (i.e. only certain combinations are allowed)
  2. Extend it by adding one combination (e.g. 14)
  3. Allow to change its value within a 4 bit range (1-16)
  4. Store the result somewhere in the RAM
  5. Set the upper nibble of PB as requested.

Additionally: modify all the operations which affect PB to leave upper nibble untouched.

Looks as it could work, I only hope not to run out of memory... There are some FFs in the ROM but I don't know anything about the internal organization of RAM though. Furthermore I have this bad feeling, that at some point I will end up writing my own assembler or some kind of program which will help me deal with the jump addresses (they're going to change if I add/remove some code).