Antwort schreiben  Thema schreiben 
Seiten (5): « Erste < Vorherige 1 2 3 [4] 5 Nächste > Letzte »
Verfasser Nachricht
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #46
RE: PSP C Anfang - Helft mir auf meinem weg

Hab ihn nochmal editiert, hab noch ein paar fehler gesehen

EDIT: Hast du die putCharScreen FUnktion wirklich in die graphics.c gepackt, nicht in die main.c?

Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2010 21:17 von HacKmaN.

08.11.2010 21:09
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #47
RE: PSP C Anfang - Helft mir auf meinem weg

k, danke aber auch beim überarbeiteten gibts praktisch die selben Fehlermeldungen:

Code:
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150   -c -o main.o main.c
main.c:44: Fehler: In Konflikt stehende Typen für »printTextScreen«
graphics.h:215: Fehler: Vorherige Deklaration von »printTextScreen« war hier
main.c: In Funktion »printTextScreen«:
main.c:51: Fehler: »initialized« nicht deklariert (erste Benutzung in dieser Funktion)
main.c:51: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt
main.c:51: Fehler: für jede Funktion in der er auftritt.)
main.c:54: Fehler: break-Anweisung nicht innerhalb einer Schleife oder »switch«
main.c:58: Fehler: »msx« nicht deklariert (erste Benutzung in dieser Funktion)
main.c:46: Warnung: Variable »c« wird nicht verwendet
main.c: In Funktion »main«:
main.c:135: Fehler: »ptr« nicht deklariert (erste Benutzung in dieser Funktion)
main.c:136: Warnung: Implizite Deklaration der Funktion »putCharScreen«
main.c:88: Warnung: Variable »i« wird nicht verwendet
make: *** [main.o] Fehler 1


diese zeilen sind betroffen:
main.c:
z. 44: void printTextScreen(int x, int y, char ch, u32 color)
z. 51: if(!initialized) return;
z. 54: break;
z. 58: font = &msx[(int)ch * 8];
z. 135: for(x = 5; *bufptr != '\n'; x += 8, ptr++)

graphics.h:
z. 215: extern void printTextScreen(int x, int y, const char* text, u32 color);

ich weiss natürlich was die einzelnen fehlermeldungen bedeuten, doch da ich in den quelltext, ich sage mal nicht eingearbeitet bin + noch sehr unweit mit C bin, weiss ich nicht WO und wie genau ich sie beheben soll. wäre cool wenn du dir das nochmal ansehen könntest.





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
08.11.2010 21:24
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #48
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

Neutrosider :
k, danke aber auch beim überarbeiteten gibts praktisch die selben Fehlermeldungen:

Code:
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150   -c -o main.o main.c
main.c:44: Fehler: In Konflikt stehende Typen für »printTextScreen«
graphics.h:215: Fehler: Vorherige Deklaration von »printTextScreen« war hier
main.c: In Funktion »printTextScreen«:
main.c:51: Fehler: »initialized« nicht deklariert (erste Benutzung in dieser Funktion)
main.c:51: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt
main.c:51: Fehler: für jede Funktion in der er auftritt.)
main.c:54: Fehler: break-Anweisung nicht innerhalb einer Schleife oder »switch«
main.c:58: Fehler: »msx« nicht deklariert (erste Benutzung in dieser Funktion)
main.c:46: Warnung: Variable »c« wird nicht verwendet
main.c: In Funktion »main«:
main.c:135: Fehler: »ptr« nicht deklariert (erste Benutzung in dieser Funktion)
main.c:136: Warnung: Implizite Deklaration der Funktion »putCharScreen«
main.c:88: Warnung: Variable »i« wird nicht verwendet
make: *** [main.o] Fehler 1


diese zeilen sind betroffen:
main.c:
z. 44: void printTextScreen(int x, int y, char ch, u32 color)
z. 51: if(!initialized) return;
z. 54: break;
z. 58: font = &msx[(int)ch * 8];
z. 135: for(x = 5; *bufptr != '\n'; x += 8, ptr++)

