extern void SP_HAM7SCR(void* c2pscreen __asm("a0"), void* bitplanes __asm("a1"));section text, code xdef SP_HAM7SCR xdef _SP_HAM7SCR SP_HAM7SCR _SP_HAM7SCR movem.l d2-d7/a2-a6,-(sp) move.l #%00001111000011110000111100001111,d6 move.l #%00000000111111110000000011111111,d7 move.l #%00010001000100010001000100010001,a5 ; lea chunkybuffer,a0 ;pointer to 15bit scrambled word chunkybuffer ; move.l logscreen,a1 ;pointer to interleaved 8bpl ham8 screen
movem.l (sp)+,d2-d7/a2-a6 rtsDodatkowo zmienne:
Scrx i Scryzamieniłem w kodzie na odpowiednio
1280 i 256
// Get real, full info from display mode id.
struct DimensionInfo dn_Dimensioninfo;
GetDisplayInfoData(NULL, (UBYTE*)&dn_Dimensioninfo, sizeof(struct DimensionInfo), DTAG_DIMS, FRM_requested_mode_id);
FRM_requested_width = dn_Dimensioninfo.Nominal.MaxX + 1;
FRM_requested_height = dn_Dimensioninfo.Nominal.MaxY + 1;
FRM_requested_bits_per_pixel = dn_Dimensioninfo.MaxDepth;
// Add HAM flag to requested display mode id.
FRM_requested_mode_id |= HAM_KEY;
FRM_screen = OpenScreenTags( NULL,
SA_DisplayID, FRM_requested_mode_id,
SA_Depth, FRM_requested_bits_per_pixel,
SA_Type, CUSTOMSCREEN,
SA_Quiet, TRUE,
SA_Behind, TRUE,
SA_ShowTitle, FALSE,
SA_Draggable, FALSE,
SA_Exclusive, TRUE,
SA_AutoScroll, FALSE,
// SA_Interleaved, TRUE,
TAG_END);SP_HAM7SCR(IO_prefs.output_buffer_32, FRM_Chip_Buffer[buffer_counter]);
// Link ready buffer to screen bitmap.
FRM_screen->BitMap.Planes[0] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 0;
FRM_screen->BitMap.Planes[1] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 1;
FRM_screen->BitMap.Planes[2] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 2;
FRM_screen->BitMap.Planes[3] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 3;
FRM_screen->BitMap.Planes[4] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 4;
FRM_screen->BitMap.Planes[5] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 5;
// ---- nie jestem pewien tych dwóchostatnich - u Kalmsa nie mogło ich być ---
FRM_screen->BitMap.Planes[6] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 6;
FRM_screen->BitMap.Planes[7] = (PLANEPTR)FRM_Chip_Buffer[buffer_counter] + FRM_HAM8_bitplane_size * 7;
RethinkDisplay();UBYTE* FRM_Chip_Buffer[] = { NULL, NULL };

for (int y = 0; y < 256; y++)
{
for (int x = 0; x < 320; x++)
{
UWORD rgb555 = (5 << 5) | (15 << 5) | 5;
buf15[x+y*320] = rgb555;
}
}
@mateusz_s, post #1
@mateusz_s, post #1