gbdev / gb-opcodes

https://gbdev.io/gb-opcodes/optables/
Creative Commons Zero v1.0 Universal
25 stars 10 forks source link

Bytes and cycles for prefix opcodes #3

Open tobiasvl opened 4 years ago

tobiasvl commented 4 years ago

Some people (on the emudev Discord server) seem to be confused by the fact that the table lists 0xCB as 1 byte and 4 cycles, while all the 0xCB-prefixed opcodes in the separate table add that 1 byte and those 4 cycles to their totals.

For example, RLC B at 0xCB 0x00 is listed as taking 2 bytes and 8 cycles, but in the main table PREFIX at 0xCB is listed as taking 1 byte and 4 cycles.

That's not incorrect per se, since fetching the 1-byte prefix takes 4 cycles, so I'm not sure what the best "solution" would be. Perhaps just a footnote?

Rangi42 commented 3 years ago

Since all the prefix opcodes take the same 2 bytes and 8 cycles, I would expect the PREFIX CB to list that. If anything is footnoted it should be the time to fetch just the $CB prefix byte.

SonoSooS commented 2 years ago

This problem has already been solved in the documentation of other platforms (NEC 78-series MCUs come to mind) where it's just written as

PREFIX 2/3/4
see table (2/3/4)

with every other info removed from the table cell, so it's obvious that it's a multi-byte opcode, and the actual size and timings depend on the other following bytes.