graphics.h:
z. 215: extern void printTextScreen(int x, int y, const char* text, u32 color);

ich weiss natürlich was die einzelnen fehlermeldungen bedeuten, doch da ich in den quelltext, ich sage mal nicht eingearbeitet bin + noch sehr unweit mit C bin, weiss ich nicht WO und wie genau ich sie beheben soll. wäre cool wenn du dir das nochmal ansehen könntest.


Könnte es sein dass du meinen Edit nicht gelesen hast? Ich hab die printTextScreen nachträglich in putCharScreen umbenannt^^
Und in der main wird KEINE putCharScreen (bzw printTextScreen) deklariert, diese kommt vollständig in die graphics.c Wink

08.11.2010 21:33
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #49
RE: PSP C Anfang - Helft mir auf meinem weg

ja, habe ich gemacht, habe die neue methode (oder funktion wie du sie nennst) einfach unten in der graphics.c angehängt. das ist die graphics.c:

Code:
#include &lt;stdlib.h&gt;
#include &lt;malloc.h&gt;
#include &lt;pspdisplay.h&gt;
#include &lt;psputils.h&gt;
#include &lt;png.h&gt;
#include &lt;pspgu.h&gt;

#include "graphics.h"
#include "framebuffer.h"

#define IS_ALPHA(color) (((color)&amp;0xff000000)==0xff000000?0:1)
#define FRAMEBUFFER_SIZE (PSP_LINE_SIZE*SCREEN_HEIGHT*4)
#define MAX(X, Y) ((X) &gt; (Y) ? (X) : (Y))

typedef struct
{
    unsigned short u, v;
    short x, y, z;
} Vertex;

extern u8 msx[];

unsigned int __attribute__((aligned(16))) list[262144];
static int dispBufferNumber;
static int initialized = 0;

static int getNextPower2(int width)
{
    int b = width;
    int n;
    for (n = 0; b != 0; n++) b &gt;&gt;= 1;
    b = 1 &lt;&lt; n;
    if (b == 2 * width) b &gt;&gt;= 1;
    return b;
}

Color* getVramDrawBuffer()
{
    Color* vram = (Color*) g_vram_base;
    if (dispBufferNumber == 0) vram += FRAMEBUFFER_SIZE / sizeof(Color);
    return vram;
}

Color* getVramDisplayBuffer()
{
    Color* vram = (Color*) g_vram_base;
    if (dispBufferNumber == 1) vram += FRAMEBUFFER_SIZE / sizeof(Color);
    return vram;
}

void user_warning_fn(png_structp png_ptr, png_const_charp warning_msg)
{
}

