You are right that there's not really a good set of docco available to explain it all. I was fortunate enough to have Paul walk me through it all when I was getting up to speed. A lot of it is reading the MAME driver and using the memory map. It can obviously only access the RAM, ROM and features that are CPU accessible. So for Arkanoid that's a Z80 and MAME code is here:
https://github.com/mamedev/mame/blob/master/src/mame/drivers/arkanoid.cpp
3x ROMs:
- 0x0000 to 0x3FFF
- 0x4000 to 07FFF
- 0x8000 to 0xBFFF
RAM:
- 0xC000 to 0xC7FF (but also possibly mirror'd from 0xC800 to 0xCFFF)
- 0xE000 to 0xE7FF (video RAM)
- 0xE800 to 0xE83F (sprite RAM)
- 0xE840 to 0xEFFF
Buttons:
- 0xD00C is the address
- Read bit 1 for P1 Start button
- Read bit 2 for P2 Start button
- Read bit 3 for Service button
- Read bit 4 for Tilt button
- Read bit 5 for Coin 1
- Read bit 6 for Coin 2
Player Button:
- 0xD010 is the address
- read bit 1 for player button 1
- read bit 3 for player button 1 on a cocktail cab
DIPS:
- 0xD018 (?) is the address
- bit 1 for 'allow continue'
- bit 2 for 'flip screen'
- bit 4 for 'difficulty'
- bit 5 for 'bonus life'