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).