Image* loadImage(const char* filename)
{
    png_structp png_ptr;
    png_infop info_ptr;
    unsigned int sig_read = 0;
    png_uint_32 width, height;
    int bit_depth, color_type, interlace_type, x, y;
    u32* line;
    FILE *fp;
    Image* image = (Image*) malloc(sizeof(Image));
    if (!image) return NULL;

    if ((fp = fopen(filename, "rb")) == NULL) return NULL;
    png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    if (png_ptr == NULL) {
        free(image);
        fclose(fp);
        return NULL;;
    }
    png_set_error_fn(png_ptr, (png_voidp) NULL, (png_error_ptr) NULL, user_warning_fn);
    info_ptr = png_create_info_struct(png_ptr);
    if (info_ptr == NULL) {
        free(image);
        fclose(fp);
        png_destroy_read_struct(&amp;png_ptr, png_infopp_NULL, png_infopp_NULL);
        return NULL;
    }
    png_init_io(png_ptr, fp);
    png_set_sig_bytes(png_ptr, sig_read);
    png_read_info(png_ptr, info_ptr);
    png_get_IHDR(png_ptr, info_ptr, &amp;width, &amp;height, &amp;bit_depth, &amp;color_type, &amp;interlace_type, int_p_NULL, int_p_NULL);
    if (width &gt; 512 || height &gt; 512) {
        free(image);
        fclose(fp);
        png_destroy_read_struct(&amp;png_ptr, png_infopp_NULL, png_infopp_NULL);
        return NULL;
    }
    image-&gt;imageWidth = width;
    image-&gt;imageHeight = height;
    image-&gt;textureWidth = getNextPower2(width);
    image-&gt;textureHeight = getNextPower2(height);
    png_set_strip_16(png_ptr);
    png_set_packing(png_ptr);
    if (color_type == PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png_ptr);
    if (color_type == PNG_COLOR_TYPE_GRAY &amp;&amp; bit_depth &lt; 8) png_set_gray_1_2_4_to_8(png_ptr);
    if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
    png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
    image-&gt;data = (Color*) memalign(16, image-&gt;textureWidth * image-&gt;textureHeight * sizeof(Color));
    if (!image-&gt;data) {
        free(image);
        fclose(fp);
        png_destroy_read_struct(&amp;png_ptr, png_infopp_NULL, png_infopp_NULL);
        return NULL;
    }
    line = (u32*) malloc(width * 4);
    if (!line) {
        free(image-&gt;data);
        free(image);
        fclose(fp);
        png_destroy_read_struct(&amp;png_ptr, png_infopp_NULL, png_infopp_NULL);
        return NULL;
    }
    for (y = 0; y &lt; height; y++) {
        png_read_row(png_ptr, (u8*) line, png_bytep_NULL);
        for (x = 0; x &lt; width; x++) {
            u32 color = line[x];
            image-&gt;data[x + y * image-&gt;textureWidth] =  color;
        }
    }
    free(line);
    png_read_end(png_ptr, info_ptr);
    png_destroy_read_struct(&amp;png_ptr, &amp;info_ptr, png_infopp_NULL);
    fclose(fp);
    return image;
}

void blitImageToImage(int sx, int sy, int width, int height, Image* source, int dx, int dy, Image* destination)
{
    Color* destinationData = &amp;destination-&gt;data[destination-&gt;textureWidth * dy + dx];
    int destinationSkipX = destination-&gt;textureWidth - width;
    Color* sourceData = &amp;source-&gt;data[source-&gt;textureWidth * sy + sx];
    int sourceSkipX = source-&gt;textureWidth - width;
    int x, y;
    for (y = 0; y &lt; height; y++, destinationData += destinationSkipX, sourceData += sourceSkipX) {
        for (x = 0; x &lt; width; x++, destinationData++, sourceData++) {
            *destinationData = *sourceData;
        }
    }
}

void blitImageToScreen(int sx, int sy, int width, int height, Image* source, int dx, int dy)
{
    if (!initialized) return;
    Color* vram = getVramDrawBuffer();
    sceKernelDcacheWritebackInvalidateAll();
    guStart();
    sceGuCopyImage(GU_PSM_8888, sx, sy, width, height, source-&gt;textureWidth, source-&gt;data, dx, dy, PSP_LINE_SIZE, vram);
    sceGuFinish();
    sceGuSync(0,0);
}

void blitAlphaImageToImage(int sx, int sy, int width, int height, Image* source, int dx, int dy, Image* destination)
{
    // TODO Blend!
    Color* destinationData = &amp;destination-&gt;data[destination-&gt;textureWidth * dy + dx];
    int destinationSkipX = destination-&gt;textureWidth - width;
    Color* sourceData = &amp;source-&gt;data[source-&gt;textureWidth * sy + sx];
    int sourceSkipX = source-&gt;textureWidth - width;
    int x, y;
    for (y = 0; y &lt; height; y++, destinationData += destinationSkipX, sourceData += sourceSkipX) {
        for (x = 0; x &lt; width; x++, destinationData++, sourceData++) {
            Color color = *sourceData;
            if (!IS_ALPHA(color)) *destinationData = color;
        }
    }
}

