View Single Post
Old 25 September 2018, 15:51   #225
NovaCoder
Registered User
NovaCoder's Avatar
 
Join Date: Sep 2007
Location: Melbourne/Australia
Posts: 3,716
Quote:
Originally Posted by meynaf View Post
This is in theory possible, but I have no knowledge about these. The game has mainly been made for A1200/030 with just AGA.

Last version has had some code cleanup in this area (c2p in include file rather than being buried deep in the game itself) so now it's just a matter of how to use these graphics cards.
If someone can give me simple code for handling some (often partial) copy of 640x480x8 chunky frame buffer to the video mem, then i might do this.
Also i need to setup this under Winuae so i can test if the code works.
You would need this kind of thing..

PHP Code:
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>

#include <cybergraphics.h>
#include <proto/cybergraphics.h>
 
struct Library *CyberGfxBase NULL;


/** Global Hardware window */
static struct Window *_hardwareWindow NULL;


/** Hardware screen */
static struct Screen *_hardwareScreen NULL;



CyberGfxBase OpenLibrary ("cybergraphics.library"0);
if (
CyberGfxBase == NULL) {
    
SDL_SetError("Can't open cybergraphics.library\n");
    return -
1;
}  

<
SNIP Open screen and windowchoose display mode>    
    
static 
void RTG_UpdateRects(int numrectsSDL_Rect *rects)
{
    
int i;
    
Sint16 dirtyStartdirtyEnd;
    
UBYTEsrc;
    
UBYTE *base_address;
    
APTR video_bitmap_handle NULL;
        

    
// Seed.
    
dirtyStart SDL_VideoSurface->h;
    
dirtyEnd 0;
    
    
    
// Find dirty strip extents.
    
for (0numrectsi++) {
        
SDL_Rect *rects i;
        if (!
r) {
          continue;
        }

        if (
r->dirtyStart) {
            
dirtyStart r->y;
        }
        
        if ((
r->r->h) > dirtyEnd) {
            
dirtyEnd = (r->r->h);
        }
    }

              
    
src = (UBYTE*)SDL_VideoSurface->pixels + (dirtyStart SDL_VideoSurface->w);
    
     
    
// Check whether the palette was changed.
    
if (_paletteDirtyEnd != 0) {
        
RTG_updatePalette();
    }
        
    
    
video_bitmap_handle LockBitMapTags(_hardwareScreen->ViewPort.RasInfo->BitMap,
                                         
LBMI_BASEADDRESS, (ULONG)&base_address,
                                         
TAG_DONE);
    if (
video_bitmap_handle) {
        
base_address = (base_address + (dirtyStart SDL_VideoSurface->w));
        
CopyMemQuick(srcbase_address, (SDL_VideoSurface->* (dirtyEnd dirtyStart)));
    }

    if (
video_bitmap_handle) {
        
UnLockBitMap (video_bitmap_handle);
    }

NovaCoder is offline  
 
Page generated in 0.05390 seconds with 11 queries