mirror of
https://github.com/birth1mark/orbis8.git
synced 2026-10-29 03:00:32 +01:00
33 lines
963 B
C++
33 lines
963 B
C++
|
|
#include <string>
|
|
|
|
#include "hostVmShared.h"
|
|
#include "nibblehelpers.h"
|
|
|
|
|
|
|
|
int getCombinedIdx(const int x, const int y){
|
|
//bit shifting might be faster? trying to optimize
|
|
//return y * 64 + (x / 2);
|
|
//return (y << 6) | (x >> 1);
|
|
return COMBINED_IDX(x, y);
|
|
}
|
|
|
|
int isValidSprIdx(int x, int y){
|
|
return IS_VALID_SPR_IDX(x, y);
|
|
}
|
|
|
|
//try look up table to optimize?
|
|
|
|
void setPixelNibble(const int x, const int y, uint8_t value, uint8_t* targetBuffer) {
|
|
//potentially slightly optimized by inlining - don't have measurements to back it up
|
|
targetBuffer[COMBINED_IDX(x, y)] = (BITMASK(0) & x)
|
|
? (targetBuffer[COMBINED_IDX(x, y)] & 0x0f) | (value << 4 & 0xf0)
|
|
: (targetBuffer[COMBINED_IDX(x, y)] & 0xf0) | (value & 0x0f);
|
|
}
|
|
|
|
uint8_t getPixelNibble(const int x, const int y, const uint8_t* targetBuffer) {
|
|
return (BITMASK(0) & x)
|
|
? targetBuffer[COMBINED_IDX(x, y)] >> 4 //just last 4 bits
|
|
: targetBuffer[COMBINED_IDX(x, y)] & 0x0f; //just first 4 bits
|
|
} |