void blitAlphaImageToScreen(int sx, int sy, int width, int height, Image* source, int dx, int dy)
{
    if (!initialized) return;

    sceKernelDcacheWritebackInvalidateAll();
    guStart();
    sceGuTexImage(0, source-&gt;textureWidth, source-&gt;textureHeight, source-&gt;textureWidth, (void*) source-&gt;data);
    float u = 1.0f / ((float)source-&gt;textureWidth);
    float v = 1.0f / ((float)source-&gt;textureHeight);
    sceGuTexScale(u, v);
    
    int j = 0;
    while (j &lt; width) {
        Vertex* vertices = (Vertex*) sceGuGetMemory(2 * sizeof(Vertex));
        int sliceWidth = 64;
        if (j + sliceWidth &gt; width) sliceWidth = width - j;
        vertices[0].u = sx + j;
        vertices[0].v = sy;
        vertices[0].x = dx + j;
        vertices[0].y = dy;
        vertices[0].z = 0;
        vertices[1].u = sx + j + sliceWidth;
        vertices[1].v = sy + height;
        vertices[1].x = dx + j + sliceWidth;
        vertices[1].y = dy + height;
        vertices[1].z = 0;
        sceGuDrawArray(GU_SPRITES, GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 2, 0, vertices);
        j += sliceWidth;
    }
    
    sceGuFinish();
    sceGuSync(0, 0);
}

Image* createImage(int width, int height)
{
    Image* image = (Image*) malloc(sizeof(Image));
    if (!image) return NULL;
    image-&gt;imageWidth = width;
    image-&gt;imageHeight = height;
    image-&gt;textureWidth = getNextPower2(width);
    image-&gt;textureHeight = getNextPower2(height);
    image-&gt;data = (Color*) memalign(16, image-&gt;textureWidth * image-&gt;textureHeight * sizeof(Color));
    if (!image-&gt;data) return NULL;
    memset(image-&gt;data, 0, image-&gt;textureWidth * image-&gt;textureHeight * sizeof(Color));
    return image;
}

void freeImage(Image* image)
{
    free(image-&gt;data);
    free(image);
}

void clearImage(Color color, Image* image)
{
    int i;
    int size = image-&gt;textureWidth * image-&gt;textureHeight;
    Color* data = image-&gt;data;
    for (i = 0; i &lt; size; i++, data++) *data = color;
}

void clearScreen(Color color)
{
    if (!initialized) return;
    guStart();
    sceGuClearDepth(0);
    sceGuClear(GU_COLOR_BUFFER_BIT|GU_DEPTH_BUFFER_BIT);
    sceGuFinish();
    sceGuSync(0, 0);
}

void fillImageRect(Color color, int x0, int y0, int width, int height, Image* image)
{
    int skipX = image-&gt;textureWidth - width;
    int x, y;
    Color* data = image-&gt;data + x0 + y0 * image-&gt;textureWidth;
    for (y = 0; y &lt; height; y++, data += skipX) {
        for (x = 0; x &lt; width; x++, data++) *data = color;
    }
}

void fillScreenRect(Color color, int x0, int y0, int width, int height)
{
    if (!initialized) return;
    int skipX = PSP_LINE_SIZE - width;
    int x, y;
    Color* data = getVramDrawBuffer() + x0 + y0 * PSP_LINE_SIZE;
    for (y = 0; y &lt; height; y++, data += skipX) {
        for (x = 0; x &lt; width; x++, data++) *data = color;
    }
}

void putPixelScreen(Color color, int x, int y)
{
    Color* vram = getVramDrawBuffer();
    vram[PSP_LINE_SIZE * y + x] = color;
}

void putPixelImage(Color color, int x, int y, Image* image)
{
    image-&gt;data[x + y * image-&gt;textureWidth] = color;
}

Color getPixelScreen(int x, int y)
{
    Color* vram = getVramDrawBuffer();
    return vram[PSP_LINE_SIZE * y + x];
}

Color getPixelImage(int x, int y, Image* image)
{
    return image-&gt;data[x + y * image-&gt;textureWidth];
}

