Jump to content

user57

Member
  • Posts

    85
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    Germany

Everything posted by user57

  1. you making the same mistake that command sets flags, and react if the compare was correct or not there 2 problems i can certainly tell in the first step cmpxchg can have 2 results (if equal it makes the mov if not it makes the mov to a register) (and it should not do that because it has to compare 64 bits) if you have 32 bits with the compare it reacts already to the 32 bits (the other 64 bit are ignored) then the following happens : the flags are lost and the reaction - for equal 32 bit already reacted or not then you do the code again but here sits the same problems now the flags get changed a second time (and it should not) the compare depending if equal reacts to the next 32 bit (while igoring the first 32 bit) if that compare was equal it sets the values and if not it sets no values (but you need the 64 bit) the flag registes (ZF) is that readed as if the first 32 bits are not there with other words the results are gambled up the solution looks not that hard to me you need 2 compares to see if the wanted to compare 64 bits are equal before you set the 64 bits reactions if those 2 compare where equal you set the values, in the other case you need an extra reaction to set the other case the reaction stores them into EDX and EAX (the flag should still be activ, unless you start to use a command that affect flags) cmp edx and eax (destination operand) if equal store ECX EBX to destination operand (The destination operand is an 8-byte memory location) // CMPXCHG8B - 32 bit emulator cmp dword ptr [ebp],eax // eax suppose to be the low part jne skip_and_load_edx_eax cmp dword ptr [ebp+4], edx // edx suppose to be the high part jne skip_and_load_edx_eax // 64 bits where equal, change with ECX and EBX mov dword ptr [ebp], ebx // suppose to have the low part mov dword ptr [ebp+4], ecx // suppose to have the high part jmp end_of_CMPXCHG8B // they where not equal do as the command is described and load those to EDX and EAX skip_and_load_edx_eax: mov eax, dword ptr [ebp] // suppose to be the low part mov edx, dword ptr [ebp+4] // suppose to be the high part end_of_CMPXCHG8B: // CMPXCHG8B - 32 bit emulator end this code should replace the code after : loc_40B0BE: // emulator code here loc_40B0CD: <--- at this place mark " end_of_CMPXCHG8B:" // notice i could not test that command yet if the order is right (like upper and higher parts) it might said something about the upper and lower part but as i remember right you never can be exactly certain about this (in memory if you have 11223344 - the 44 are the bits that control the high values (very old architecture stores that differently too - but that we dont have even in a 486) if that dont work i certainly can fix this , i need a test to make certain the command reaction the command description however says EDX and ECX contain the high part https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg16b if different: // CMPXCHG8B - 32 bit emulator cmp dword ptr [ebp],edx // if different edx suppose to be the low part jne skip_and_load_edx_eax cmp dword ptr [ebp+4], eax // if different eax suppose to be the high part jne skip_and_load_edx_eax // 64 bits where equal, change with ECX and EBX mov dword ptr [ebp], ecx // if different ecx has the low part mov dword ptr [ebp+4], ebx // if different ebx has the high part jmp end_of_CMPXCHG8B // they where not equal do as the command is described and load those to EDX and EAX skip_and_load_edx_eax: mov edx, dword ptr [ebp] // suppose to be the low part mov eax, dword ptr [ebp+4] // suppose to be the high part // your 55667788 example say so end_of_CMPXCHG8B: // CMPXCHG8B - 32 bit emulator end
  2. well you certainly can translate this command to a 32 bit variant code you already have used the "cmpxchg" assembly command but it actually should do the wrong job sometimes because that compares up only 32 bits (and then already react to the 32 bits) (if that compare was the same or not already changed the result because it can already react to either the first 32 bits or the next 32 bits) (.data:004762D5 jnz short near ptr loc_4762BE+1 - that done again erased the first 32 compare results and only react to the next 32 bits compare) but you need the result for 64 bits compare! it seems to me that you can also solve this problem by : making 2 compares "cmp" commands for the flags/reaction now it is about not to make the same mistake (if you do just the 32 bit compare again it reads the next 32 bits and ignored the first 32 bits from the first compare) you need a reaction to the first compare (if that was the case) and making the "cmp" command again and react a second time if both compares was correct you make the reaction just as described (else the other described reaction) : https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg16b that command description actually dont say something about exchanging the values it just says that if the 64 bit compare was equal it says "if the compare was equal the values in it stores the data in ECX and EBX in other case in EDX EAX (what dont look a exchange for me) - maybe the description lacks (what i useally do then i try it out and take looks) // if it would be an exchange it would be: (later reading the code i dont see a common exchange a common exchange would be if eax would be changed to edx - eax having eax and edx having eax): 4 assembly "mov" commands (2 for the destination and 2 for the source) or: 2 times the "xchg" command // but ! looking the assembly code from you it seems different to me i dont see a exchange (just let me say im not entire certain here, but it might helps to talk about that): the cmpxchg8b command seems to compare registers EDX and EAX for equal and then changing an offset to a memory location (stack register two "EBP") (qword ptr [ebp+0]) (qword useally describes a 64 bit movement (word * 4 (16 bits * 4)) if that result was equal it should store EAX and EDX to that offset (otherwise it probaly loads that values to EDX EAX) the next command is "jnz" that command still has the results from this compare, if they was equal it jumps back to "Efls10" (what seems a loop to me) if not it continues the end and and this function seeing your code again "lock cmpxchg [ebp+4], eax" dont have a reaction but it might need (as said before it need a reaction to both of the 32 bits) if that was not the case it need to end this (not always just continue) done that way the first 32 bit can have a false result - and if the next 32 bit are right - then it just still do the job - while it should not --------------------- if the 64 bit guys apear, that is not neccesary needed if you have to use more then 32 bits there are severial methods you can solve this (to name a few) 1: one is using 2 registers and just create its behavoir for that there is a such 32 bit assembly command that is used for that ( CDQ - Convert Word to Doubleword/Convert Doubleword to Quadword ) 2: an offset to somewhere in memory that is bigger then 32 bits and control it as 64 bits 3 (even more is possible with a offset location): if you have more then 64 bit flags you just need an offset to a location , where you actually control the flags/ or data 4: for file movements there is for the REP command the CPU actually can see that it has to move a certain amount of data, and the cpu can translate the filemovement to something it actually can progress the FSB (quad pumped) to the RAM is doing a such thing unlike the 64 bit guys might would think you dont need a 64 bit offset for this a other example would be the CACHE, HDD´s use a CACHE to fill up the data that data can then be progressed differently - like with 2 bit(wires), 4 bit, 16, 32, 64 or even more (it rather comes down what the physical cable/wire can do)
  3. my "DOS" got a little old, but i remember that "going to DOS mode" from windows often resultet in a non "well-working" DOS i also remember you had to press the menu button ( i think it was F8 before windows starts) , and select the DOS boot (instead of windows) then you had a nativ DOS , where most DOS apps actually then function in the windows to dos not all DOS apps worked so this one fix this problem ?
  4. right youtube unlike in the past much look like a commercial tv channel the idea however was different it was a plattform for users that tube (you) - tube it was a challenger against exactly this there where no ad´s, there where no odd filters i remember the makers had a such discussion about this in the past and denied to "connection" to the common others but slowly it more and more got into that direction the same happens to google search at the moment, it find nothing anymore in the past youtube also had challengers like veoh and other video plattforms it looks hard to me to find a replacement for youtube at the moment - but if youtube continue that way it might be the only option to go to a other plattform one challenger the commercial tv wont get rid of the is the smartphone, it basicly has replaced the common tv i gone away from google search already, here we have alternativ plattforms
  5. if its based of the "gdi chromium project" i might have a guess , im not certain but if i remember right that problem with the sometimes a bit missplaced fonts apeared by release there was a small routine from google for gdi to sort the font, that he actually no longer used i a older release (that was not public) it still had that code it is only a a guess - im not certain at all - it takes me 7 days to compile chrome 1 time
  6. that would make sence too, but then again , exactly this existing already in the past and then we have the same answer "every exception handler can do this - not only the except_handler4_common"
  7. how you actually write your vista driver ? when you have the code open source we might actually can make a new driver you didnt say the other part so clear, did you make a vista radeon driver of a new version ? like 2024+ ?
  8. well the one-core-api has this function, it could be added to that msvcrt.dll there some ways to do so but it useally dont end with just one function but since chrome is open source why not just adding an exception handler at the place where chrome wants to have one it might can be ignored either, if that problem apears the app useally crash anyway - even with an exception handler
  9. that thread function just set attributes if i see it directly without going into detail i would suspect it´s predecessor is CreateThread and createthread has higher tier function after that called ZwCreateThread or NtCreateThread // attributes : InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, SecurityDescriptor); // the thread function : Status = ZwCreateThread(&Handle, THREAD_ALL_ACCESS, &ObjectAttributes, ProcessHandle, &ThreadCid, &Context, &InitialTeb, CreateSuspended); that _except_handler4_common is a exception handler an exception handler apears when a bad memory access has happend (what not must even happen) any exception handler (and xp has this so do win98 or win2000) can be used for that we dont need that certain version ... for processes it´s Createprocess here the same thing happens we actually dont need the vista structure what maybe has 1 difference (startupinfo to startupinfoex) those 1 extra field is for misc stuff, not for its purpose (just to start a new app/process) - that can be done without that too chrome probaly use it to create new open "tabs" , nor it need that function InitializeProcThreadAttributeList to function that is probaly just a check if that function was set , then returning a error - that certainly can be reprogrammed again this extra info is not needed to start a such tab
  10. well according to microsoft more then 4 GB ram is possible in 32 bit: https://devblogs.microsoft.com/oldnewthing/20090706-00/?p=17623 the microsoft guy even says how however it seems the other links are deleted from microsoft for whatever reason - is there something to hide ? he says CreateFileMapping can create 4 GB fragments (he isnt saying segments what is kinda correct) he also mention the 2GB to 3 GB extension, but 3 GB is a bit small when you actually want to more then 4 GB CS:EIP is a combination CS has 16 bits and the EIP (called the code segment(cs) and instruction pointer (IP)) for data there would be a way to use an extra DS (data segment) , that would give 2 (segments or with the ms guy´s words to fragments of 4 gb address room) the EIP pharse the instrutions , 4 GB for instructions is actually a lot DATA is unspecific but you guys can tell what that is , a RGB buffer, a FILE, a GAMES 3d object, a VIDEO - those are not instructions those are just memory or "DATA" DS is actually in use but even then why not ES (extra segment) or maybe making a better use of the GS (global segment) i tryed to ask if the 128 GB patch actually really works, i think it do - but actually i dont seen a proof the other already mention 2 approaches where the PAE and PSE not to forget the PDBR/CR3 (that is what points to a different app) and then the PTE/PDE ect. can point to different ram - so over that also more then 4 GB of ram would be possible the PDBR/CR3 solution is app limited, but having unlimited amounts of 4 GB app´s is not that bad
  11. well x64 needs more ram then 32 bit but there more things involved that play a role - i dont know all either maybe it is time for a little discussion ... the instruction code is a such example, when you ask for a offset that is greater or in a higher area of 4 GB that questions is hit for example a other thing is coding a int 32 is 32 bit big (and so stored like this in memory) a int 64 need 64 bit memory thats a important reason that the offsets need to store instead of 32 bit 64 bits this "offset size, int size, register size" question follow you in many times i made a screenshot of a x64 app (regeedit.exe) , os is win7 x64 the app is shown as x64 in pe editor as in taskmanager BUT! it use x32 bit instruction sets ! as shown in IDA so in reality thats rather an 32 bit app when i compiled some apps up i saw a increase in file size not 100 % but like 50 % and if i rememberright (in some older x64 apps i meant to see they tryed to avoid this problem in only using 34 bits, that probaly dont work all the time)
  12. you actually may not need a fast grafic card for an old game either, some just give a old card they no longer need - because often they get thrown into the trash bag even the prices are often like very low maybe 5 dollars, thats affordable
  13. well unlike nvidia the radeon card´s have a different driver on the radeon´s website actually dont find any information what the latest drivers for certain OS´s are and what grafic cards they actually support that is better solved with nvidia, there at least for the moment you find that information i think the right status about that radeon driver is not having a well solution at the moment but again you might buy a nvidia card if you need windows xp as operating system radeon lost a possible customer that would pay them money ... the other only quick way would be to find the lastest available radeon driver, and buy a older radeon card (but thats not a good solution in my opinion) here is a such discussion https://www.majorgeeks.com/files/details/amd_radeon_video_card_drivers_for_windows_xp.html if you just missing a driver for XP for that card the kernelex patches actually dont solve all the problems (the one core api also has some) therefore your question would actually change, you dont have a OS problem anymore you have a missing driver problem, due a unsupported grafic card some games actually dont work on certain operating systems, i think Resident Evil 1 needed windows 95, and the dos c&c 1 version needed a nativ DOS bootet, and did not work on windows xp either in that case the one core api dont fix the missing functions either - coming from an ask that a newer grafic driver just installs on xp the current kernelex dont have enough functions for a newer driver ---- that with the driver signs i had actually that problem too (win7 actually also has different versions with 2 different driver sigs) my usb drive was blocked and i wondered why it did that with with an upgraded win7, while the non upgraded win7 did work no problem the solution is simple while boot up you bring up the boot screen via holding F8 when the first menu apears you hit F8 again , and there you can disable that driver signature after that my usb driver installed without any problems ... ( i still use a digital camera, useally not smartphones) you should have been told that the most games actually dont run not having a grafic card driver, makes sence after all
  14. well it is actually hard to say if your problem is a driver problem for xp we have this one that support new grafic cards: https://msfn.org/board/topic/181454-official-driver-supporting-gtx-970-and-up-found/ your card seems to be a desktop card, there should be drivers ---- in lap-tops some companys use a trick to hide the grafic card they use for example they use a different name for their card like instead of "gtx 970" they use "gtx 970 hps" this make the common driver that would work not install but you actually can add that driver into the .inf file (then the driver finds thecard) in the driver installation you also can choose a driver that you want to install for this card you can force to install that driver, that also works but thats for lap-tops using that "trick" ----- what games are these actually ? xp has a well balance between backwards and forwards compatibility that win7 + (use xp modus) is useally not working often a placebo that trys to make people think win7 can do what xp can do (for marketing like "oh win7 can do xp, buy win7, buy win10") (what in reality it can 99 % it can not) to fix your problem we should take a look on the game or game(s) itself beginning with the question what game you first wanna use then we should know if that games or games work in a nativ xp machine or not (xp dont have 100 % backwards compatibility either - xp might have a lot here but not the absolution) the "one core api" is not for old games, it actually is for new applications and games that have functions that xp useally dont have the one core api therefore is for new games, therefore it dont make sence to use one core api on a old game if you have a dos game it might dont work, dos games often need a nativ 98 machine bootet into dos commander and conquer 1 (dos version) would be a such example, there are windows versions too but ---------------------------------- to the 8 GB problem i can say this there are page table entrys (that leads to the physical ram) , those can addresse more then 8 GB however for example the EIP 32 bit for example can only address 4 GB then however that EIP - can with a different application (games are applications) address different memory - therefore having multiple applications/games/executables/processes (is always the same thing) can theoretical address more RAM but here is the next problem the OS not always seems to use that (xp dont i heared, with the 128 gb ram patch it suppose to do it) a other thing i have to point out are segments, and maybe the PDE/PTE´s a segment is a selector for a specific amount of ram since we have 32 bit (what are 4 gb ram) every segment actually could point to 4 GB ram but applications dont use segments (what you can see with a disassembler every common app dont use segments) these segments are in 32 bit protected mode 16 bit wide therefore 16 bits = 65535 and that times 4 GB = 65535 * 4 GB ram https://en.wikipedia.org/wiki/X86_memory_segmentation a other problem can be the hardware lets say the CPU only got 32 wires , then the software could use more then 4 GB ram but the cpu actually can not use more then 4 GB ram but here kick in the segment question again the CPU actually can translate that segment to the next segment (the first segment is 4 GB ram) - again with 65535 possibilites (4 gb * 16 bit (65535)) so the 32 bit protected mode actually has not 32 bit, the 32 bit protected mode theoretical got 48 bit (32 bit + 16 bit) but as i said, neither the operating system the software (such as segment selectors) (applications/games/executables/processes) or maybe even the hardware (such as cpu wires, or even the "manufactor logic" on the chip itself) dont/cant do that what the hardware can do is translate a segment/page table entry/page directory entry just into a next access somewhere into more of the 4 gb ram as said the os, software, and hardware have to do so ... (in 8 bit and 16 bit times segments where very common instead of 65kb ram (16 bit) you could then use 1mb (20 bit))
  15. i had some time to look at it his function is bugged up basicly he write it himself "// hacky but works: small number is command id, large is submenu (a pointer)"" that indicates he tryed to trick it and had to do "hacky solutions" he use a endless while true loop with ends escapes and continues, also goto´s,calls to the same functions in a function, and then seperators for his menu to fix how he called it "bad seperators" this ended up in a os specific solution you useally dont do that because the operating system can might change the relevant codes over time (such as 7 to 10, or 98 to nt) - something like this already happend in the past but the solution to this problem is possible as the author use multiple fixes all over around (probaly to compensate the problems) it is easy to add that fix - anyways it actually was a bit weird to find it out in win10 its just a flag, that was found like very quickly - but no in xp it didnt do that and gave very weird results even turned off xp was working ok while on 10 it did what it suppose to do - it was turned off as the code suppose to was changed to let me know if it works now! the .avif file (and heic) format dont work for me, neither on xp nor on 10 nor on 7 (both unchanged from the official download page and the changed version) https://www.file-upload.net/download-15277606/SumatraPDF_WINXP_3.5.2_3.zip.html https://www.mediafire.com/file/a4mtyf33ozs6q63/SumatraPDF_WINXP_3.5.2_3.zip/file
  16. https://www.file-upload.net/download-15277606/SumatraPDF_WINXP_3.5.2_3.zip.html https://www.mediafire.com/file/a4mtyf33ozs6q63/SumatraPDF_WINXP_3.5.2_3.zip/file
  17. i wrote a private message with a changed version it might fix the annotation bug for the choose the other bug i try to look later
  18. well you might make the test then heic vs jpeg xl you have to look a high resolution base file then create the 2 formats from that high resolution base file in this case jpeg xl and heic and compare if fine details are vanishing or are no longer shown the compression with more remaining pixels wins (a similiar file size should be choosen)
  19. a good idea is to look what the driver useally is called often a lap-top/desktop comes with a driver disc, that might also give that information a other idea would be to look a pre installation with a working operating system (like if its a nativ vista computer you gonna look the device manager) google might also help what type is related to that computer/motherboard in the past there where no onboard lan drivers, they where actually cards (those can still be buyed if the motherboard dont support the operating system) the same goes for the sound card, those still exits to buy too for hdd´s/ssd´s harddrives whatsoever they most likely where onboard, but actually you could also buy a card if you wanted some more harddrives then the motherboard actually supports but why im trying to say is that you need the right names for the drivers
  20. well here is a experimental version of sumatra pdf for windows xp i had to change lots of things this time, so it might have errors but we should test it out version 3.5.2 is lastest version up to current date 21.02.2024 https://www.file-upload.net/download-15277606/SumatraPDF_WINXP_3.5.2_3.zip.html https://www.mediafire.com/file/a4mtyf33ozs6q63/SumatraPDF_WINXP_3.5.2_3.zip/file edit to fix some problems
  21. good ideas are to tell the hardware what you actually did (HP Pavilion dv7-1127c (the last number is important because there many dv7 types, these are very different) a other good thing is where exactly the problem apeared like while the installation, or after windows bootet up, did it find the HDD, did the boot cd/dvd/blu ray start up a next good idea is a picture with a smartphone or camera the net give us different informations can that be possible ? (AMD Turion 64 X2 Mobile), that cpu is kinda old (2005) the grafic card (AMD Radeon HD 3200) is like 2008 specs say these types HP Pavilion dv7-1127c was released in like 2009 you may enter your lap-top number here to get the right information: https://support.hp.com/rs-en/product/details/hp-pavilion-dv7-1100-entertainment-notebook-pc-series/model/3802944 a problem can be the chipset of the motherboard but 2005-2009 sounds rather XP like, the specs for this lap-top actually say that this lap-top is a nativ windows vista lap-top cant find anything related to the chipset for now
  22. well hard to say this player is not very self-contained this also is seeable when you compile it up(like dibya did), it need this exact version of phyton , the next exact version yasm, the right vs versionthe right SDK version, the the LAV version (only to name a few) that more or less says it break if any of these versions (i always call them engines) changed from like 0.0.0.0.1 to 0.0.0.0.2 if one of these decided - no i do not longer want xp - its like a directly "bugged up" that raise questions .... if that player is a good choose or not and hardware dependencys ? if we always need a new grafic card for a codec - i dont think thats what we want - what we want is a working codec (or more precise a decoder for certain formats) not always a new hardware (aka a new grafic card that can do this) can somebody tell me why new programmers like to choose this kind of path ? instead of going for a "decoder to RGB" (display) solution this problem you see kinda often today - you actually didnt in the past sure actually this player is getting probaly getting fixed up, but always like that ?
  23. Skype 8.75.0.140 + it has worked having an existing login that it remembered but not if you install a new installation installs but you neither can register an email nor the login works the login screen looks bugged up and the buttons do not react (existing user valid login tryed)
  24. it would be possible to instead of the gpu doing that decompression maybe "gpu acceleration" to create a own decoder the decoder is very less cpu intense but it would for me only for the h.265 codec, then the others still would be missing (what actually is a big disadvantage) not to say that the code then has to done the way so its fits into that mpc-hc player the reason why a lot of these use SSE2 is that SSE2 has a huge range of CPU´s that can use that, its like a common available hardware acceleration some can understand this when using that "windows xp heic" en/decoder the decoder is like instand the encoder can take severial minutes only using x86 commands the encoder using mmx-avx512 can speed to this like 20-100 times faster a other big problem even if you have windows 8 the decompression might not be available still because the grafic card dont support that then it would be a GTX700+ to have the "gpu hardware acceleration", probaly why some have choosen SSE2 instead - relativ compatible - many cpu´s that can do that - significant speed boost so going for a "all codec solution" end up in making a own video player (and all the codecs) ... thats some work to do FFMPEG can be used also as video player - that raise exactly this question FranceBB actually know about this since he is doing things in that direction, but he hasnt said anything here yet
×
×
  • Create New...