Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: [HELP] Racing Tutorial Churns out Gibberish : SFML  (Read 2177 times)

0 Members and 1 Guest are viewing this topic.

Cook

  • Newbie
  • *
  • Posts: 12
    • View Profile
    • Email
[HELP] Racing Tutorial Churns out Gibberish : SFML
« on: March 09, 2021, 12:08:45 am »
Hi,
Could someone help me with this issue with the tutorial?

The Debug Mode x86 releases this peculiar image (attached image).

It involves memcpy.asm and currently assembly is too low-level for me to understand.

#include <SFML/Graphics.hpp>
using namespace sf;

const int num = 8; //checkpoints
int points[num][2] = { 300, 610,
                      1270,430,
                      1380,2380,
                      1900,2460,
                      1970,1700,
                      2550,1680,
                      2560,3150,
                      500, 3300 };

struct Car
{
    float x, y, speed, angle; int n;

    Car() { speed = 2; angle = 0; n = 0; }

    void move()
    {
        x += sin(angle) * speed;
        y -= cos(angle) * speed;
    }

    void findTarget()
    {
        float tx = points[n][0];
        float ty = points[n][1];
        float beta = angle - atan2(tx - x, -ty + y);
        if (sin(beta) < 0) angle += 0.005 * speed; else angle -= 0.005 * speed;
        if ((x - tx) * (x - tx) + (y - ty) * (y - ty) < 25 * 25) n = (n + 1) % num;
    }
};


int main()
{
    RenderWindow app(VideoMode(640, 480), "Car Racing Game!");
    app.setFramerateLimit(60);

    Texture t1, t2, t3;
    t1.loadFromFile("images/background.png");
    t2.loadFromFile("images/car.png");
    t1.setSmooth(true);
    t2.setSmooth(true);

    Sprite sBackground(t1), sCar(t2);
    sBackground.scale(2, 2);

    sCar.setOrigin(22, 22);
    float R = 22;

    const int N = 5;
    Car car[N];
    for (int i = 0; i < N; i++)
    {
        car[i].x = 300 + i * 50;
        car[i].y = 1700 + i * 80;
        car[i].speed = 7 + i;
    }

    float speed = 0, angle = 0;
    float maxSpeed = 12.0;
    float acc = 0.2, dec = 0.3;
    float turnSpeed = 0.08;

    int offsetX = 0, offsetY = 0;

    while (app.isOpen())
    {
        Event e;
        while (app.pollEvent(e))
        {
            if (e.type == Event::Closed)
                app.close();
        }

        bool Up = 0, Right = 0, Down = 0, Left = 0;
        if (Keyboard::isKeyPressed(Keyboard::Up)) Up = 1;
        if (Keyboard::isKeyPressed(Keyboard::Right)) Right = 1;
        if (Keyboard::isKeyPressed(Keyboard::Down)) Down = 1;
        if (Keyboard::isKeyPressed(Keyboard::Left)) Left = 1;

        //car movement
        if (Up && speed < maxSpeed)
            if (speed < 0)  speed += dec;
            else  speed += acc;

        if (Down && speed > -maxSpeed)
            if (speed > 0) speed -= dec;
            else  speed -= acc;

        if (!Up && !Down)
            if (speed - dec > 0) speed -= dec;
            else if (speed + dec < 0) speed += dec;
            else speed = 0;

        if (Right && speed != 0)  angle += turnSpeed * speed / maxSpeed;
        if (Left && speed != 0)   angle -= turnSpeed * speed / maxSpeed;

        car[0].speed = speed;
        car[0].angle = angle;

        for (int i = 0; i < N; i++) car[i].move();
        for (int i = 1; i < N; i++) car[i].findTarget();

        //collision
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
            {
                int dx = 0, dy = 0;
                while (dx * dx + dy * dy < 4 * R * R)
                {
                    car[i].x += dx / 10.0;
                    car[i].x += dy / 10.0;
                    car[j].x -= dx / 10.0;
                    car[j].y -= dy / 10.0;
                    dx = car[i].x - car[j].x;
                    dy = car[i].y - car[j].y;
                    if (!dx && !dy) break;
                }
            }


        app.clear(Color::White);

        if (car[0].x > 320) offsetX = car[0].x - 320;
        if (car[0].y > 240) offsetY = car[0].y - 240;

        sBackground.setPosition(-offsetX, -offsetY);
        app.draw(sBackground);

        Color colors[10] = { Color::Red, Color::Green, Color::Magenta, Color::Blue, Color::White };

        for (int i = 0; i < N; i++)
        {
            sCar.setPosition(car[i].x - offsetX, car[i].y - offsetY);
            sCar.setRotation(car[i].angle * 180 / 3.141593);
            sCar.setColor(colors[i]);
            app.draw(sCar);
        }

        app.display();
    }

    return 0;
}