void printTextScreen(int x, int y, const char* text, u32 color)
{
    int c, i, j, l;
    u8 *font;
    Color *vram_ptr;
    Color *vram;
    
    if (!initialized) return;

    for (c = 0; c &lt; strlen(text); c++) {
        if (x &lt; 0 || x + 8 &gt; SCREEN_WIDTH || y &lt; 0 || y + 8 &gt; SCREEN_HEIGHT) break;
        char ch = text[c];
        vram = getVramDrawBuffer() + x + y * PSP_LINE_SIZE;
        
        font = &amp;msx[ (int)ch * 8];
        for (i = l = 0; i &lt; 8; i++, l += 8, font++) {
            vram_ptr  = vram;
            for (j = 0; j &lt; 8; j++) {
                if ((*font &amp; (128 &gt;&gt; j))) *vram_ptr = color;
                vram_ptr++;
            }
            vram += PSP_LINE_SIZE;
        }
        x += 8;
    }
}

void printTextImage(int x, int y, const char* text, u32 color, Image* image)
{
    int c, i, j, l;
    u8 *font;
    Color *data_ptr;
    Color *data;
    
    if (!initialized) return;

    for (c = 0; c &lt; strlen(text); c++) {
        if (x &lt; 0 || x + 8 &gt; image-&gt;imageWidth || y &lt; 0 || y + 8 &gt; image-&gt;imageHeight) break;
        char ch = text[c];
        data = image-&gt;data + x + y * image-&gt;textureWidth;
        
        font = &amp;msx[ (int)ch * 8];
        for (i = l = 0; i &lt; 8; i++, l += 8, font++) {
            data_ptr  = data;
            for (j = 0; j &lt; 8; j++) {
                if ((*font &amp; (128 &gt;&gt; j))) *data_ptr = color;
                data_ptr++;
            }
            data += image-&gt;textureWidth;
        }
        x += 8;
    }
}

