|
|
- #ifndef GBSDK_VIDEO_H
- #define GBSDK_VIDEO_H
-
- #include <stdint.h>
- #include <sdk/hardware.h>
-
-
- //Turn off the LCD, with the proper checks that this happens during VBLANK
- void lcd_off(void) __preserves_regs(b, c, d, e, h, l);
-
- //Copy to VRAM with STAT checks, so these function are safe to write to VRAM at any time.
- void vram_memcpy(uint16_t dst, void* src, uint16_t size) __preserves_regs(b, c);
- void vram_memset(uint16_t dst, uint8_t value, uint16_t size) __preserves_regs(b, c);
- inline void vram_set(uint16_t dst, uint8_t value) {
- while(rSTAT & STAT_BUSY) {}
- *((uint8_t*)dst) = value;
- }
-
- #if CGB
- #define PAL24(rgb) (((rgb & 0xF80000) >> 19) | ((rgb & 0x00F800) >> 6) | ((rgb & 0x0000F8) << 7))
-
- void cgb_background_palette(uint16_t* palette) __preserves_regs(b, c);
- void cgb_object_palette(uint16_t* palette) __preserves_regs(b, c);
- inline void cgb_gdma(uint16_t dst, const void* src, uint8_t count) {
- rHDMA1 = ((uint16_t)src) >> 8;
- rHDMA2 = ((uint16_t)src) & 0xFF;
- rHDMA3 = dst >> 8;
- rHDMA4 = dst & 0xFF;
- rHDMA5 = count - 1;
- }
- inline void cgb_hdma(uint16_t dst, const void* src, uint8_t count) {
- rHDMA1 = ((uint16_t)src) >> 8;
- rHDMA2 = ((uint16_t)src) & 0xFF;
- rHDMA3 = dst >> 8;
- rHDMA4 = dst & 0xFF;
- rHDMA5 = (count - 1) | 0x80;
- }
- #endif
-
- #endif//GBSDK_VIDEO_H
|