Exception thrown at 0x6E1C3670 (vcruntime140.dll) in sfmlRacing.exe: 0xC0000005: Access violation reading location 0x033FF000.

align 16
XmmCopySmallLoop:
        movdqu      xmm0, xmmword ptr [esi] <<<<--------HERE
        movdqu      xmm1, xmmword ptr [esi + 10h]
        movdqu      xmmword ptr [edi], xmm0
        movdqu      xmmword ptr [edi + 10h], xmm1
        lea         esi, [esi + 20h]
        lea         edi, [edi + 20h]
        dec         edx
        jne         XmmCopySmallLoop

References


'sfmlRacing.exe' (Win32): Loaded 'C:\Users\user\source\repos\sfmlRacing\Debug\sfmlRacing.exe'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Users\user\source\repos\sfmlRacing\sfmlRacing\sfml-system-2.dll'. Module was built without symbols.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbase.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Users\user\source\repos\sfmlRacing\sfmlRacing\sfml-window-2.dll'. Module was built without symbols.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\win32u.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32full.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp_win.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Users\user\source\repos\sfmlRacing\sfmlRacing\sfml-graphics-2.dll'. Module was built without symbols.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp140d.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140d.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbased.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winmm.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp140.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\opengl32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\combase.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\glu32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Symbols loaded.
The thread 0x3434 has exited with code 0 (0x0).
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\uxtheme.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel.appcore.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\clbcatq.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\AppXDeploymentClient.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\AppXDeploymentClient.dll'
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\System32\DriverStore\FileRepository\nvdmi.inf_amd64_774120bbcad3ef2b\nvoglv32.dll'.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shell32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\setupapi.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcrypt.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wtsapi32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\version.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\devobj.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wintrust.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\crypt32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msasn1.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntmarta.dll'. Symbols loaded.
The thread 0x2278 has exited with code 0 (0x0).
The thread 0x256c has exited with code 0 (0x0).
The thread 0x109c has exited with code 0 (0x0).
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dwmapi.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\DXCore.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\windows.storage.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wldp.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\SHCore.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shlwapi.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\nvspcap.dll'.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\profapi.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\powrprof.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\umpdc.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winsta.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dinput8.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\InputHost.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\WinTypes.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\propsys.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\CoreMessaging.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\CoreUIComponents.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ws2_32.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\hid.dll'. Symbols loaded.
'sfmlRacing.exe' (Win32): Loaded 'C:\Windows\SysWOW64\TextInputFramework.dll'. Symbols loaded.
Exception thrown at 0x6E1C3670 (vcruntime140.dll) in sfmlRacing.exe: 0xC0000005: Access violation reading location 0x033FF000.

The program '[9568] sfmlRacing.exe' has exited with code 0 (0x0).


eXpl0it3r

  • SFML Team
  • Hero Member
  • *****
  • Posts: 11030
    • View Profile
    • development blog
    • Email
Re: [HELP] Racing Tutorial Churns out Gibberish : SFML
« Reply #1 on: March 09, 2021, 07:35:16 am »
You're probably mixing debug and release mode
Official FAQ: https://www.sfml-dev.org/faq.php
Official Discord Server: https://discord.gg/nr4X7Fh
——————————————————————
Dev Blog: https://duerrenberger.dev/blog/

Cook

  • Newbie
  • *
  • Posts: 12
    • View Profile
    • Email
Re: [HELP] Racing Tutorial Churns out Gibberish : SFML
« Reply #2 on: March 10, 2021, 05:17:31 am »
You're probably mixing debug and release mode

Haizz... I'm so silly...

Thank you so much...

You were correct...

I forgot the -d, I thought it worked since the window poped up.

Thanks eXpl0it3r