void saveImage(const char* filename, Color* data, int width, int height, int lineSize, int saveAlpha)
{
    png_structp png_ptr;
    png_infop info_ptr;
    FILE* fp;
    int i, x, y;
    u8* line;
    
    if ((fp = fopen(filename, "wb")) == NULL) return;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    if (!png_ptr) return;
    info_ptr = png_create_info_struct(png_ptr);
    if (!info_ptr) {
        png_destroy_write_struct(&amp;png_ptr, (png_infopp)NULL);
        return;
    }
    png_init_io(png_ptr, fp);
    png_set_IHDR(png_ptr, info_ptr, width, height, 8,
        saveAlpha ? PNG_COLOR_TYPE_RGBA : PNG_COLOR_TYPE_RGB,
        PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
    png_write_info(png_ptr, info_ptr);
    line = (u8*) malloc(width * (saveAlpha ? 4 : 3));
    for (y = 0; y &lt; height; y++) {
        for (i = 0, x = 0; x &lt; width; x++) {
            Color color = data[x + y * lineSize];
            u8 r = color &amp; 0xff;
            u8 g = (color &gt;&gt; 8) &amp; 0xff;
            u8 b = (color &gt;&gt; 16) &amp; 0xff;
            u8 a = saveAlpha ? (color &gt;&gt; 24) &amp; 0xff : 0xff;
            line[i++] = r;
            line[i++] = g;
            line[i++] = b;
            if (saveAlpha) line[i++] = a;
        }
        png_write_row(png_ptr, line);
    }
    free(line);
    png_write_end(png_ptr, info_ptr);
    png_destroy_write_struct(&amp;png_ptr, (png_infopp)NULL);
    fclose(fp);
}

void flipScreen()
{
    if (!initialized) return;
    sceGuSwapBuffers();
    dispBufferNumber ^= 1;
}

static void drawLine(int x0, int y0, int x1, int y1, int color, Color* destination, int width)
{
    int dy = y1 - y0;
    int dx = x1 - x0;
    int stepx, stepy;
    
    if (dy &lt; 0) { dy = -dy;  stepy = -width; } else { stepy = width; }
    if (dx &lt; 0) { dx = -dx;  stepx = -1; } else { stepx = 1; }
    dy &lt;&lt;= 1;
    dx &lt;&lt;= 1;
    
    y0 *= width;
    y1 *= width;
    destination[x0+y0] = color;
    if (dx &gt; dy) {
        int fraction = dy - (dx &gt;&gt; 1);
        while (x0 != x1) {
            if (fraction &gt;= 0) {
                y0 += stepy;
                fraction -= dx;
            }
            x0 += stepx;
            fraction += dy;
            destination[x0+y0] = color;
        }
    } else {
        int fraction = dx - (dy &gt;&gt; 1);
        while (y0 != y1) {
            if (fraction &gt;= 0) {
                x0 += stepx;
                fraction -= dy;
            }
            y0 += stepy;
            fraction += dx;
            destination[x0+y0] = color;
        }
    }
}

void drawLineScreen(int x0, int y0, int x1, int y1, Color color)
{
    drawLine(x0, y0, x1, y1, color, getVramDrawBuffer(), PSP_LINE_SIZE);
}

void drawLineImage(int x0, int y0, int x1, int y1, Color color, Image* image)
{
    drawLine(x0, y0, x1, y1, color, image-&gt;data, image-&gt;textureWidth);
}

#define BUF_WIDTH (512)
#define SCR_WIDTH (480)
#define SCR_HEIGHT (272)
#define PIXEL_SIZE (4) /* change this if you change to another screenmode */
#define FRAME_SIZE (BUF_WIDTH * SCR_HEIGHT * PIXEL_SIZE)
#define ZBUF_SIZE (BUF_WIDTH SCR_HEIGHT * 2) /* zbuffer seems to be 16-bit? */

void initGraphics()
{
    dispBufferNumber = 0;

    sceGuInit();

    guStart();
    sceGuDrawBuffer(GU_PSM_8888, (void*)FRAMEBUFFER_SIZE, PSP_LINE_SIZE);
    sceGuDispBuffer(SCREEN_WIDTH, SCREEN_HEIGHT, (void*)0, PSP_LINE_SIZE);
    sceGuClear(GU_COLOR_BUFFER_BIT | GU_DEPTH_BUFFER_BIT);
    sceGuDepthBuffer((void*) (FRAMEBUFFER_SIZE*2), PSP_LINE_SIZE);
    sceGuOffset(2048 - (SCREEN_WIDTH / 2), 2048 - (SCREEN_HEIGHT / 2));
    sceGuViewport(2048, 2048, SCREEN_WIDTH, SCREEN_HEIGHT);
    sceGuDepthRange(0xc350, 0x2710);
    sceGuScissor(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    sceGuEnable(GU_SCISSOR_TEST);
    sceGuAlphaFunc(GU_GREATER, 0, 0xff);
    sceGuEnable(GU_ALPHA_TEST);
    sceGuDepthFunc(GU_GEQUAL);
    sceGuEnable(GU_DEPTH_TEST);
    sceGuFrontFace(GU_CW);
    sceGuShadeModel(GU_SMOOTH);
    sceGuEnable(GU_CULL_FACE);
    sceGuEnable(GU_TEXTURE_2D);
    sceGuEnable(GU_CLIP_PLANES);
    sceGuTexMode(GU_PSM_8888, 0, 0, 0);
    sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGBA);
    sceGuTexFilter(GU_NEAREST, GU_NEAREST);
    sceGuAmbientColor(0xffffffff);
    sceGuEnable(GU_BLEND);
    sceGuBlendFunc(GU_ADD, GU_SRC_ALPHA, GU_ONE_MINUS_SRC_ALPHA, 0, 0);
    sceGuFinish();
    sceGuSync(0, 0);

    sceDisplayWaitVblankStart();
    sceGuDisplay(GU_TRUE);
    initialized = 1;
}

void disableGraphics()
{
    initialized = 0;
}

void guStart()
{
    sceGuStart(GU_DIRECT, list);
}
/* modifikation von printText */
void putCharScreen(int x, int y, char ch, u32 color)
{
    int c, i, j, l;
    u8 *font;
    Color *vram_ptr;
    Color *vram;
    
    if(!initialized) return;
    
    if(x &lt; 0 || x + 8 &gt; SCREEN_WIDTH || y &lt; 0 || y + 8 &gt; SCREEN_HEIGHT)
        break;
    
    vram = getVramDrawBuffer() + x + y * PSP_LINE_SIZE;
    
    font = &amp;msx[(int)ch * 8];
    
    for(i = l = 0; i &lt; 8; i++, l += 8, font++)
    {
        vram_ptr = vram;
        
        for(j = 0; j &lt; 8; j++)
        {
            if((*font &amp; (128 &gt;&gt; j)))
                *vram_ptr = color;
            
            vram_ptr++;
        };
        
        vram += PSP_LINE_SIZE;
    };
};





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
08.11.2010 21:36
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #50
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

Okay. Mach mal unter dem if(x < 0 || x + 8 > SCREEN_WIDTH || y < 0 || y + 8 > SCREEN_HEIGHT) das break weg, und mach ein return draus Wink
Ansonsten seh ich jetzt keinen Fehler... kompilier mal.

Und diese ganzen Ausdrücke wie Methoden sind mir relativ egal, ich sag einfach Funktion^^
Da merkt man dass du mit Java angefangen hast, bei den Objekt-orientierten sprachen wird ja immer so viel Wert auf diese ganzen Wörter gelegt^^

08.11.2010 21:40
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #51
RE: PSP C Anfang - Helft mir auf meinem weg

ich probiers mal. und das mit den namen liegt nicht unbedingt an Java, sondern eher an der Pfeife von info-lehrer, der uns seit der 11 immernoch solche grundsachen wie eben die begriffe und schleifen und so ein mist erklärt, was jeder in dem kurs schon längst kann ^^

EDIT:
du meinst in der mein.c oder? (denn in der grapics.c ist genau diese zeile auch, da macht die änderung aber nicht so viel sinn wie in der main.c, finde ich).

nun der fehler in zeile 54 ist nun weg, aber die anderen spuckt der compiler nach wie vor aus ^^





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)

Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2010 21:47 von Neutrosider.

08.11.2010 21:42
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gutster
Redakteur a.D.
*


Beiträge: 3.876
Gruppe: User
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 3867
Beitrag: #52
RE: PSP C Anfang - Helft mir auf meinem weg

Darf ich fragen was der Code ergibt ?

09.11.2010 13:09
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #53
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

EDIT.....muß mir das nochmal anschauen^^

Benutze bitte das nächste mal einen Spoiler ist ja schlimm so weit zu Scrollen^^

Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2010 14:12 von Ceikor.

09.11.2010 13:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #54
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

Ceikor :
Das sind alles Deklarierungs Fehler, "initialized" kann nicht abgefragt werden da kein wert übergeben wird wenn musst du dieses in dieser Funktion vor "if(!initialized)" aufrufen oder den wert von "initialized" in eine globale variable speichern und diese abfragen. Aber mal so nebenbei wo ist den die Funktion "initialized"??? Die Muss schon existieren ansonsten kannst du keine "true" oder "false" Bedingung abfragen.

msx ist ein verweis auf eine nicht existierenden char, zu mindestens sehe ich da nichts.
ptr kann ich in deinem code irgendwie auch nicht finden aber wie dem auch sein, dass ist ein intreger der auch nicht existiert, somit gibs ein fehler.

Entschuldige aber das sieht mir alles nach Copy/Paste aus, da du anscheint nicht weist was was macht. -.-

Benutze bitte das nächste mal einen Spoiler ist ja schlimm so weit zu Scrollen^^


Wie ich oben (im Kommentar über putCharScreen) geschrieben habe, ist es nur eine Modifikation von printTextScreen, sonst nichts. Es werden die gleichen Variablen verwendet, ich hab nur die schleife entfernt und es so umgeschrieben dass es nur einen Char ausgibt.

09.11.2010 13:54
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #55
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

HacKmaN :
Wie ich oben (im Kommentar über putCharScreen) geschrieben habe, ist es nur eine Modifikation von printTextScreen, sonst nichts. Es werden die gleichen Variablen verwendet, ich hab nur die schleife entfernt und es so umgeschrieben dass es nur einen Char ausgibt.

Mag sein aber der char existiert dennoch nicht da er nicht zugewissen wurde Wink

printTextScreen steht glaub ihc in der pspdebug kann das sein^^? Wie dem auch sein hier in der graphics ist aber kein char msx erstellt worden.

PS: ich meint nicht dich mit Copy/paste^^

Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2010 14:02 von Ceikor.

09.11.2010 14:01
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #56
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

Ceikor :

HacKmaN :
Wie ich oben (im Kommentar über putCharScreen) geschrieben habe, ist es nur eine Modifikation von printTextScreen, sonst nichts. Es werden die gleichen Variablen verwendet, ich hab nur die schleife entfernt und es so umgeschrieben dass es nur einen Char ausgibt.

Mag sein aber der char existiert dennoch nicht da er nicht zugewissen wurde Wink

printTextScreen steht glaub ihc in der pspdebug kann das sein^^? Wie dem auch sein hier in der graphics ist aber kein char msx erstellt worden.

PS: ich meint nicht dich mit Copy/paste^^


PrintTextScreen steht ebenfalls in der graphics.c, deshalb hab ich ihm ja gesagt dass er die Funktion in diese Datei packen soll^^

09.11.2010 14:04
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #57
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

HacKmaN :
PrintTextScreen steht ebenfalls in der graphics.c, deshalb hab ich ihm ja gesagt dass er die Funktion in diese Datei packen soll^^


Ahhhhh jetzt hats klick gemacht^^ und msx existiert.....hm.....

Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2010 14:07 von Ceikor.

09.11.2010 14:06
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #58
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

Ceikor :

HacKmaN :
PrintTextScreen steht ebenfalls in der graphics.c, deshalb hab ich ihm ja gesagt dass er die Funktion in diese Datei packen soll^^


Ahhhhh jetzt hats klick gemacht^^ und msx existiert.....hm.....


Na endlich^^

09.11.2010 14:11
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #59
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

HacKmaN :
Na endlich^^

Nicht so frech, mit dem alter wird man langsam^^
Aber komplizierter geht es nicht oder^^ ich schreib mal schnell was, wenn ich das jetzt rihctig verstanden habe möchte er einen datei auslesen und den Text der da drin steht anzeigen lassen und alle 'n' (am ende?) mit einem absatz ersetzten oder?

09.11.2010 14:17
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #60
xPSP  RE: PSP C Anfang - Helft mir auf meinem weg

Ceikor :

HacKmaN :
Na endlich^^

Nicht so frech, mit dem alter wird man langsam^^
Aber komplizierter geht es nicht oder^^ ich schreib mal schnell was, wenn ich das jetzt rihctig verstanden habe möchte er einen datei auslesen und den Text der da drin steht anzeigen lassen und alle 'n' (am ende?) mit einem absatz ersetzten oder?


Er versucht einen Text formatiert auszugeben, allerdings geht dass mit printTextScreen nicht, da dieses nicht auf Zeichen wie \n achtet.

09.11.2010 14:32
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP C und C++ lernen (Anfang) PSP-Kenner 19 7.134 18.04.2011 20:37
Letzter Beitrag: onecra
xPSP C++ Anfang MyKey 9 2.432 16.09.2010 10:03
Letzter Beitrag: MyKey
xPSP Lua Hello am anfang gleich erstes problem? homer 3 1.562 11.11.2009 14:28
Letzter Beitrag: philix

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang